Commit 604de34dcac460007964017742ded43b4009d052

Authored by Jailson Dias
1 parent a3fa7886

Template de ver enquete #146

poll/templates/poll/view.html
1   -{% extends "topic/index.html" %}
  1 +{% extends "poll/create.html" %}
2 2  
3   -{% load i18n widget_tweaks dict_access static%}
4   -{% block content %}
5   -<!-- Modal (remember to change the ids!!!) -->
6   -<div class="modal fade" id="poll" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
7   - <div class="modal-dialog" role="document">
8   - <div class="modal-content">
  3 +{% load i18n dict_access static%}
9 4  
10   - <!-- Modal Header -->
11   - <div class="modal-header">
  5 +{% block style %}
  6 +{% endblock %}
12 7  
13   - <!-- Put your title here!!! -->
14   - <h4 class="modal-title" id="myModalLabel">{{form.question}}</h4>
  8 +{% block title_poll %}
  9 +<!-- Put your title here!!! -->
  10 +<h4 class="modal-title" id="myModalLabel">{{poll}}</h4>
  11 +{% endblock title_poll %}
15 12  
16   - </div>
17   - <!-- Modal Body -->
18   - <div class="modal-body">
19   -
20   - <!-- Put ONLY your content here!!! -->
21   - <div class="conteiner">
22   - </div>
23   - <form id="form" method="post">
24   - {% csrf_token %}
25   - {% for key in keys %}
26   - <div class="row form-group">
27   - <div class="col-md-1">
28   - </br>
29   - <label><span class="glyphicon glyphicon-move"></span></label>
30   - </div>
31   - <div class="col-md-10">
32   - <div class="has-success is-empty">
33   - <input type="text" name="{{key}}" class="form-control" placeholder='{% trans "Answer" %}' value="{{ answers|value:key }}">
34   - <span class="help-block">{% trans "Possible answer for the question" %}</span>
35   - </div>
36   - </div>
37   - <div class="col-md-1">
38   - </br>
39   - <label><span class="glyphicon glyphicon-remove" onclick="this.parentNode.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode.parentNode);"></span></label>
40   - </div>
41   - </div>
42   - {% empty %}
43   - <div class="row form-group">
44   - <div class="col-md-1">
45   - </br>
46   - <label><span class="glyphicon glyphicon-move"></span></label>
47   - </div>
48   - <div class="col-md-10">
49   - <div class="has-success is-empty">
50   - <input type="text" name="1" class="form-control" placeholder='{% trans "Answer" %}'>
51   - <span class="help-block">{% trans "Possible answer for the question" %}</span>
52   - </div>
53   - </div>
54   - <div class="col-md-1">
55   - </br>
56   - <label><span class="glyphicon glyphicon-remove" onclick="this.parentNode.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode.parentNode);"></span></label>
57   - </div>
58   - </div>
59   - {% endfor %}
60   - </form>
61   - </br>
62   - </div>
63   - <button type="button" id="add" class="btn btn-primary btn-block btn-sm">add</button>
64   - <div class="row form-group">
65   - <input form="form" class="form-control" type="date" name="{{form.limit_date.name}}" {% if form.limit_date.value != None %}value="{% if form.limit_date.value.year %}{{form.limit_date.value|date:'Y-m-d'}}{% else %}{{form.limit_date.value}}{% endif %}"{% endif %}>
66   - {% if form.limit_date.errors %}
67   - <div class="not_submited">
68   - </br>
69   - <div class="alert alert-danger alert-dismissible" role="alert">
70   - <button type="button" class="close" data-dismiss="alert" aria-label="Close">
71   - <span aria-hidden="true">&times;</span>
72   - </button>
73   - <ul>
74   - {% for error in form.limit_date.errors %}
75   - <li>{{ error }}</li>
76   - {% endfor %}
77   - </ul>
78   - </div>
79   - </div>
80   - {% endif %}
81   - </div>
82   -
83   - </div>
84   -
85   - <!-- Modal Footer -->
86   - <div class="modal-footer">
87   -
88   - <!-- Don't remove that!!! -->
89   - <button type="button" class="btn btn-danger btn-raised" data-dismiss="modal">{% trans "Close" %}</button>
90   -
91   - <!-- Put curtom buttons here!!! -->
92   - <button type="submite" id="button" form="form" class="btn btn-primary btn-raised">{% trans "Create" %}</button>
93   - </div>
94   -
95   - </div>
  13 +{% block content_poll %}
  14 +<!-- Put ONLY your content here!!! -->
  15 +<div class="row">
  16 + <div class="col-md-10 col-md-offset-1">
  17 + <h3>{% trans "Limit date:" %} {{poll.limit_date|date:'d/m/y'}}</h3>
96 18 </div>
97 19 </div>
98   -<a href="" data-toggle="modal" data-target="#poll">modal</a>
99   -{% endblock content %}
  20 +{% endblock content_poll %}
  21 +
  22 +{% block button_save %}
  23 +<!-- Put curtom buttons here!!! -->
  24 +<button type="submite" id="button" form="form" class="btn btn-primary btn-raised">{% trans "Answer" %}</button>
  25 +{% endblock button_save %}
... ...
poll/urls.py
... ... @@ -3,10 +3,9 @@ from django.conf.urls import url
3 3 from . import views
4 4  
5 5 urlpatterns = [
  6 + url(r'^view/(?P<slug>[\w\-_]+)/$', views.ViewPoll.as_view(), name='view_poll'), # poll slug
6 7 url(r'^create/(?P<slug>[\w\-_]+)/$', views.CreatePoll.as_view(), name='create_poll'), # topic slug
7 8 url(r'^update/(?P<slug>[\w\-_]+)/$', views.UpdatePoll.as_view(), name='update_poll'), # poll slug
8   - url(r'^teste/(?P<slug>[\w\-_]+)/$', views.CreatePollModal.as_view(), name='teste'), # poll
9   - url(r'^mymodal/', views.MyModal.as_view(), name='mymodal'),
10 9 url(r'^delete/(?P<slug>[\w\-_]+)/$', views.DeletePoll.as_view(), name='delete_poll'), # poll
11 10  
12 11 ]
... ...
poll/views.py
... ... @@ -17,6 +17,60 @@ from core.mixins import NotificationMixin
17 17 from users.models import User
18 18 from courses.models import Course, Topic
19 19  
  20 +class ViewPoll(LoginRequiredMixin,generic.DetailView):
  21 +
  22 + model = Poll
  23 + context_object_name = 'poll'
  24 + template_name = 'poll/view.html'
  25 +
  26 + def get_object(self, queryset=None):
  27 + return get_object_or_404(Poll, slug = self.kwargs.get('slug'))
  28 +
  29 + def form_invalid(self, form,**kwargs):
  30 + context = super(ViewPoll, self).form_invalid(form)
  31 + answers = {}
  32 + for key in self.request.POST:
  33 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'):
  34 + answers[key] = self.request.POST[key]
  35 +
  36 + keys = sorted(answers)
  37 + context.context_data['answers'] = answers
  38 + context.context_data['keys'] = keys
  39 + return context
  40 +
  41 + def form_valid(self, form):
  42 + poll = self.object
  43 + poll = form.save(commit = False)
  44 + poll.answers.all().delete()
  45 + poll.save()
  46 +
  47 +
  48 + for key in self.request.POST:
  49 + if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'):
  50 + answer = Answer(answer=self.request.POST[key],order=key,poll=poll)
  51 + answer.save()
  52 +
  53 + return super(ViewPoll, self).form_valid(form)
  54 +
  55 + def get_context_data(self, **kwargs):
  56 + context = super(ViewPoll, self).get_context_data(**kwargs)
  57 + poll = self.object
  58 + context['course'] = poll.topic.subject.course
  59 + context['subject'] = poll.topic.subject
  60 + context['subjects'] = poll.topic.subject.course.subjects.all()
  61 +
  62 + answers = {}
  63 + for answer in poll.answers.all():
  64 + answers[answer.order] = answer.answer
  65 +
  66 + keys = sorted(answers)
  67 + context['answers'] = answers
  68 + context['keys'] = keys
  69 +
  70 + print (context)
  71 + return context
  72 +
  73 +
20 74 class CreatePoll(LoginRequiredMixin,HasRoleMixin,generic.CreateView):
21 75  
22 76 allowed_roles = ['professor', 'system_admin']
... ... @@ -152,70 +206,3 @@ class DeletePoll(LoginRequiredMixin, HasRoleMixin, generic.DeleteView):
152 206  
153 207 def get_success_url(self):
154 208 return reverse_lazy('course:view_topic', kwargs={'slug' : self.object.topic.slug})
155   -
156   -
157   -from django_modalview.generic.edit import ModalCreateView
158   -from django_modalview.generic.component import ModalResponse
159   -
160   -class CreatePollModal(LoginRequiredMixin,ModalCreateView):
161   -
162   - login_url = reverse_lazy("core:home")
163   - redirect_field_name = 'next'
164   - model = Poll
165   - form_class = PollForm
166   - context_object_name = 'poll'
167   - template_name = 'poll/create.html'
168   - success_url = reverse_lazy('core:home')
169   -
170   - def form_invalid(self, form,**kwargs):
171   - context = super(CreatePollModal, self).form_invalid(form)
172   - answers = {}
173   - for key in self.request.POST:
174   - if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'):
175   - answers[key] = self.request.POST[key]
176   -
177   - keys = sorted(answers)
178   - context.context_data['answers'] = answers
179   - context.context_data['keys'] = keys
180   - return context
181   -
182   - def form_valid(self, form):
183   - self.object = form.save(commit = False)
184   - topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
185   - self.object.topic = topic
186   - self.object.save()
187   -
188   - for key in self.request.POST:
189   - if(key != 'csrfmiddlewaretoken' and key != 'name' and key != 'limit_date' and key != 'all_students' and key != 'students'):
190   - answer = Answer(answer=self.request.POST[key],order=key,poll=self.object)
191   - answer.save()
192   -
193   - return super(CreatePollModal, self).form_valid(form)
194   -
195   - def get_context_data(self, **kwargs):
196   - context = super(CreatePollModal, self).get_context_data(**kwargs)
197   - topic = get_object_or_404(Topic, slug = self.kwargs.get('slug'))
198   - context['course'] = topic.subject.course
199   - context['subject'] = topic.subject
200   - context['subjects'] = topic.subject.course.subjects.all()
201   - return context
202   -
203   -
204   -from django_modalview.generic.base import ModalTemplateView
205   -
206   -class MyModal(ModalTemplateView):
207   - '''
208   - This modal inherit of ModalTemplateView, so it just display a text without logic.
209   - '''
210   - def __init__(self, *args, **kwargs):
211   - '''
212   - You have to call the init method of the parent, before to overide the values:
213   - - title: The title display in the modal-header
214   - - icon: The css class that define the modal's icon
215   - - description: The content of the modal.
216   - - close_button: A button object that has several attributes.(explain below)
217   - '''
218   - super(MyModal, self).__init__(*args, **kwargs)
219   - self.title = "My modal"
220   - self.description = "This is my description"
221   - self.icon = "icon-mymodal"
... ...