Functional overview
Figure 13.1 shows a representation of the views, templates, and functionalities that will be built in this chapter:

Figure 13.1: Diagram of functionalities built in Chapter 13
In this chapter, you will implement different class-based views. You will create the mixin classes OwnerMixin, OwnerEditMixin, and OwnerCourseMixin, which will contain common functionality that you will reuse in other classes. You will create CRUD (Create, Read, Update, Delete) views for the Course model by implementing ManageCourseListView to list courses, CourseCreateView to create courses, CourseUpdateView to update courses, and CourseDeleteView to delete courses. You will build the CourseModuleUpdateView view to add/edit/delete course modules and ModuleContentListView to list the module’s contents. You will also implement ContentCreateUpdateView to create and update course contents and ContentDeleteView to delete contents. You will finally implement a drag-and-drop...