Commit 26417503e4da1a29422be2003bd2ecabce0a7ac5
1 parent
61689fc2
Exists in
master
and in
5 other branches
terminada a parte de studante responder uma enquete #147
Showing
5 changed files
with
85 additions
and
21 deletions
Show diff stats
courses/templates/topic/index.html
| ... | ... | @@ -148,23 +148,4 @@ |
| 148 | 148 | |
| 149 | 149 | </div> |
| 150 | 150 | </div> |
| 151 | - | |
| 152 | -<button id="poll_teste">poll</button> | |
| 153 | -<script type="text/javascript"> | |
| 154 | - $("#poll_teste").click(function(){ | |
| 155 | - if($('#poll').length){ | |
| 156 | - $('#poll').modal('show'); | |
| 157 | - } else { | |
| 158 | - var url = "{% url 'course:poll:create_poll' topic.slug%}"; | |
| 159 | - // alert(url); | |
| 160 | - $.get(url, function(data){ | |
| 161 | - $("#poll_t").append(data); | |
| 162 | - $('#poll').modal('show'); | |
| 163 | - }); | |
| 164 | - } | |
| 165 | - }); | |
| 166 | -</script> | |
| 167 | - | |
| 168 | -<div class="row" id="poll_t"> | |
| 169 | -</div> | |
| 170 | 151 | {% endblock %} | ... | ... |
| ... | ... | @@ -0,0 +1,34 @@ |
| 1 | +{% extends "poll/create.html" %} | |
| 2 | + | |
| 3 | +{% load i18n static dict_access %} | |
| 4 | + | |
| 5 | +{% block title_poll %} | |
| 6 | +<!-- Put your title here!!! --> | |
| 7 | +<h4 class="modal-title" id="myModalLabel">{{poll.name}}</h4> | |
| 8 | +{% endblock title_poll %} | |
| 9 | + | |
| 10 | +{% block content_poll %} | |
| 11 | +<form id="answer_form" class="" action="" method="post"> | |
| 12 | + {% csrf_token %} | |
| 13 | + {% for key in keys %} | |
| 14 | + <div class="row form-group {% if form.has_error %} has-error {% endif %}"> | |
| 15 | + <div class="col-md-10 col-sm-10 col-xs-10 col-lg-10"> | |
| 16 | + <div class="checkbox"> | |
| 17 | + <label> | |
| 18 | + <input type="checkbox" name="{{key}}"><span class="checkbox-material"><span class="check"></span></span> {{ answers|value:key }} | |
| 19 | + </label> | |
| 20 | + </div> | |
| 21 | + </div> | |
| 22 | + </div> | |
| 23 | + {% endfor %} | |
| 24 | +</form> | |
| 25 | +{% endblock content_poll %} | |
| 26 | +{% block button_save %} | |
| 27 | +<button type="submite" id="button" form="answer_form" class="btn btn-primary btn-raised">{% trans "Answer" %}</button> | |
| 28 | +<script> | |
| 29 | + $("#answer_form").submit(function(event) { | |
| 30 | + Submite.post("{% url 'course:poll:answer_student_poll' poll.slug %}",$(this).serialize()); | |
| 31 | + event.preventDefault(); | |
| 32 | + }); | |
| 33 | +</script> | |
| 34 | +{% endblock button_save %} | ... | ... |
poll/templates/poll/view.html
| ... | ... | @@ -30,6 +30,6 @@ |
| 30 | 30 | {% block button_save %} |
| 31 | 31 | <!-- Put curtom buttons here!!! --> |
| 32 | 32 | {% if not status %} |
| 33 | -<button type="button" class="btn btn-primary btn-raised">{% trans "Answer" %}</button> | |
| 33 | +<button type="button" onclick="javascript:get('{% url 'course:poll:answer_student_poll' poll.slug%}','#poll','#modal_poll');$('div.modal-backdrop.fade.in').remove();" class="btn btn-primary btn-raised">{% trans "Answer" %}</button> | |
| 34 | 34 | {% endif %} |
| 35 | 35 | {% endblock button_save %} | ... | ... |
poll/urls.py
| ... | ... | @@ -8,4 +8,5 @@ urlpatterns = [ |
| 8 | 8 | url(r'^update/(?P<slug>[\w\-_]+)/$', views.UpdatePoll.as_view(), name='update_poll'), # poll slug |
| 9 | 9 | url(r'^delete/(?P<slug>[\w\-_]+)/$', views.DeletePoll.as_view(), name='delete_poll'), # poll |
| 10 | 10 | url(r'^answer/$', views.AnswerPoll.as_view(), name='answer_poll'), # poll |
| 11 | + url(r'^answer-poll/(?P<slug>[\w\-_]+)/$', views.AnswerStudentPoll.as_view(), name='answer_student_poll'), # poll slug | |
| 11 | 12 | ] | ... | ... |
poll/views.py
| ... | ... | @@ -33,7 +33,12 @@ class ViewPoll(LoginRequiredMixin,generic.DetailView): |
| 33 | 33 | context['course'] = poll.topic.subject.course |
| 34 | 34 | context['subject'] = poll.topic.subject |
| 35 | 35 | context['subjects'] = poll.topic.subject.course.subjects.all() |
| 36 | - context['status'] = AnswersStudent.objects.get(poll=poll, student=self.request.user).status | |
| 36 | + answered = AnswersStudent.objects.filter(poll = poll, student=self.request.user) | |
| 37 | + print (answered) | |
| 38 | + if answered.count()<1: | |
| 39 | + context['status'] = False | |
| 40 | + else: | |
| 41 | + context['status'] = answered[0].status | |
| 37 | 42 | return context |
| 38 | 43 | |
| 39 | 44 | |
| ... | ... | @@ -183,3 +188,46 @@ class DeletePoll(LoginRequiredMixin, HasRoleMixin, generic.DeleteView): |
| 183 | 188 | |
| 184 | 189 | class AnswerPoll(generic.TemplateView): |
| 185 | 190 | template_name = 'poll/answer.html' |
| 191 | + | |
| 192 | +class AnswerStudentPoll(LoginRequiredMixin,generic.CreateView): | |
| 193 | + | |
| 194 | + model = AnswersStudent | |
| 195 | + fields = ['status'] | |
| 196 | + context_object_name = 'answer' | |
| 197 | + template_name = 'poll/answer_student.html' | |
| 198 | + | |
| 199 | + def form_valid(self, form): | |
| 200 | + poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) | |
| 201 | + answers = AnswersStudent( | |
| 202 | + status = True, | |
| 203 | + poll = poll, | |
| 204 | + student = self.request.user, | |
| 205 | + ) | |
| 206 | + answers.save() | |
| 207 | + | |
| 208 | + for key in self.request.POST: | |
| 209 | + if(key != 'csrfmiddlewaretoken'): | |
| 210 | + answers.answer.add(poll.answers.all().filter(order=key)[0]) | |
| 211 | + | |
| 212 | + return self.render_to_response(self.get_context_data(form = form), status = 200) | |
| 213 | + | |
| 214 | + def get_context_data(self, **kwargs): | |
| 215 | + context = super(AnswerStudentPoll, self).get_context_data(**kwargs) | |
| 216 | + print (self.kwargs.get('slug')) | |
| 217 | + poll = get_object_or_404(Poll, slug = self.kwargs.get('slug')) | |
| 218 | + context['poll'] = poll | |
| 219 | + context['topic'] = poll.topic | |
| 220 | + context['course'] = poll.topic.subject.course | |
| 221 | + context['subject'] = poll.topic.subject | |
| 222 | + context['subjects'] = poll.topic.subject.course.subjects.all() | |
| 223 | + | |
| 224 | + print (self.request.method) | |
| 225 | + answers = {} | |
| 226 | + for answer in poll.answers.all(): | |
| 227 | + answers[answer.order] = answer.answer | |
| 228 | + | |
| 229 | + keys = sorted(answers) | |
| 230 | + context['answers'] = answers | |
| 231 | + context['keys'] = keys | |
| 232 | + | |
| 233 | + return context | ... | ... |