diff --git a/combo/apps/lingo/migrations/0033_auto_20181204_2241.py b/combo/apps/lingo/migrations/0033_auto_20181204_2241.py new file mode 100644 index 00000000..9326248d --- /dev/null +++ b/combo/apps/lingo/migrations/0033_auto_20181204_2241.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('lingo', '0032_basketitem_capture_date'), + ] + + operations = [ + migrations.AddField( + model_name='tipipaymentformcell', + name='exer', + field=models.CharField(help_text='Default value to be used in form', max_length=4, verbose_name='Exer', blank=True), + ), + migrations.AddField( + model_name='tipipaymentformcell', + name='idligne', + field=models.CharField(help_text='Default value to be used in form', max_length=6, verbose_name='IDLIGNE', blank=True), + ), + migrations.AddField( + model_name='tipipaymentformcell', + name='idpce', + field=models.CharField(help_text='Default value to be used in form', max_length=8, verbose_name='IDPCE', blank=True), + ), + migrations.AddField( + model_name='tipipaymentformcell', + name='roldeb', + field=models.CharField(help_text='Default value to be used in form', max_length=2, verbose_name='ROLDEB', blank=True), + ), + migrations.AddField( + model_name='tipipaymentformcell', + name='roldet', + field=models.CharField(help_text='Default value to be used in form', max_length=13, verbose_name='ROLDET', blank=True), + ), + migrations.AddField( + model_name='tipipaymentformcell', + name='rolrec', + field=models.CharField(help_text='Default value to be used in form', max_length=2, verbose_name='ROLREC', blank=True), + ), + ] diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py index 5cdf143c..7ac1767c 100644 --- a/combo/apps/lingo/models.py +++ b/combo/apps/lingo/models.py @@ -712,6 +712,12 @@ class TipiPaymentFormCell(CellBase): url = models.URLField(_('TIPI payment service URL'), default='https://www.tipi.budget.gouv.fr/tpa/paiement.web') regies = models.CharField(_('Regies'), help_text=_('separated by commas'), max_length=256) control_protocol = models.CharField(_('Control protocol'), max_length=8, choices=TIPI_CONTROL_PROCOTOLS, default='pesv2') + exer = models.CharField('Exer', max_length=4, blank=True, help_text=_('Default value to be used in form')) + idpce = models.CharField('IDPCE', max_length=8, blank=True, help_text=_('Default value to be used in form')) + idligne = models.CharField('IDLIGNE', max_length=6, blank=True, help_text=_('Default value to be used in form')) + rolrec = models.CharField('ROLREC', max_length=2, blank=True, help_text=_('Default value to be used in form')) + roldeb = models.CharField('ROLDEB', max_length=2, blank=True, help_text=_('Default value to be used in form')) + roldet = models.CharField('ROLDET', max_length=13, blank=True, help_text=_('Default value to be used in form')) test_mode = models.BooleanField(_('Test mode'), default=False) template_name = 'lingo/tipi_form.html' @@ -723,11 +729,31 @@ class TipiPaymentFormCell(CellBase): def get_cell_extra_context(self, context): extra_context = super(TipiPaymentFormCell, self).get_cell_extra_context(context) + form_fields = self.get_default_form_class().base_fields + field_definitions = ({'protocol': 'any', 'fields': ['exer']}, + {'protocol': 'pesv2', 'fields': ['idligne', 'idpce']}, + {'protocol': 'rolmre', 'fields': ['rolrec', 'roldeb', 'roldet']} + ) + reference_fields = [] + for definition in field_definitions: + for field in definition['fields']: + field_pattern = '[0-9]+' + # special pattern for rolrec + if field == 'rolrec': + field_pattern = '[A-Z0-9]+' + reference_fields.append({'name': field, 'length': form_fields[field].max_length, + 'placeholder': '0'*form_fields[field].max_length, + 'pattern': field_pattern, + 'protocol': definition['protocol']}) context['title'] = self.title context['url'] = self.url context['mode'] = 'T' if self.test_mode else 'M' - context['pesv2'] = (self.control_protocol == 'pesv2') + context['control_protocol'] = self.control_protocol context['regies'] = [] + for field in reference_fields: + if getattr(self, field['name']): + field['default'] = getattr(self, field['name']) + context['reference_fields'] = reference_fields for regie in self.regies.split(','): regie_id = regie.strip() if not regie_id: diff --git a/combo/apps/lingo/templates/lingo/tipi_form.html b/combo/apps/lingo/templates/lingo/tipi_form.html index 98dfc575..d0f87bc4 100644 --- a/combo/apps/lingo/templates/lingo/tipi_form.html +++ b/combo/apps/lingo/templates/lingo/tipi_form.html @@ -24,15 +24,14 @@

- - - {% if pesv2 %} - - - - {% else %} - - - - - + {% regroup reference_fields by protocol as fields %} + {% for field in fields %} + {% for f in field.list %} + {% if field.grouper == control_protocol or field.grouper == 'any' %} + {% if field.grouper == 'any' or not forloop.last %} - {% endif %} {% endif %} + {% endfor %} + {% endfor %}