From 1be45ecb091194052d1839f8fbeed9a0b51df948 Mon Sep 17 00:00:00 2001 From: Jailson Dias Date: Thu, 6 Oct 2016 22:34:38 -0300 Subject: [PATCH] Criado o template e o procedimento de remover enquete #114 --- poll/templates/poll/create.html | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ poll/templates/poll/create_update.html | 206 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- poll/templates/poll/remove.html | 21 +++++++++++++++++++++ poll/templates/poll/update.html | 13 +++++++++++++ poll/urls.py | 3 +++ poll/views.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 341 insertions(+), 208 deletions(-) create mode 100644 poll/templates/poll/create.html delete mode 100644 poll/templates/poll/create_update.html create mode 100644 poll/templates/poll/remove.html create mode 100644 poll/templates/poll/update.html diff --git a/poll/templates/poll/create.html b/poll/templates/poll/create.html new file mode 100644 index 0000000..30f5a1f --- /dev/null +++ b/poll/templates/poll/create.html @@ -0,0 +1,206 @@ +{% extends "topic/index.html" %} + +{% load i18n widget_tweaks dict_access static%} + +{% block style %} + +{% endblock %} + +{% block content %} + + + +modal +{% endblock content %} diff --git a/poll/templates/poll/create_update.html b/poll/templates/poll/create_update.html deleted file mode 100644 index e2a9e64..0000000 --- a/poll/templates/poll/create_update.html +++ /dev/null @@ -1,206 +0,0 @@ -{% extends "topic/index.html" %} - -{% load i18n widget_tweaks dict_access static%} - -{% block style %} - -{% endblock %} - -{% block content %} - - - -modal -{% endblock content %} diff --git a/poll/templates/poll/remove.html b/poll/templates/poll/remove.html new file mode 100644 index 0000000..5ad80e4 --- /dev/null +++ b/poll/templates/poll/remove.html @@ -0,0 +1,21 @@ +{% extends "poll/create.html" %} + +{% load i18n %} + +{% block title_poll %} + + +{% endblock title_poll %} + +{% block content_poll %} + +
+ {% csrf_token %} +

{% trans 'Are you sure you want to delete the subject' %} "{{poll}}"?

+ + {% trans 'No' %} +
+{% endblock content_poll %} + +{% block button_save %} +{% endblock button_save %} diff --git a/poll/templates/poll/update.html b/poll/templates/poll/update.html new file mode 100644 index 0000000..2d11189 --- /dev/null +++ b/poll/templates/poll/update.html @@ -0,0 +1,13 @@ +{% extends "poll/create.html" %} + +{% load i18n dict_access static%} + +{% block title_poll %} + + +{% endblock title_poll %} + +{% block button_save %} + + +{% endblock button_save %} diff --git a/poll/urls.py b/poll/urls.py index 74d9aae..6364763 100644 --- a/poll/urls.py +++ b/poll/urls.py @@ -5,5 +5,8 @@ from . import views urlpatterns = [ url(r'^create/(?P[\w\-_]+)/$', views.CreatePoll.as_view(), name='create_poll'), # topic slug url(r'^update/(?P[\w\-_]+)/$', views.UpdatePoll.as_view(), name='update_poll'), # poll slug + url(r'^teste/(?P[\w\-_]+)/$', views.CreatePollModal.as_view(), name='teste'), # poll + url(r'^mymodal/', views.MyModal.as_view(), name='mymodal'), + url(r'^delete/(?P[\w\-_]+)/$', views.DeletePoll.as_view(), name='delete_poll'), # poll ] diff --git a/poll/views.py b/poll/views.py index 1ce553c..ab5b87d 100644 --- a/poll/views.py +++ b/poll/views.py @@ -8,6 +8,7 @@ from django.core.urlresolvers import reverse_lazy from django.utils.translation import ugettext_lazy as _ from rolepermissions.verifications import has_role from rolepermissions.verifications import has_object_permission +from django.db.models import Q # from django.views.generic.edit import FormMixin from .forms import PollForm @@ -23,7 +24,7 @@ class CreatePoll(LoginRequiredMixin,generic.CreateView): model = Poll form_class = PollForm context_object_name = 'poll' - template_name = 'poll/create_update.html' + template_name = 'poll/create.html' success_url = reverse_lazy('core:home') def form_invalid(self, form,**kwargs): @@ -66,7 +67,7 @@ class UpdatePoll(LoginRequiredMixin,generic.UpdateView): model = Poll form_class = PollForm context_object_name = 'poll' - template_name = 'poll/create_update.html' + template_name = 'poll/update.html' success_url = reverse_lazy('core:home') def dispatch(self, *args, **kwargs): @@ -121,3 +122,98 @@ class UpdatePoll(LoginRequiredMixin,generic.UpdateView): context['keys'] = keys return context + +class DeletePoll(LoginRequiredMixin, generic.DeleteView): + + allowed_roles = ['professor', 'system_admin'] + login_url = reverse_lazy("core:home") + redirect_field_name = 'next' + model = Poll + template_name = 'poll/remove.html' + + # def dispatch(self, *args, **kwargs): + # poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) + # if(not has_object_permission('delete_subject', self.request.user, subject)): + # return self.handle_no_permission() + # return super(DeleteSubjectView, self).dispatch(*args, **kwargs) + + + def get_context_data(self, **kwargs): + context = super(DeletePoll, self).get_context_data(**kwargs) + context['course'] = self.object.topic.subject.course + context['subject'] = self.object.topic.subject + context['poll'] = self.object + context['subjects'] = self.object.topic.subject.course.subjects.filter(Q(visible=True) | Q(professors__in=[self.request.user])) + if (has_role(self.request.user,'system_admin')): + context['subjects'] = self.object.topic.subject.course.subjects.all() + return context + + def get_success_url(self): + return reverse_lazy('course:view_topic', kwargs={'slug' : self.object.topic.slug}) + + +from django_modalview.generic.edit import ModalCreateView +from django_modalview.generic.component import ModalResponse + +class CreatePollModal(LoginRequiredMixin,ModalCreateView): + + login_url = reverse_lazy("core:home") + redirect_field_name = 'next' + model = Poll + form_class = PollForm + context_object_name = 'poll' + template_name = 'poll/create.html' + success_url = reverse_lazy('core:home') + + def form_invalid(self, form,**kwargs): + context = super(CreatePollModal, self).form_invalid(form) + answers = {} + for key in self.request.POST: + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'): + answers[key] = self.request.POST[key] + + keys = sorted(answers) + context.context_data['answers'] = answers + context.context_data['keys'] = keys + return context + + def form_valid(self, form): + self.object = form.save(commit = False) + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) + self.object.topic = topic + self.object.save() + + for key in self.request.POST: + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'): + answer = Answer(answer=self.request.POST[key],order=key,poll=self.object) + answer.save() + + return super(CreatePollModal, self).form_valid(form) + + def get_context_data(self, **kwargs): + context = super(CreatePollModal, self).get_context_data(**kwargs) + topic = get_object_or_404(Topic, slug = self.kwargs.get('slug')) + context['course'] = topic.subject.course + context['subject'] = topic.subject + context['subjects'] = topic.subject.course.subjects.all() + return context + + +from django_modalview.generic.base import ModalTemplateView + +class MyModal(ModalTemplateView): + ''' + This modal inherit of ModalTemplateView, so it just display a text without logic. + ''' + def __init__(self, *args, **kwargs): + ''' + You have to call the init method of the parent, before to overide the values: + - title: The title display in the modal-header + - icon: The css class that define the modal's icon + - description: The content of the modal. + - close_button: A button object that has several attributes.(explain below) + ''' + super(MyModal, self).__init__(*args, **kwargs) + self.title = "My modal" + self.description = "This is my description" + self.icon = "icon-mymodal" -- libgit2 0.21.2