- e-learning_platform :
- the main app of the Application
- courses :
- this app responsible for creating the courses and handling CRUD operations on them
- it also has a simple api for enable working with the site through api consumers
- students:
- this app handle the student enrollment into courses and displaying the content of the courses to students
- chat:
- handle a live chat for every course
- you will need to have
Redis
server running - run
pip install requirements.txt
- then you can start the server with
python manage.py runserver
Tech list
- Django
- django-braces
- django-embed-video
- django-memcached-status
- Django REST framework
- Jquery
- jQuery UI
- MemCache
- python binding:
python-memcached
- python binding:
- channels
- Redis
- channels-redis
urls and their views and templates
(simple map for myself, you do not need to open it)
(seriously do not open it)
-
-
- view :
courses/views.py#CourseListView
- template :
courses/course/list.html
- all the courses and a list of all the subjects to only show courses belonging to this Subject
- every subject has the number of courses it has
- evert course card show :
- subject the course belong to
- number of modules in the course
- name of the Instructor
- view :
-
-
/login
:- login page
/logout
:- logout page
-
django.contrib.auth
LoginView
LogoutView
-
- the templates for the two pages are overridden using :
templates/registration/
login.html
logged_out.html
- the templates for the two pages are overridden using :
-
- need to be a superuser to access the admin panel
- only a superuser can add new subjects or make a user a teacher by giving them the right permission
- a teacher can add new courses and add modules and content to the courses he owns
-
django.contrib.admin.site.urls
-
include('courses.urls')
:- all urls under the courses' app start with
course/
- all urls under the courses' app start with
-
-
list of the courses the user (teacher) created
- can edit the course,
- edit its modules,
- manging the content of a module,
- deleting a course,
- creating a new course,
-
view :
ManageCourseListView
-
template :
courses/manage/course/list.html
-
-
- ####### create a new course
- view :
CourseCreateView
- template :
courses/manage/course/form.html
-
- edit the info of an existing course
- view :
CourseUpdateView
- template :
courses/manage/course/form.html
-
- delete an existing course
- view :
CourseDeleteView
- template :
courses/manage/course/delete.html
-
- adding, editing and deleting modules of a course
- view :
CourseModuleUpdateView
- template :
courses/manage/module/formset.html
-
- adding, editing and deleting content of a module in the course
- view :
ModuleContentListView
- template :
courses/manage/content/content_list.html
-
- adding a new content (text, image, video, file) to the module
- view :
ContentCreateUpdateView
- template :
courses/manage/content/form.html
-
- editing a content item (text, image, video, file) from the module content
- view :
ContentCreateUpdateView
- template :
courses/manage/content/form.html
-
- deleting a content item from the module
- view :
ContentDeleteView
- template : no template (just delete and redirect again to the content_list page)
-
- you can reorder the contents, or the modules - just click and hold then drag to change the order
-
student.urls
-
- create a new user account
- view : StudentRegistrationView
- template :
students/student/registration.html
-
- list of all the courses the user is enrolled in
- view :
StudentCourseListView
- template :
students/student/list.htm
-
- course detail page + course chat room
- view :
StudentCourseDetailView
- template :
students/student/detail.html
-
- showing the contents of a course module
- view :
StudentCourseDetailView
- template :
students/student/detail.html
- the chat rooms of courses
-
- view :
course_chat_room
- template :
chat/room.html
- view :
-
-
subjects/
- GET : return a list of all the subjects
-
subjects/<subject_id>
- GET : return the details of a subject
-
courses
- GET : list of all the course
-
courses/<course_id>
- GEt : the details of a course
-
courses/<course_id>/enroll/
- POST : enroll in a course
-
-
-
- all the courses and a list of all the subjects to only show courses belonging to this Subject
- every subject has the number of courses it has
- evert course card show :
- subject the course belong to
- number of modules in the course
- name of the Instructor
- all the courses and a list of all the subjects to only show courses belonging to this Subject
-
-
/login
:- login page
/logout
:- logout page
-
- need to be a superuser to access the admin panel
- only a superuser can add new subjects or make a user a teacher by giving them the right permission
a teacher can add new courses and add modules and content to the courses he owns
-
-
- list of the courses the user (teacher) created
- can edit the course,
- edit its modules,
- manging the content of a module,
- deleting a course,
- creating a new course,
- list of the courses the user (teacher) created
-
- create a new course
-
- edit the info of an existing course
-
- delete an existing course
-
- adding, editing and deleting modules of a course
-
- adding, editing and deleting content of a module in the course
-
- adding a new content (text, image, video, file) to the module
-
- editing a content item (text, image, video, file) from the module content
-
- deleting a content item from the module
-
-
you can reorder the contents, or the modules - just click and hold then drag to change the order
- the chat rooms of courses
-
subjects/
- GET : return a list of all the subjects
subjects/<subject_id>
- GET : return the details of a subject
courses
- GET : list of all the course
courses/<course_id>
- GEt : the details of a course
courses/<course_id>/enroll/
- POST : enroll in a course