From 54c3e1be7a6039e9092b23825209815468719910 Mon Sep 17 00:00:00 2001 From: filipecmedeiros Date: Wed, 16 Nov 2016 17:05:01 -0300 Subject: [PATCH] [Issue #361] --- courses/templates/subject/replicate.html | 56 +++++++++++++++++++++++--------------------------------- courses/urls.py | 4 ++-- courses/views.py | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------- 3 files changed, 79 insertions(+), 70 deletions(-) diff --git a/courses/templates/subject/replicate.html b/courses/templates/subject/replicate.html index be9dfe1..e0f36f7 100644 --- a/courses/templates/subject/replicate.html +++ b/courses/templates/subject/replicate.html @@ -2,61 +2,51 @@ {% load static i18n permission_tags widget_tweaks %} -{% block breadcrumbs %} - -{% endblock %} - {% block content %} -
+ +
{% csrf_token %}
- - - {% trans 'Subject name' %} + + + {% trans 'Subject name'%}
-
- - - {% trans 'Subject Description' %} +
+ + + {% trans 'Subject description'%}
-
- - - {% trans 'Subject init date' %} +
+ + + {% trans 'Init date'%}
-
- - - {% trans 'Subject end date' %} - -
-
- - - {% trans 'Is it visible?' %} +
+ + + {% trans 'End date'%}
+
+ + + {% trans 'Is it visible?'%}
-
- +
-
@@ -70,4 +60,4 @@ $('#id_description').summernote({height: 300}); }); -{% endblock %} \ No newline at end of file +{% endblock content %} diff --git a/courses/urls.py b/courses/urls.py index 2b9bd3e..dc95afe 100644 --- a/courses/urls.py +++ b/courses/urls.py @@ -6,7 +6,6 @@ urlpatterns = [ url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'), url(r'^create/$', views.CreateCourseView.as_view(), name='create'), url(r'^replicate_course/(?P[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), - url(r'^replicate_subject/(?P[\w_-]+)/$', views.ReplicateSubjectView.as_view(), name='replicate_subject'), url(r'^edit/(?P[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), url(r'^delete/(?P[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'), url(r'^subscribe/(?P[\w_-]+)/$', views.subscribe_course, name='subscribe'), @@ -19,10 +18,11 @@ urlpatterns = [ url(r'^subjects/create/(?P[\w_-]+)/$', views.CreateSubjectView.as_view(), name='create_subject'), url(r'^subjects/update/(?P[\w_-]+)/$', views.UpdateSubjectView.as_view(), name='update_subject'), url(r'^subjects/delete/(?P[\w_-]+)/$', views.DeleteSubjectView.as_view(), name='delete_subject'), + url(r'^subjects/replicate/(?P[\w_-]+)/$', views.ReplicateSubjectView.as_view(), name='replicate_subject'), url(r'^subjects/subscribe/(?P[\w_-]+)/$', views.subscribe_subject, name='subscribe_subject'), url(r'^topics/create/(?P[\w_-]+)/$', views.CreateTopicView.as_view(), name='create_topic'), url(r'^topics/update/(?P[\w_-]+)/$', views.UpdateTopicView.as_view(), name='update_topic'), - url(r'^topics/update/(?P[\w_-]+)/$', views.DeleteTopic.as_view(), name='delete_topic'), + url(r'^topics/delete/(?P[\w_-]+)/$', views.DeleteTopic.as_view(), name='delete_topic'), url(r'^topics/replicate/(?P[\w_-]+)/$', views.ReplicateTopicView.as_view(), name='replicate_topic'), url(r'^topics/(?P[\w_-]+)/$', views.TopicsView.as_view(), name='view_topic'), url(r'^subjects/categories$',views.IndexSubjectCategoryView.as_view(), name='subject_category_index'), diff --git a/courses/views.py b/courses/views.py index c507e9c..4c16420 100644 --- a/courses/views.py +++ b/courses/views.py @@ -561,39 +561,6 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView): context['files'] = TopicFile.objects.filter(students__name = self.request.user.name) return context -class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin,generic.edit.CreateView): - - allowed_roles = ['professor', 'system_admin'] - login_url = reverse_lazy("core:home") - redirect_field_name = 'next' - template_name = 'subject/replicate.html' - form_class = SubjectForm - success_url = reverse_lazy('course:view') - - def get_context_data(self, **kwargs): - context = super(ReplicateSubjectView, self).get_context_data(**kwargs) - subject = get_object_or_404(Subject, slug=self.kwargs.get('slug')) - - if has_role(self.request.user,'system_admin'): - subjects = Subject.objects.all() - context['subjects'] = subjects - elif has_role(self.request.user,'professor'): - subject = self.request.user.professors_subjects.all() - categorys_subjects = CategorySubject.objects.all() - - context['subject'] = subject - context['categorys_subjects'] = categorys_subjects - context['title'] = _("Replicate Subject") - context['now'] = date.today() - return context - - def form_valid(self, form): - self.object = form.save() - - return super(ReplicateSubjectView, self).form_valid(form) - - def get_success_url(self): - return reverse_lazy('course:view', kwargs={'slug' : self.object.slug}) class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView): login_url = reverse_lazy("core:home") @@ -1017,7 +984,7 @@ class TopicViewSet(viewsets.ModelViewSet): class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin,generic.edit.CreateView): log_component = "course" log_resource = "topic" - log_action = "create" + log_action = "replicate" log_context = {} allowed_roles = ['professor', 'system_admin'] @@ -1067,4 +1034,56 @@ class ReplicateTopicView (LoginRequiredMixin, HasRoleMixin, LogMixin, Notificati super(ReplicateTopicView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) - return super(ReplicateTopicView, self).form_valid(form) \ No newline at end of file + return super(ReplicateTopicView, self).form_valid(form) + +class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin, generic.edit.CreateView): + log_component = "course" + log_resource = "subject" + log_action = "replicate" + log_context = {} + + allowed_roles = ['professor', 'system_admin'] + login_url = reverse_lazy("core:home") + redirect_field_name = 'next' + template_name = 'subject/replicate.html' + form_class = SubjectForm + + def get_success_url(self): + return reverse_lazy('course:view_subject', kwargs={'slug' : self.object.slug}) + + def get_context_data(self, **kwargs): + context = super(ReplicateSubjectView, self).get_context_data(**kwargs) + subject = get_object_or_404(Subject, slug = self.kwargs.get('slug')) + course = Course.objects.get(pk=subject.course_id) + context['course'] = course + context['subjects'] = course.subjects.filter(Q(visible=True) | Q(professors__in=[self.request.user])) + context['subject'] = subject + if (has_role(self.request.user,'system_admin')): + context['subjects'] = course.subjects.all() + return context + + def form_valid(self, form): + subject = get_object_or_404(Subject, slug = self.kwargs.get('slug')) + course = Course.objects.get(pk=subject.course_id) + + self.object = form.save(commit = False) + self.object.course = course + self.object.save() + self.object.professors.add(self.request.user) + if self.object.visible: + super(ReplicateSubjectView, self).createNotification( " created subject " + self.object.name, resource_name=self.object.name, + resource_slug = self.object.slug, actor=self.request.user, users= self.object.course.students.all(), + resource_link = reverse('course:view_subject', args=[self.object.slug])) + + self.log_context['subject_id'] = self.object.id + self.log_context['subject_name'] = self.object.name + self.log_context['subject_slug'] = self.object.slug + self.log_context['course_id'] = course.id + self.log_context['course_name'] = course.name + self.log_context['course_slug'] = course.slug + self.log_context['course_category_id'] = course.category.id + self.log_context['course_category_name'] = course.category.name + + super(ReplicateSubjectView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) + + return super(ReplicateSubjectView, self).form_valid(form) -- libgit2 0.21.2