From 2280108afce775e19ec37d91d2585628ec440338 Mon Sep 17 00:00:00 2001 From: fbormann Date: Sun, 12 Mar 2017 19:39:08 -0300 Subject: [PATCH] committing for saving important progress --- reports/forms.py | 11 +++++++++-- reports/templates/reports/_form.html | 17 +++++++++++++++++ reports/templates/reports/create.html | 24 +++++++++++++++++++++++- reports/urls.py | 2 ++ reports/views.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------ subjects/forms.py | 1 - topics/views.py | 1 - 7 files changed, 106 insertions(+), 11 deletions(-) diff --git a/reports/forms.py b/reports/forms.py index 8ce3093..dabe723 100644 --- a/reports/forms.py +++ b/reports/forms.py @@ -7,9 +7,16 @@ from django.forms.formsets import BaseFormSet class ResourceAndTagForm(forms.Form): resource = forms.ChoiceField(label=_("Resources"), required=True) - tag = forms.ChoiceField(label=_('Tag')) - + tag = forms.ChoiceField(label=_('Tag'), required=True) + def __init__(self, *args, **kwargs): + super(ResourceAndTagForm, self).__init__(*args, **kwargs) + if kwargs.get('initial'): + initial = kwargs['initial'] + print(initial) + self.fields['resource'].choices = [(resource.id, resource.name) for resource in initial['resource']] + self.fields['tag'].choices = [(tag.id, tag.name) for tag in initial['tag']] + class CreateInteractionReportForm(forms.Form): topic = forms.ChoiceField( label= _("Topics to select data from")) diff --git a/reports/templates/reports/_form.html b/reports/templates/reports/_form.html index 8fe22d3..0f8b060 100644 --- a/reports/templates/reports/_form.html +++ b/reports/templates/reports/_form.html @@ -51,12 +51,29 @@
{{ resource_tag_formset.management_form }} + {{ resource_tag_formset.non_form_errors }} {% for resource_tag_form in resource_tag_formset %}
{% for field in resource_tag_form %} {% render_field field class="form-control" %} + + {% if field.errors %} +
+
+ +
+ {% endif %} {% endfor %}
{% endfor %} diff --git a/reports/templates/reports/create.html b/reports/templates/reports/create.html index 710b476..83bd39a 100644 --- a/reports/templates/reports/create.html +++ b/reports/templates/reports/create.html @@ -49,9 +49,31 @@ {% endblock content %} \ No newline at end of file diff --git a/reports/urls.py b/reports/urls.py index b3f205f..0babb5d 100644 --- a/reports/urls.py +++ b/reports/urls.py @@ -5,4 +5,6 @@ from . import views urlpatterns = [ url(r'^create/interactions/$', views.ReportView.as_view(), name='create_interaction'), url(r'^view/interactions/$', views.ViewReportView.as_view(), name='view_report'), + url(r'^get/resources/$', views.get_resources, name='get_resource_and_tags'), + url(r'^get/tags/$', views.get_tags, name='get_tags'), ] \ No newline at end of file diff --git a/reports/views.py b/reports/views.py index f66f10b..0807605 100644 --- a/reports/views.py +++ b/reports/views.py @@ -15,7 +15,7 @@ from datetime import datetime, date from subjects.models import Subject from .forms import CreateInteractionReportForm, ResourceAndTagForm from log.models import Log -from topics.models import Resource +from topics.models import Resource, Topic from django.forms import formset_factory @@ -55,10 +55,11 @@ class ReportView(LoginRequiredMixin, generic.FormView): resources.append(resource) context['resources'] = resources context['tags'] = tags - + #set formset - resourceTagFormSet = formset_factory(ResourceAndTagForm, extra= 1) + resourceTagFormSet = formset_factory(ResourceAndTagForm, extra = 1) + resourceTagFormSet = resourceTagFormSet(initial=[{'resource':resources, 'tag':tags}]) context['resource_tag_formset'] = resourceTagFormSet return context @@ -72,6 +73,10 @@ class ReportView(LoginRequiredMixin, generic.FormView): get_params += key + "=" + str(value) + "&" + for form_data in self.formset_data: + for key, value in form_data.items(): + get_params += key + "=" + str(value) + "&" + #retrieving subject id for data purposes for key, value in self.request.GET.items(): get_params += key + "=" + str(value) @@ -84,10 +89,24 @@ class ReportView(LoginRequiredMixin, generic.FormView): POST variables and then checked for validity. """ form = self.get_form() - print(form) - if form.is_valid(): - print(form) + + subject = Subject.objects.get(id=self.request.GET['subject_id']) + + topics = subject.topic_subject.all() + #get all resources associated with topics + resources = [] + tags = [] + for topic in topics: + resources_set = topic.resource_topic.all() + for resource in resources_set: + for tag in resource.tags.all(): + tags.append(tag) + resources.append(resource) + resourceTagFormSet = formset_factory(ResourceAndTagForm, extra= 1) + resources_formset = resourceTagFormSet(self.request.POST, initial=[{'resource':resources, 'tag':tags}]) + if form.is_valid() and resources_formset.is_valid(): self.form_data = form.cleaned_data + self.formset_data = resources_formset.cleaned_data return self.form_valid(form) else: return self.form_invalid(form) @@ -208,3 +227,33 @@ class ViewReportView(LoginRequiredMixin, generic.TemplateView): return data, header + +def get_resources(request): + subject = Subject.objects.get(id=request.GET['subject_id']) + + topics = subject.topic_subject.all() + #get all resources associated with topics + resources = [] + tags = [] + for topic in topics: + resources_set = topic.resource_topic.all() + for resource in resources_set: + for tag in resource.tags.all(): + tags.append(tag) + resources.append(resource) + + data = {} + + data['resources']= [ {'id':resource.id, 'name':resource.name} for resource in resources] + return JsonResponse(data) + + +def get_tags(request): + resource = Resource.objects.get(id=request.GET['resource_id']) + data = {} + tags = [] + + for tag in resource.tags.all(): + tags.append(tag) + data['tags'] = [ {'id':tag.id, 'name':tag.name} for tag in tags] + return JsonResponse(data) diff --git a/subjects/forms.py b/subjects/forms.py index cb7679a..46f168a 100644 --- a/subjects/forms.py +++ b/subjects/forms.py @@ -175,7 +175,6 @@ class UpdateSubjectForm(forms.ModelForm): def clean_subscribe_begin(self): subscribe_begin = self.cleaned_data['subscribe_begin'] - print (self.instance.subscribe_begin, "################################") if subscribe_begin < datetime.datetime.today().date() and subscribe_begin < self.instance.subscribe_begin: self._errors['subscribe_begin'] = [_('This date must be today or after')] return ValueError diff --git a/topics/views.py b/topics/views.py index f05620f..5c32767 100644 --- a/topics/views.py +++ b/topics/views.py @@ -57,7 +57,6 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView): subject = get_object_or_404(Subject, slug = slug) self.object.subject = subject - print (subject.topic_subject.count()) self.object.order = subject.topic_subject.count() + 1 self.object.save() -- libgit2 0.21.2