Commit 02e08c20404c2cd77a91fad87843eafcdfb69894

Authored by Zambom
1 parent da00b768

Adjusting webpage update

pendencies/forms.py
@@ -13,12 +13,6 @@ class PendenciesForm(forms.ModelForm): @@ -13,12 +13,6 @@ class PendenciesForm(forms.ModelForm):
13 13
14 def __init__(self, *args, **kwargs): 14 def __init__(self, *args, **kwargs):
15 super(PendenciesForm, self).__init__(*args, **kwargs) 15 super(PendenciesForm, self).__init__(*args, **kwargs)
16 -  
17 - if kwargs.get('initial'):  
18 - subject = kwargs['initial'].get('subject', None)  
19 -  
20 - if subject:  
21 - self.initial['subject'] = subject.id  
22 16
23 begin_date_check = forms.BooleanField(required = False) 17 begin_date_check = forms.BooleanField(required = False)
24 end_date_check = forms.BooleanField(required = False) 18 end_date_check = forms.BooleanField(required = False)
@@ -30,12 +24,19 @@ class PendenciesForm(forms.ModelForm): @@ -30,12 +24,19 @@ class PendenciesForm(forms.ModelForm):
30 def clean(self): 24 def clean(self):
31 cleaned_data = super(PendenciesForm, self).clean() 25 cleaned_data = super(PendenciesForm, self).clean()
32 26
  27 + pend_id = cleaned_data.get('id', None)
  28 +
  29 + action = cleaned_data.get('action', None)
33 begin_date = cleaned_data.get('begin_date', None) 30 begin_date = cleaned_data.get('begin_date', None)
34 end_date = cleaned_data.get('end_date', None) 31 end_date = cleaned_data.get('end_date', None)
35 begin_check = cleaned_data.get('begin_date_check', False) 32 begin_check = cleaned_data.get('begin_date_check', False)
36 end_check = cleaned_data.get('end_date_check', False) 33 end_check = cleaned_data.get('end_date_check', False)
37 subject_id = cleaned_data.get('subject', None) 34 subject_id = cleaned_data.get('subject', None)
38 35
  36 + if begin_check or end_check:
  37 + if not action:
  38 + self.add_error('action', _('This field is required.'))
  39 +
39 if not begin_date and begin_check: 40 if not begin_date and begin_check:
40 self.add_error('begin_date', _('This field is required.')) 41 self.add_error('begin_date', _('This field is required.'))
41 42
@@ -52,7 +53,7 @@ class PendenciesForm(forms.ModelForm): @@ -52,7 +53,7 @@ class PendenciesForm(forms.ModelForm):
52 subject = Subject.objects.get(id = subject_id) 53 subject = Subject.objects.get(id = subject_id)
53 54
54 if not begin_date == ValueError and begin_date: 55 if not begin_date == ValueError and begin_date:
55 - if begin_date.date() < datetime.datetime.today().date(): 56 + if not pend_id and begin_date.date() < datetime.datetime.today().date():
56 self.add_error('begin_date', _("This input should be filled with a date equal or after today's date.")) 57 self.add_error('begin_date', _("This input should be filled with a date equal or after today's date."))
57 58
58 if begin_date.date() < subject.init_date: 59 if begin_date.date() < subject.init_date:
@@ -62,7 +63,7 @@ class PendenciesForm(forms.ModelForm): @@ -62,7 +63,7 @@ class PendenciesForm(forms.ModelForm):
62 self.add_error('begin_date', _('This input should be filled with a date equal or after the subject end date.')) 63 self.add_error('begin_date', _('This input should be filled with a date equal or after the subject end date.'))
63 64
64 if not end_date == ValueError and end_date: 65 if not end_date == ValueError and end_date:
65 - if end_date.date() < datetime.datetime.today().date(): 66 + if not pend_id and end_date.date() < datetime.datetime.today().date():
66 self.add_error('end_date', _("This input should be filled with a date equal or after today's date.")) 67 self.add_error('end_date', _("This input should be filled with a date equal or after today's date."))
67 68
68 if end_date.date() < subject.init_date: 69 if end_date.date() < subject.init_date:
pendencies/migrations/0004_auto_20170124_0128.py 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +# -*- coding: utf-8 -*-
  2 +# Generated by Django 1.10 on 2017-01-24 04:28
  3 +from __future__ import unicode_literals
  4 +
  5 +from django.db import migrations, models
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + ('pendencies', '0003_pendencies_limit_date'),
  12 + ]
  13 +
  14 + operations = [
  15 + migrations.AlterField(
  16 + model_name='pendencies',
  17 + name='action',
  18 + field=models.CharField(blank=True, choices=[('view', 'Visualize'), ('create', 'Create'), ('answer', 'Answer'), ('access', 'Access')], max_length=100, verbose_name='Action'),
  19 + ),
  20 + ]
pendencies/models.py
@@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _ @@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
5 from topics.models import Resource 5 from topics.models import Resource
6 6
7 class Pendencies(models.Model): 7 class Pendencies(models.Model):
8 - action = models.CharField(_('Action'), max_length = 100, choices = (("view", _("Visualize")), ("create", _("Create")), ("answer", _("Answer")), ("access", _("Access")))) 8 + action = models.CharField(_('Action'), max_length = 100, choices = (("view", _("Visualize")), ("create", _("Create")), ("answer", _("Answer")), ("access", _("Access"))), blank = True)
9 begin_date = models.DateTimeField(_('Begin Date'), null = True, blank = True) 9 begin_date = models.DateTimeField(_('Begin Date'), null = True, blank = True)
10 end_date = models.DateTimeField(_('End Date'), null = True, blank = True) 10 end_date = models.DateTimeField(_('End Date'), null = True, blank = True)
11 limit_date = models.DateTimeField(_('Limit Date'), null = True, blank = True) 11 limit_date = models.DateTimeField(_('Limit Date'), null = True, blank = True)
webpage/templates/webpages/_form.html
@@ -109,7 +109,10 @@ @@ -109,7 +109,10 @@
109 <div class="notifies"> 109 <div class="notifies">
110 <div style="text-align:left"> 110 <div style="text-align:left">
111 {% if notify.instance.pk %}{{ notify.DELETE }}{% endif %} 111 {% if notify.instance.pk %}{{ notify.DELETE }}{% endif %}
112 - {% render_field notify.subject %} 112 + {% render_field notify.id %}
  113 + {% render_field notify.resource %}
  114 + {% render_field notify.subject class='pend_subj' %}
  115 +
113 <div class="form-group{% if notify.has_error %} has-error {% endif %} row"> 116 <div class="form-group{% if notify.has_error %} has-error {% endif %} row">
114 <label for="{{ notify.action.auto_id }}" class="pull-left action_label contol-label"> 117 <label for="{{ notify.action.auto_id }}" class="pull-left action_label contol-label">
115 {% trans 'Action not performed by the user' %}: 118 {% trans 'Action not performed by the user' %}:
@@ -118,13 +121,15 @@ @@ -118,13 +121,15 @@
118 {% render_field notify.action class='form-control' %} 121 {% render_field notify.action class='form-control' %}
119 </div> 122 </div>
120 123
  124 + <br clear="all" />
  125 +
121 <span id="helpBlock" class="help-block">{{ notify.action.help_text }}</span> 126 <span id="helpBlock" class="help-block">{{ notify.action.help_text }}</span>
122 127
123 {% if notify.action.errors %} 128 {% if notify.action.errors %}
124 <div class="alert alert-danger alert-dismissible" role="alert"> 129 <div class="alert alert-danger alert-dismissible" role="alert">
125 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
126 - <span aria-hidden="true">&times;</span>  
127 - </button> 130 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  131 + <span aria-hidden="true">&times;</span>
  132 + </button>
128 <ul> 133 <ul>
129 {% for error in notify.action.errors %} 134 {% for error in notify.action.errors %}
130 <li>{{ error }}</li> 135 <li>{{ error }}</li>
@@ -154,9 +159,9 @@ @@ -154,9 +159,9 @@
154 159
155 {% if notify.begin_date.errors %} 160 {% if notify.begin_date.errors %}
156 <div class="alert alert-danger alert-dismissible" role="alert"> 161 <div class="alert alert-danger alert-dismissible" role="alert">
157 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
158 - <span aria-hidden="true">&times;</span>  
159 - </button> 162 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  163 + <span aria-hidden="true">&times;</span>
  164 + </button>
160 <ul> 165 <ul>
161 {% for error in notify.begin_date.errors %} 166 {% for error in notify.begin_date.errors %}
162 <li>{{ error }}</li> 167 <li>{{ error }}</li>
@@ -180,9 +185,9 @@ @@ -180,9 +185,9 @@
180 185
181 {% if notify.end_date.errors %} 186 {% if notify.end_date.errors %}
182 <div class="alert alert-danger alert-dismissible" role="alert"> 187 <div class="alert alert-danger alert-dismissible" role="alert">
183 - <button type="button" class="close" data-dismiss="alert" aria-label="Close">  
184 - <span aria-hidden="true">&times;</span>  
185 - </button> 188 + <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  189 + <span aria-hidden="true">&times;</span>
  190 + </button>
186 <ul> 191 <ul>
187 {% for error in notify.end_date.errors %} 192 {% for error in notify.end_date.errors %}
188 <li>{{ error }}</li> 193 <li>{{ error }}</li>
@@ -355,13 +360,14 @@ @@ -355,13 +360,14 @@
355 360
356 subject = $("#id_control_subject").val(); 361 subject = $("#id_control_subject").val();
357 362
358 - console.log(subject);  
359 - console.log($(row).find('input[type=hidden]'));  
360 -  
361 - $(row).find('input[type=hidden]').val(subject); 363 + $(row).find('.pend_subj').val(subject);
362 } 364 }
363 }); 365 });
364 366
  367 + subject = $("#id_control_subject").val();
  368 +
  369 + $('.pend_subj').val(subject);
  370 +
365 {% if not pendencies_form.is_valid and pendencies_form.is_bound %} 371 {% if not pendencies_form.is_valid and pendencies_form.is_bound %}
366 $("#notifications").collapse('toggle'); 372 $("#notifications").collapse('toggle');
367 {% endif %} 373 {% endif %}
webpage/templates/webpages/view.html
@@ -47,6 +47,8 @@ @@ -47,6 +47,8 @@
47 </div> 47 </div>
48 </div> 48 </div>
49 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content"> 49 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content">
50 - {{ webpage.content }} 50 + {% autoescape off %}
  51 + {{ webpage.content }}
  52 + {% endautoescape %}
51 </div> 53 </div>
52 {% endblock %} 54 {% endblock %}
webpage/views.py
@@ -81,7 +81,7 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView): @@ -81,7 +81,7 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView):
81 slug = self.kwargs.get('slug', '') 81 slug = self.kwargs.get('slug', '')
82 topic = get_object_or_404(Topic, slug = slug) 82 topic = get_object_or_404(Topic, slug = slug)
83 83
84 - pendencies_form = InlinePendenciesFormset(initial = [{'subject': topic.subject}]) 84 + pendencies_form = InlinePendenciesFormset(initial = [{'subject': topic.subject.id}])
85 85
86 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) 86 return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
87 87
@@ -94,7 +94,7 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView): @@ -94,7 +94,7 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView):
94 slug = self.kwargs.get('slug', '') 94 slug = self.kwargs.get('slug', '')
95 topic = get_object_or_404(Topic, slug = slug) 95 topic = get_object_or_404(Topic, slug = slug)
96 96
97 - pendencies_form = InlinePendenciesFormset(self.request.POST, initial = [{'subject': topic.subject}]) 97 + pendencies_form = InlinePendenciesFormset(self.request.POST, initial = [{'subject': topic.subject.id}])
98 98
99 if (form.is_valid() and pendencies_form.is_valid()): 99 if (form.is_valid() and pendencies_form.is_valid()):
100 return self.form_valid(form, pendencies_form) 100 return self.form_valid(form, pendencies_form)
@@ -126,8 +126,13 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView): @@ -126,8 +126,13 @@ class CreateView(LoginRequiredMixin, generic.edit.CreateView):
126 self.object.save() 126 self.object.save()
127 127
128 pendencies_form.instance = self.object 128 pendencies_form.instance = self.object
129 - pendencies_form.save()  
130 - 129 +
  130 + for form in pendencies_form.forms:
  131 + pend_form = form.save(commit = False)
  132 +
  133 + if not pend_form.action == "":
  134 + pend_form.save()
  135 +
131 return redirect(self.get_success_url()) 136 return redirect(self.get_success_url())
132 137
133 def get_context_data(self, **kwargs): 138 def get_context_data(self, **kwargs):
@@ -174,21 +179,8 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView): @@ -174,21 +179,8 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
174 179
175 return super(UpdateView, self).dispatch(request, *args, **kwargs) 180 return super(UpdateView, self).dispatch(request, *args, **kwargs)
176 181
177 - # def get(self, request, *args, **kwargs):  
178 - # self.object = self.get_queryset()  
179 -  
180 - # form_class = self.get_form_class()  
181 - # form = self.get_form(form_class)  
182 -  
183 - # slug = self.kwargs.get('topic_slug', '')  
184 - # topic = get_object_or_404(Topic, slug = slug)  
185 -  
186 - # pendencies_form = InlinePendenciesFormset(instance = self.object)  
187 -  
188 - # return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))  
189 -  
190 def post(self, request, *args, **kwargs): 182 def post(self, request, *args, **kwargs):
191 - self.object = None 183 + self.object = self.get_object()
192 184
193 form_class = self.get_form_class() 185 form_class = self.get_form_class()
194 form = self.get_form(form_class) 186 form = self.get_form(form_class)
@@ -196,7 +188,7 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView): @@ -196,7 +188,7 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
196 slug = self.kwargs.get('topic_slug', '') 188 slug = self.kwargs.get('topic_slug', '')
197 topic = get_object_or_404(Topic, slug = slug) 189 topic = get_object_or_404(Topic, slug = slug)
198 190
199 - pendencies_form = InlinePendenciesFormset(self.request.POST, initial = [{'subject': topic.subject}]) 191 + pendencies_form = InlinePendenciesFormset(self.request.POST, instance = self.object, initial = [{'subject': topic.subject.id}])
200 192
201 if (form.is_valid() and pendencies_form.is_valid()): 193 if (form.is_valid() and pendencies_form.is_valid()):
202 return self.form_valid(form, pendencies_form) 194 return self.form_valid(form, pendencies_form)
@@ -209,16 +201,15 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView): @@ -209,16 +201,15 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
209 def form_valid(self, form, pendencies_form): 201 def form_valid(self, form, pendencies_form):
210 self.object = form.save(commit = False) 202 self.object = form.save(commit = False)
211 203
212 - slug = self.kwargs.get('topic_slug', '')  
213 - topic = get_object_or_404(Topic, slug = slug)  
214 -  
215 - self.object.topic = topic  
216 - self.object.order = topic.resource_topic.count() + 1  
217 -  
218 self.object.save() 204 self.object.save()
219 205
220 pendencies_form.instance = self.object 206 pendencies_form.instance = self.object
221 - pendencies_form.save() 207 +
  208 + for form in pendencies_form.forms:
  209 + pend_form = form.save(commit = False)
  210 +
  211 + if not pend_form.action == "":
  212 + pend_form.save()
222 213
223 return redirect(self.get_success_url()) 214 return redirect(self.get_success_url())
224 215
@@ -233,12 +224,9 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView): @@ -233,12 +224,9 @@ class UpdateView(LoginRequiredMixin, generic.UpdateView):
233 context['topic'] = topic 224 context['topic'] = topic
234 context['subject'] = topic.subject 225 context['subject'] = topic.subject
235 226
236 - if self.request.POST:  
237 - context['form'] = WebpageForm(self.request.POST, instance=self.object, initial = {'subject': topic.subject})  
238 - context['pendencies_form'] = InlinePendenciesFormset(self.request.POST, instance=self.object)  
239 - else: 227 + if not self.request.POST:
240 context['form'] = WebpageForm(instance=self.object, initial = {'subject': topic.subject}) 228 context['form'] = WebpageForm(instance=self.object, initial = {'subject': topic.subject})
241 - context['pendencies_form'] = InlinePendenciesFormset(instance=self.object) 229 + context['pendencies_form'] = InlinePendenciesFormset(instance=self.object, initial = [{'subject': topic.subject.id}])
242 230
243 return context 231 return context
244 232