Commit 52ba6c424d2137dc29436b45a0b5823e96a07e4a

Authored by Matheus Lins
1 parent 52f695e0

replicate couse #189

courses/models.py
... ... @@ -65,9 +65,11 @@ class Course(models.Model):
65 65  
66 66 def show_subscribe(self):
67 67 today = datetime.date.today()
68   -
69 68 return today >= self.init_register_date and today <= self.end_register_date
70 69  
  70 + def duration(self):
  71 + return self.end_date - self.init_date
  72 +
71 73 class Subject(models.Model):
72 74  
73 75 name = models.CharField(_('Name'), max_length = 100)
... ...
courses/static/js/course.js
... ... @@ -63,4 +63,18 @@ function delete_course(url, course, message, return_url) {
63 63 }
64 64 });
65 65 });
  66 +}
  67 +/*
  68 +*
  69 +* Function to load create course's form
  70 +*
  71 +*/
  72 +function replicate_course(url, course) {
  73 + $.ajax({
  74 + url: url,
  75 + data: {'form': course},
  76 + success: function(data) {
  77 + $(".course_replicate_form").html(data);
  78 + }
  79 + });
66 80 }
67 81 \ No newline at end of file
... ...
courses/templates/course/course_card.html
... ... @@ -18,7 +18,7 @@
18 18 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
19 19 </button>
20 20 <ul class="dropdown-menu" aria-labelledby="moreActions">
21   - <li><a href="javascript:replicate_course('{% url 'course:create'%}','{{course.slug}}')"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>{% trans 'Replicate' %}</a></li>
  21 + <li><a href="{% url 'course:replicate_course' course.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>{% trans 'Replicate' %}</a></li>
22 22 <li><a href="javascript:delete_course('{% url 'course:delete' course.slug %}', '{{ course.slug }}', '{% trans "Are you sure you want to delete this course?" %}', '{% url 'course:manage' %}')"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>{% trans 'Remove' %}</a></li>
23 23 </ul>
24 24 </div>
... ... @@ -47,7 +47,7 @@
47 47 <div class="modal-dialog" role="document">
48 48 <div class="modal-content">
49 49 <div class="modal-header">
50   - <h4 class="modal-title" id="myModalLabel">{% trans 'Forum' %}</h4>
  50 + <h4 class="modal-title" id="myModalLabel">{% trans 'Repicate Course' %}</h4>
51 51 </div>
52 52 <div class="modal-body">
53 53 <section>
... ...
courses/urls.py
... ... @@ -4,6 +4,7 @@ from . import views
4 4 urlpatterns = [
5 5 url(r'^$', views.IndexView.as_view(), name='manage'),
6 6 url(r'^create/$', views.CreateCourseView.as_view(), name='create'),
  7 + url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'),
7 8 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'),
8 9 url(r'^(?P<slug>[\w_-]+)/$', views.CourseView.as_view(), name='view'),
9 10 url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'),
... ...
courses/views.py
... ... @@ -105,6 +105,38 @@ class CreateCourseView(LoginRequiredMixin, HasRoleMixin, NotificationMixin,gener
105 105 context['now'] = date.today()
106 106 return context
107 107  
  108 +class ReplicateCourseView(LoginRequiredMixin, HasRoleMixin, NotificationMixin,generic.edit.CreateView):
  109 +
  110 + allowed_roles = ['professor', 'system_admin']
  111 + login_url = reverse_lazy("core:home")
  112 + redirect_field_name = 'next'
  113 + template_name = 'course/replicate.html'
  114 + form_class = CourseForm
  115 + success_url = reverse_lazy('course:manage')
  116 +
  117 + def form_valid(self, form):
  118 + self.object = form.save()
  119 + self.object.professors.add(self.request.user)
  120 + return super(ReplicateCourseView, self).form_valid(form)
  121 +
  122 + def get_context_data(self, **kwargs):
  123 + context = super(ReplicateCourseView, self).get_context_data(**kwargs)
  124 + course = get_object_or_404(Course, slug = self.kwargs.get('slug'))
  125 + if has_role(self.request.user,'system_admin'):
  126 + courses = Course.objects.all()
  127 + elif has_role(self.request.user,'professor'):
  128 + courses = self.request.user.courses.all()
  129 + categorys_courses = CourseCategory.objects.all()
  130 + context['courses'] = courses
  131 + context['course'] = course
  132 + context['categorys_courses'] = categorys_courses
  133 + context['title'] = _("Replicate Course")
  134 + context['now'] = date.today()
  135 + return context
  136 +
  137 + def get_success_url(self):
  138 + return reverse_lazy('course:view', kwargs={'slug' : self.object.slug})
  139 +
108 140 class UpdateCourseView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
109 141  
110 142 allowed_roles = ['professor', 'system_admin']
... ... @@ -136,8 +168,6 @@ class UpdateCourseView(LoginRequiredMixin, HasRoleMixin, generic.UpdateView):
136 168 def get_success_url(self):
137 169 return reverse_lazy('course:view', kwargs={'slug' : self.object.slug})
138 170  
139   -
140   -
141 171 class DeleteCourseView(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
142 172  
143 173 allowed_roles = ['professor', 'system_admin']
... ...