diff --git a/fet2020/intern/urls.py b/fet2020/intern/urls.py index b9d3fcf6..649fa21a 100644 --- a/fet2020/intern/urls.py +++ b/fet2020/intern/urls.py @@ -1,4 +1,4 @@ -from django.urls import path +from django.urls import include, path from . import apps from . import views @@ -17,43 +17,54 @@ from .views import ( app_name = apps.InternConfig.name -urlpatterns = [ - path("", views.index, name="index"), +attachment_urlpatterns = [ path( - "/topic-create/", - TopicCreateView.as_view(), - name="topic-create", - ), - path("/", TopicDetailView.as_view(), name="topic"), - path( - "/update/", - TopicUpdateView.as_view(), - name="topic-update", - ), - path( - "/attachment-create/", - AttachmentCreateView.as_view(), - name="attachment-create", - ), - path("/create/", TaskCreateView.as_view(), name="task-create"), - path( - "//", + "", AttachmentDetailView.as_view(), name="attachment", ), path( - "//update/", + "update/", AttachmentUpdateView.as_view(), name="attachment-update", ), path( - "//etherpad-create/", + "etherpad-create/", EtherpadCreateView.as_view(), name="etherpad-create", ), path( - "//file-create/", + "file-create/", FileUploadCreateView.as_view(), name="file-create", ), ] + +topic_urlpatterns = [ + path("", TopicDetailView.as_view(), name="topic"), + path( + "update/", + TopicUpdateView.as_view(), + name="topic-update", + ), + path( + "attachment-create/", + AttachmentCreateView.as_view(), + name="attachment-create", + ), + path("create/", TaskCreateView.as_view(), name="task-create"), +] + +urlpatterns = [ + path("", views.index, name="index"), + path( + "/topic-create/", + TopicCreateView.as_view(), + name="topic-create", + ), + path("//", include(topic_urlpatterns)), + path( + "///", + include(attachment_urlpatterns), + ), +] diff --git a/fet2020/intern/views.py b/fet2020/intern/views.py index ffb5f1b6..8df3b023 100644 --- a/fet2020/intern/views.py +++ b/fet2020/intern/views.py @@ -47,12 +47,10 @@ def index(request): class TopicCreateView(LoginRequiredMixin, CreateView): + form_class = TopicCreateForm model = Topic success_url = reverse_lazy("intern:index") template_name = "intern/topic/topic_create.html" - form_class = TopicCreateForm - - slug = None def form_valid(self, form): form.instance.created_by = self.request.user @@ -61,75 +59,61 @@ class TopicCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["topic_group"] = TopicGroup.objects.get(slug=self.slug) + topic_group_slug = self.kwargs.get("topic_group_slug") + context["topic_group"] = TopicGroup.objects.get(slug=topic_group_slug) return context - def get_initial(self): - self.slug = self.kwargs.get("topic_group") - class TopicDetailView(LoginRequiredMixin, DetailView): model = Topic template_name = "intern/topic/topic_detail.html" - slug = None - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - self.slug = self.object.slug - - active_topic = Topic.objects.get(id=self.object.id) - attachments = Attachment.objects.filter(topic__slug=self.slug).order_by("title") + attachments = Attachment.objects.filter(topic=self.object).order_by("title") tasks = None - if active_topic.task_list: + if self.object.task_list: tasks = deque( Task.taskmanager.get_tasks( user=None, assigned_tasks=True, - task_list=active_topic.task_list, + task_list=self.object.task_list, completed=False, ) ) - context = { - "active_topic": active_topic, - "attachments": attachments, - "tasks": tasks, - } + context["topic"] = self.object + context["attachments"] = attachments + context["tasks"] = tasks return context + def get_queryset(self): + topic_group_slug = self.kwargs.get("topic_group_slug") + return Topic.objects.filter(Q(topic_group__slug=topic_group_slug)) + class TopicUpdateView(LoginRequiredMixin, UpdateView): model = Topic template_name = "intern/topic/topic_update.html" form_class = TopicUpdateForm - slug = None - def form_valid(self, form): form.instance.created_by = self.request.user add_log_action(self.request, form, "intern", "topic", False) - - # get new slug - obj = form.save(commit=False) - self.slug = obj.slug return super().form_valid(form) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["slug"] = self.slug - context["topic"] = Topic.objects.get(slug=self.slug) + context["topic"] = self.object return context - def get_initial(self): - self.slug = self.kwargs.get("slug") - def get_success_url(self): context = { - "slug": self.slug, + "topic_group_slug": self.object.topic_group.slug, + "slug": self.object.slug, } return reverse("intern:topic", kwargs=context) @@ -139,8 +123,6 @@ class AttachmentCreateView(LoginRequiredMixin, CreateView): template_name = "intern/attachment/attachment_create.html" form_class = AttachmentCreateForm - slug = None - def form_valid(self, form): form.instance.created_by = self.request.user add_log_action(self.request, form, "intern", "attachment", True) @@ -148,28 +130,21 @@ class AttachmentCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["slug"] = self.slug - context["topic"] = Topic.objects.get(slug=self.slug) - + topic_group_slug = self.kwargs.get("topic_group_slug") + topic_slug = self.kwargs.get("slug") + context["topic"] = Topic.objects.get( + Q(topic_group__slug=topic_group_slug) & Q(slug=topic_slug) + ) return context - def get_initial(self): - self.slug = self.kwargs.get("slug") - def get_success_url(self): - context = { - "slug": self.slug, - } - return reverse("intern:topic", kwargs=context) + return reverse("intern:topic", kwargs=self.kwargs) class AttachmentDetailView(LoginRequiredMixin, DetailView): model = Attachment template_name = "intern/attachment/attachment_detail.html" - topic_slug = None - slug = None - def get(self, request, *args, **kwargs): response = super().get(request, *args, **kwargs) @@ -183,67 +158,56 @@ class AttachmentDetailView(LoginRequiredMixin, DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - self.topic_slug = self.object.topic.slug - self.slug = self.object.slug - - context["active_topic"] = Topic.objects.get(slug=self.topic_slug) - - attachment = Attachment.objects.get(id=self.object.id) - context["attachment"] = attachment - - etherpads = Etherpad.objects.filter(attachment=attachment).order_by("-date") + context["attachment"] = self.object + etherpads = Etherpad.objects.filter(attachment=self.object).order_by("-date") context["etherpads"] = etherpads - context["files"] = FileUpload.objects.filter(attachment=attachment) + context["files"] = FileUpload.objects.filter(attachment=self.object) return context + def get_queryset(self): + topic_group_slug = self.kwargs.get("topic_group_slug") + topic_slug = self.kwargs.get("topic_slug") + return Attachment.objects.filter( + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) + ) + class AttachmentUpdateView(LoginRequiredMixin, UpdateView): + form_class = AttachmentUpdateForm model = Attachment template_name = "intern/attachment/attachment_update.html" - form_class = AttachmentUpdateForm - - topic_slug = None - slug = None def form_valid(self, form): form.instance.created_by = self.request.user add_log_action(self.request, form, "intern", "attachment", False) - - # get new slug - obj = form.save(commit=False) - self.slug = obj.slug return super().form_valid(form) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["topic"] = Topic.objects.get(slug=self.topic_slug) - - attachment = Attachment.objects.get( - Q(slug=self.slug) & Q(topic__slug=self.topic_slug) - ) - context["attachment"] = attachment + context["attachment"] = self.object return context - def get_initial(self): - self.topic_slug = self.kwargs.get("topic_slug") - self.slug = self.kwargs.get("slug") + def get_queryset(self): + topic_group_slug = self.kwargs.get("topic_group_slug") + topic_slug = self.kwargs.get("topic_slug") + return Attachment.objects.filter( + Q(topic__topic_group__slug=topic_group_slug) & Q(topic__slug=topic_slug) + ) def get_success_url(self): context = { - "topic_slug": self.topic_slug, - "slug": self.slug, + "topic_group_slug": self.object.topic.topic_group.slug, + "topic_slug": self.object.topic.slug, + "slug": self.object.slug, } return reverse("intern:attachment", kwargs=context) class EtherpadCreateView(LoginRequiredMixin, CreateView): + form_class = EtherpadForm model = Etherpad template_name = "intern/etherpad_create.html" - form_class = EtherpadForm - - topic_slug = None - slug = None def form_valid(self, form): form.instance.created_by = self.request.user @@ -252,35 +216,25 @@ class EtherpadCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["topic_slug"] = self.topic_slug - context["slug"] = self.slug - + topic_group_slug = self.kwargs.get("topic_group_slug") + topic_slug = self.kwargs.get("topic_slug") + slug = self.kwargs.get("slug") attachment = Attachment.objects.get( - Q(slug=self.slug) & Q(topic__slug=self.topic_slug) + Q(topic__topic_group__slug=topic_group_slug) + & Q(topic__slug=topic_slug) + & Q(slug=slug) ) context["attachment"] = attachment - return context - def get_initial(self): - self.topic_slug = self.kwargs.get("topic_slug") - self.slug = self.kwargs.get("slug") - def get_success_url(self): - context = { - "topic_slug": self.topic_slug, - "slug": self.slug, - } - return reverse("intern:attachment", kwargs=context) + return reverse("intern:attachment", kwargs=self.kwargs) class FileUploadCreateView(LoginRequiredMixin, CreateView): + form_class = FileUploadForm model = FileUpload template_name = "intern/file_create.html" - form_class = FileUploadForm - - topic_slug = None - slug = None def form_valid(self, form): form.instance.created_by = self.request.user @@ -289,34 +243,25 @@ class FileUploadCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["topic_slug"] = self.topic_slug - context["slug"] = self.slug - + topic_group_slug = self.kwargs.get("topic_group_slug") + topic_slug = self.kwargs.get("topic_slug") + slug = self.kwargs.get("slug") attachment = Attachment.objects.get( - Q(slug=self.slug) & Q(topic__slug=self.topic_slug) + Q(topic__topic_group__slug=topic_group_slug) + & Q(topic__slug=topic_slug) + & Q(slug=slug) ) context["attachment"] = attachment - return context - def get_initial(self): - self.topic_slug = self.kwargs.get("topic_slug") - self.slug = self.kwargs.get("slug") - def get_success_url(self): - context = { - "topic_slug": self.topic_slug, - "slug": self.slug, - } - return reverse("intern:attachment", kwargs=context) + return reverse("intern:attachment", kwargs=self.kwargs) class TaskCreateView(LoginRequiredMixin, CreateView): + form_class = InternTaskCreateForm model = Task template_name = "intern/task_create.html" - form_class = InternTaskCreateForm - - slug = None def form_valid(self, form): form.instance.created_by = self.request.user @@ -325,19 +270,10 @@ class TaskCreateView(LoginRequiredMixin, CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["slug"] = self.slug - - topic = Topic.objects.get(slug=self.slug) + slug = self.kwargs.get("slug") + topic = Topic.objects.get(slug=slug) context["topic"] = topic - context["task_list"] = topic.task_list - return context - def get_initial(self): - self.slug = self.kwargs.get("slug") - def get_success_url(self): - context = { - "slug": self.slug, - } - return reverse("intern:topic", kwargs=context) + return reverse("intern:topic", kwargs=self.kwargs) diff --git a/fet2020/templates/intern/attachment/attachment_detail.html b/fet2020/templates/intern/attachment/attachment_detail.html index 6cba1da0..8c0bb391 100644 --- a/fet2020/templates/intern/attachment/attachment_detail.html +++ b/fet2020/templates/intern/attachment/attachment_detail.html @@ -8,9 +8,9 @@

Intern

{% endblock %} diff --git a/fet2020/templates/intern/attachment/attachment_update.html b/fet2020/templates/intern/attachment/attachment_update.html index 7c94656f..83d290c8 100644 --- a/fet2020/templates/intern/attachment/attachment_update.html +++ b/fet2020/templates/intern/attachment/attachment_update.html @@ -39,7 +39,7 @@ {{ form.description }} - + diff --git a/fet2020/templates/intern/index.html b/fet2020/templates/intern/index.html index 8e6c2d66..abfe3f28 100644 --- a/fet2020/templates/intern/index.html +++ b/fet2020/templates/intern/index.html @@ -29,7 +29,7 @@