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 %}
{% 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