Commit 7db9c89ca173142d08aeb4a78eeb6e82c6dd6090

Authored by Matheus Lins
1 parent aedc5757

replicate subject

courses/templates/course/view.html
@@ -151,7 +151,7 @@ @@ -151,7 +151,7 @@
151 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> 151 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
152 </button> 152 </button>
153 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> 153 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
154 - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans 'Replicate' %}</a></li> 154 + <li><a href="{% url 'course:replicate_subject' subject.slug %}" data-toggle="modal" data-target="#myModal3"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans 'Replicate' %}</a></li>
155 <li><a href="javascript:delete_subject.get('{% url 'course:delete_subject' subject.slug %}','#subject','#modal_subject')" data-toggle="modal" data-target="#removeSubject"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans 'Remove' %}</a></li> 155 <li><a href="javascript:delete_subject.get('{% url 'course:delete_subject' subject.slug %}','#subject','#modal_subject')" data-toggle="modal" data-target="#removeSubject"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans 'Remove' %}</a></li>
156 </ul> 156 </ul>
157 </div> 157 </div>
courses/templates/subject/form_view_teacher.html
@@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
26 {% professor_subject topic.subject user as dropdown_topic %} 26 {% professor_subject topic.subject user as dropdown_topic %}
27 {% if dropdown_topic %} 27 {% if dropdown_topic %}
28 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> 28 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
29 - <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal4"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li> 29 + <li><a href="" data-toggle="modal" data-target="#myModal4"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
30 <li><a href="javascript:show_editation('{{topic.slug}}')"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li> 30 <li><a href="javascript:show_editation('{{topic.slug}}')"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li>
31 <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeTopic"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li> 31 <li><a href="javascript:void(0)" data-toggle="modal" data-target="#removeTopic"><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li>
32 </ul> 32 </ul>
courses/templates/subject/index.html
@@ -61,7 +61,7 @@ @@ -61,7 +61,7 @@
61 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> 61 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
62 </button> 62 </button>
63 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> 63 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
64 - <li><a href="javascript:void(0)"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li> 64 + <li><a href="{% url 'course:replicate_subject' subject.slug %}"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
65 <li><a href="{% url 'course:update_subject' subject.slug %}" <i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li> 65 <li><a href="{% url 'course:update_subject' subject.slug %}" <i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li>
66 <li><a href="{% url 'course:delete_subject' subject.slug %}" ><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li> 66 <li><a href="{% url 'course:delete_subject' subject.slug %}" ><i class="fa fa-trash fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Remove" %}</a></li>
67 </ul> 67 </ul>
courses/templates/subject/replicate.html 0 → 100644
@@ -0,0 +1,44 @@ @@ -0,0 +1,44 @@
  1 +{% extends 'subject/index.html' %}
  2 +
  3 +{% load static i18n permission_tags widget_tweaks %}
  4 +
  5 +{% block breadcrumbs %}
  6 + <ol class="breadcrumb">
  7 + <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
  8 + <li class="active">{% trans 'Replicate Subject' %}</li>
  9 + </ol>
  10 +{% endblock %}
  11 +
  12 +{% block content %}
  13 +<div class="panel panel-default">
  14 + <div class="panel-body">
  15 + <form class="form-group " method="post" action="">
  16 + {% csrf_token %}
  17 + {% for field in form %}
  18 + <div class="form-group {% if field.errors %} has-error{% endif %}">
  19 + <label for="{{ field.auto_id }}" class="control-label label-static"> {{ field.label }}</label>
  20 +
  21 + {% if field.auto_id == 'id_init_date' or field.auto_id == 'id_end_date'%}
  22 + <input type="text" class="form-control date-picker" name="{{field.name}}" value="{{field.value|date:'SHORT_DATE_FORMAT'}}" min="{{now|date:'SHORT_DATE_FORMAT'}}">
  23 + {% else %}
  24 + {% render_field field class='form-control' placeholder=field.label%}
  25 + {% endif %}
  26 + <span class="help-block">{{ field.help_text }}</span>
  27 + </div>
  28 + {% endfor %}
  29 + <div class="col-lg-offset-4 col-lg-4">
  30 + <button type="submite" class="btn btn-raised btn-primary btn-lg btn-block">{% trans 'Update' %}</button>
  31 + </div>
  32 + </form>
  33 +
  34 + </div>
  35 + </div>
  36 +
  37 + <script type="text/javascript">
  38 + var locale = navigator.language || navigator.userLanguage;
  39 +
  40 + $('.date-picker').datepicker({
  41 + language: locale,
  42 + });
  43 + </script>
  44 +{% endblock %}
0 \ No newline at end of file 45 \ No newline at end of file
courses/urls.py
@@ -6,6 +6,7 @@ urlpatterns = [ @@ -6,6 +6,7 @@ urlpatterns = [
6 url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'), 6 url(r'^all-courses/$', views.AllCoursesView.as_view(), name='all_courses'),
7 url(r'^create/$', views.CreateCourseView.as_view(), name='create'), 7 url(r'^create/$', views.CreateCourseView.as_view(), name='create'),
8 url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'), 8 url(r'^replicate_course/(?P<slug>[\w_-]+)/$', views.ReplicateCourseView.as_view(), name='replicate_course'),
  9 + url(r'^replicate_subject/(?P<slug>[\w_-]+)/$', views.ReplicateSubjectView.as_view(), name='replicate_subject'),
9 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'), 10 url(r'^edit/(?P<slug>[\w_-]+)/$', views.UpdateCourseView.as_view(), name='update'),
10 url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'), 11 url(r'^delete/(?P<slug>[\w_-]+)/$', views.DeleteCourseView.as_view(), name='delete'),
11 url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'), 12 url(r'^subscribe/(?P<slug>[\w_-]+)/$', views.subscribe_course, name='subscribe'),
courses/views.py
1 -from django.shortcuts import render, get_object_or_404, redirect 1 +from django.shortcuts import get_object_or_404
2 from django.views import generic 2 from django.views import generic
3 from django.contrib import messages 3 from django.contrib import messages
4 from django.contrib.auth.decorators import login_required 4 from django.contrib.auth.decorators import login_required
@@ -12,7 +12,7 @@ from django.db.models import Q @@ -12,7 +12,7 @@ from django.db.models import Q
12 import operator 12 import operator
13 from functools import reduce 13 from functools import reduce
14 from rolepermissions.verifications import has_object_permission 14 from rolepermissions.verifications import has_object_permission
15 -from django.http import HttpResponseRedirect, JsonResponse 15 +from django.http import JsonResponse
16 from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm 16 from .forms import CourseForm, UpdateCourseForm, CategoryCourseForm, SubjectForm,TopicForm,ActivityForm
17 from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject 17 from .models import Course, Subject, CourseCategory,Topic, SubjectCategory,Activity, CategorySubject
18 from core.decorators import log_decorator 18 from core.decorators import log_decorator
@@ -265,7 +265,7 @@ class UpdateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Updat @@ -265,7 +265,7 @@ class UpdateCourseView(LoginRequiredMixin, HasRoleMixin, LogMixin, generic.Updat
265 if has_role(self.request.user,'system_admin'): 265 if has_role(self.request.user,'system_admin'):
266 courses = Course.objects.all() 266 courses = Course.objects.all()
267 elif has_role(self.request.user,'professor'): 267 elif has_role(self.request.user,'professor'):
268 - courses = self.request.user.courses.all() 268 + courses = self.request.user.courses_professors.all()
269 context['courses'] = courses 269 context['courses'] = courses
270 context['title'] = course.name 270 context['title'] = course.name
271 context['now'] = date.today() 271 context['now'] = date.today()
@@ -577,6 +577,35 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView): @@ -577,6 +577,35 @@ class SubjectsView(LoginRequiredMixin, LogMixin, generic.ListView):
577 context['files'] = TopicFile.objects.filter(students__name = self.request.user.name) 577 context['files'] = TopicFile.objects.filter(students__name = self.request.user.name)
578 return context 578 return context
579 579
  580 +class ReplicateSubjectView(LoginRequiredMixin, HasRoleMixin, LogMixin, NotificationMixin,generic.edit.CreateView):
  581 +
  582 + allowed_roles = ['professor', 'system_admin']
  583 + login_url = reverse_lazy("core:home")
  584 + redirect_field_name = 'next'
  585 + template_name = 'subject/replicate.html'
  586 + form_class = SubjectForm
  587 + success_url = reverse_lazy('course:view')
  588 +
  589 + def get_context_data(self, **kwargs):
  590 + context = super(ReplicateSubjectView, self).get_context_data(**kwargs)
  591 + subject = get_object_or_404(Subject, slug=self.kwargs.get('slug'))
  592 +
  593 + if has_role(self.request.user,'system_admin'):
  594 + subjects = Subject.objects.all()
  595 + context['subjects'] = subjects
  596 + elif has_role(self.request.user,'professor'):
  597 + subject = self.request.user.professors_subjects.all()
  598 + categorys_subjects = CategorySubject.objects.all()
  599 +
  600 + context['subject'] = subject
  601 + context['categorys_subjects'] = categorys_subjects
  602 + context['title'] = _("Replicate Subject")
  603 + context['now'] = date.today()
  604 + return context
  605 +
  606 + def get_success_url(self):
  607 + return reverse_lazy('course:view', kwargs={'slug' : self.object.slug})
  608 +
580 class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView): 609 class UploadMaterialView(LoginRequiredMixin, generic.edit.CreateView):
581 login_url = reverse_lazy("core:home") 610 login_url = reverse_lazy("core:home")
582 redirect_field_name = 'next' 611 redirect_field_name = 'next'