Skip to content

Commit

Permalink
chore: remove course/course topic association (#2649)
Browse files Browse the repository at this point in the history
* chore: remove course/coursetopic association
  • Loading branch information
arslanashraf7 authored May 30, 2023
1 parent 49a7371 commit d706c5c
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 21 deletions.
5 changes: 0 additions & 5 deletions cms/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1177,11 +1177,6 @@ def product(self):
"""Gets the product associated with this page"""
return self.course

def save(self, clean=True, user=None, log_action=False, **kwargs):
"""Override save to set the topics to Django course models backwards"""
self.course.topics.set(self.topics.all())
super().save(clean=clean, user=user, log_action=log_action, **kwargs)


class CoursePage(CourseProductPage):
"""
Expand Down
5 changes: 2 additions & 3 deletions courses/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,9 @@ class CourseAdmin(admin.ModelAdmin):
"""Admin for Course"""

model = Course
search_fields = ["title", "topics__name", "readable_id"]
search_fields = ["title", "readable_id"]
list_display = ("id", "title", "get_program", "position_in_program")
list_filter = ["live", "program", "topics"]
readonly_fields = ("topics",)
list_filter = ["live", "program"]
formfield_overrides = {
models.CharField: {"widget": TextInput(attrs={"size": "80"})}
}
Expand Down
17 changes: 17 additions & 0 deletions courses/migrations/0033_remove_course_coursetopic_association.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 3.2.18 on 2023-05-17 11:48

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("courses", "0032_remove_external_marketing_url_field"),
]

operations = [
migrations.RemoveField(
model_name="course",
name="topics",
),
]
1 change: 0 additions & 1 deletion courses/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,6 @@ class Course(TimestampedModel, PageProperties, ValidateOnSaveMixin):
max_length=255, unique=True, validators=[validate_url_path_field]
)
live = models.BooleanField(default=False)
topics = models.ManyToManyField(CourseTopic, blank=True)
is_external = models.BooleanField(default=False)

@property
Expand Down
12 changes: 9 additions & 3 deletions courses/views/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ class ProgramViewSet(viewsets.ReadOnlyModelViewSet):
)
courses_prefetch = Prefetch(
"courses",
Course.objects.select_related("coursepage").prefetch_related(
course_runs_prefetch, "topics"
Course.objects.select_related(
"coursepage", "externalcoursepage"
).prefetch_related(
course_runs_prefetch, "coursepage__topics", "externalcoursepage__topics"
),
)

Expand Down Expand Up @@ -70,7 +72,11 @@ def get_queryset(self):
queryset = (
Course.objects.filter(live=True)
.select_related("coursepage", "externalcoursepage")
.prefetch_related("topics", self.course_runs_prefetch)
.prefetch_related(
"coursepage__topics",
"externalcoursepage__topics",
self.course_runs_prefetch,
)
.filter(Q(coursepage__live=True) | Q(externalcoursepage__live=True))
)

Expand Down
8 changes: 0 additions & 8 deletions localdev/seed/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,10 +350,6 @@ def _deserialize_courseware_object(self, serializer_cls, data):
**filter_for_model_fields(model_cls, data),
**{seeded_field_name: seeded_value},
}

topics = []
if model_cls == Course and "topics" in adjusted_data:
topics = adjusted_data.pop("topics")
existing_qset = model_cls.objects.filter(**{seeded_field_name: seeded_value})
if existing_qset.exists():
existing_qset.update(**adjusted_data)
Expand All @@ -369,10 +365,6 @@ def _deserialize_courseware_object(self, serializer_cls, data):
return None
courseware_obj = serialized.save()
self.seed_result.add_created(courseware_obj)

topic_objs = self._get_topic_objects(topics)
if courseware_obj is not None and len(topic_objs) > 0:
courseware_obj.topics.set(topic_objs)
return courseware_obj

def _get_topic_objects(self, topics):
Expand Down
3 changes: 2 additions & 1 deletion localdev/seed/api_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ def test_topics(seeded):
for course_data in seeded.raw_data["courses"]:
course = Course.objects.get(readable_id=course_data["readable_id"])
topics = [
{"name": topic.name} for topic in CourseTopic.objects.filter(course=course)
{"name": topic.name}
for topic in CourseTopic.objects.filter(coursepage=course.page)
]

def name_key(topic):
Expand Down

0 comments on commit d706c5c

Please sign in to comment.