From 414162b52f7924191538fb7063a37c92c9c63e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 29 Sep 2015 18:05:27 +0200 Subject: [PATCH] general: make it possible to qualify with an user (#8173) --- .../contacts/contact_detail_fragment.html | 2 +- welco/contacts/templates/contacts/zone.html | 4 ++++ welco/contacts/views.py | 12 +++++++++++ .../migrations/0004_association_user_id.py | 20 ++++++++++++++++++ welco/qualif/models.py | 4 ++++ welco/static/js/welco.js | 21 +++++++++++++++++++ welco/templates/welco/qualification.html | 10 ++++++--- welco/views.py | 14 ++++++++----- 8 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 welco/qualif/migrations/0004_association_user_id.py diff --git a/welco/contacts/templates/contacts/contact_detail_fragment.html b/welco/contacts/templates/contacts/contact_detail_fragment.html index 96251cb..048ce9f 100644 --- a/welco/contacts/templates/contacts/contact_detail_fragment.html +++ b/welco/contacts/templates/contacts/contact_detail_fragment.html @@ -1,7 +1,7 @@ {% load i18n %}
-

{{user_display_name}}

+

{{user_display_name}}

{% if user_var_address or user_var_city %}

{{user_var_address}} / {{user_var_zipcode}} {{user_var_city}}

{% endif %} diff --git a/welco/contacts/templates/contacts/zone.html b/welco/contacts/templates/contacts/zone.html index b24d103..ee2b344 100644 --- a/welco/contacts/templates/contacts/zone.html +++ b/welco/contacts/templates/contacts/zone.html @@ -8,6 +8,10 @@
+ {% if contact_user_id %} + + + {% endif %}
{% trans 'Back to search' %} diff --git a/welco/contacts/views.py b/welco/contacts/views.py index eedddb8..ac6b56e 100644 --- a/welco/contacts/views.py +++ b/welco/contacts/views.py @@ -17,11 +17,13 @@ import json from django import template +from django.contrib.contenttypes.models import ContentType from django.http import HttpResponse from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt from django.views.generic import TemplateView +from welco.qualif.models import Association from welco.utils import get_wcs_data class HomeZone(object): @@ -39,6 +41,16 @@ class ContactsZone(TemplateView): def get_context_data(self, **kwargs): context = super(ContactsZone, self).get_context_data(**kwargs) + if 'source_pk' in self.request.GET: + try: + association = Association.objects.get( + source_type_id=self.request.GET['source_type'], + source_pk=self.request.GET['source_pk']) + except Association.DoesNotExist: + pass + else: + context['contact_user_id'] = association.user_id + return context zone = csrf_exempt(ContactsZone.as_view()) diff --git a/welco/qualif/migrations/0004_association_user_id.py b/welco/qualif/migrations/0004_association_user_id.py new file mode 100644 index 0000000..476ba2d --- /dev/null +++ b/welco/qualif/migrations/0004_association_user_id.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('qualif', '0003_association_comments'), + ] + + operations = [ + migrations.AddField( + model_name='association', + name='user_id', + field=models.CharField(max_length=50, null=True), + preserve_default=True, + ), + ] diff --git a/welco/qualif/models.py b/welco/qualif/models.py index b7e2e12..5373314 100644 --- a/welco/qualif/models.py +++ b/welco/qualif/models.py @@ -52,12 +52,16 @@ class Association(models.Model): source = generic.GenericForeignKey('source_type', 'source_pk') triaged = models.BooleanField(default=False) comments = models.TextField(blank=True, verbose_name=_('Comments')) + user_id = models.CharField(max_length=50, null=True) formdefs = models.ManyToManyField(FormdefReference) formdatas = models.ManyToManyField(FormdataReference) def push(self, request, context): # push validated request to wcs + if context: + context = context.copy() + context['user_id'] = self.user_id for formdef in self.formdefs.all(): formdata_id = push_wcs_formdata(request, formdef.reference, context) reference = '%s:%s' % (formdef.reference, formdata_id) diff --git a/welco/static/js/welco.js b/welco/static/js/welco.js index 563405b..95b6c9d 100644 --- a/welco/static/js/welco.js +++ b/welco/static/js/welco.js @@ -24,12 +24,33 @@ $(function() { $(zone).find('> div').replaceWith(data); $(zone).find('select').select2(); $(zone).removeClass('has-page-displayed'); + $(zone).removeClass('has-contact-displayed'); }, error: function(error) { console.log(':(', error); } }); }); }); + $('.contacts').delegate('button.save', 'click', function() { + var source_type = $('div.source div[data-source-type]').data('source-type'); + var source_pk = $('div.source .active[data-source-pk]').data('source-pk'); + var selected_user_id = $('#current-selected-user').val(); + $.ajax({url: $('.cell.qualif').data('zone-url'), + data: {user_id: selected_user_id, + source_type: source_type, + source_pk: source_pk}, + method: 'POST', + dataType: 'html', + success: function(data) { + $('div.contacts h3').effect('highlight'); + $('.cell.qualif > div').replaceWith(data); + $('.qualif').find('select').select2(); + }, + error: function(error) { console.log(':/', error); } + }); + return false; + }); + $('.qualif').delegate('button.add', 'click', function() { var formdef_reference = $('#id_formdef_reference').val(); var source_type = $('div.source div[data-source-type]').data('source-type'); diff --git a/welco/templates/welco/qualification.html b/welco/templates/welco/qualification.html index 9c040fb..d34004d 100644 --- a/welco/templates/welco/qualification.html +++ b/welco/templates/welco/qualification.html @@ -8,7 +8,11 @@ {% endif %}
- {% if association %} + {% if association.user_id %} + + {% endif %} + + {% if association.formdefs.count %}

({% trans 'Copies' %})

{% endif %} -
+
{{form.formdef_reference}}
- {% if association %} + {% if association.formdefs.count %} {% endif %} diff --git a/welco/views.py b/welco/views.py index b44f69d..1a43cd0 100644 --- a/welco/views.py +++ b/welco/views.py @@ -86,11 +86,15 @@ class Qualification(TemplateView): source_pk=request.POST['source_pk']) if created: association.save() - formdef_ref, created = FormdefReference.objects.get_or_create( - reference=request.POST['formdef_reference']) - if created: - formdef_ref.save() - association.formdefs.add(formdef_ref) + if 'formdef_reference' in request.POST: + formdef_ref, created = FormdefReference.objects.get_or_create( + reference=request.POST['formdef_reference']) + if created: + formdef_ref.save() + association.formdefs.add(formdef_ref) + if 'user_id' in request.POST: + association.user_id = request.POST['user_id'] + association.save() request.GET = request.POST return self.get(request)