app/soc/views/helper/templatetags/forms_helpers.py
changeset 1371 2d97dbbb4d99
parent 1360 f62c462037b6
child 1531 db5d40d9dc43
equal deleted inserted replaced
1370:8d684e64fbbe 1371:2d97dbbb4d99
    22   '"Pawel Solyga" <pawel.solyga@gmail.com>',
    22   '"Pawel Solyga" <pawel.solyga@gmail.com>',
    23   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    23   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
    24   ]
    24   ]
    25 
    25 
    26 
    26 
       
    27 import operator
       
    28 import re
       
    29 
    27 from google.appengine.ext import db
    30 from google.appengine.ext import db
    28 
    31 
    29 from django import template
    32 from django import template
    30 from django.forms import forms as forms_in
    33 from django.forms import forms as forms_in
    31 from django.utils.encoding import force_unicode
    34 from django.utils.encoding import force_unicode
    32 from django.utils.html import escape
    35 from django.utils.html import escape
    33 
    36 
       
    37 from soc.logic import dicts
    34 from soc.views.helper import widgets
    38 from soc.views.helper import widgets
    35 
    39 
    36 
    40 
    37 register = template.Library()
    41 register = template.Library()
    38 
    42 
   172       attrs = field.rf
   176       attrs = field.rf
   173 
   177 
   174     # If the field is hidden we display it elsewhere
   178     # If the field is hidden we display it elsewhere
   175     if not bf.is_hidden:
   179     if not bf.is_hidden:
   176       example_text = ''
   180       example_text = ''
   177       group = 'main'
   181       group = '0. '
   178       
   182 
   179       if hasattr(field, 'group'):
   183       if hasattr(field, 'group'):
   180         group = field.group
   184         group = field.group
   181 
   185 
   182       if hasattr(field, 'example_text'):
   186       if hasattr(field, 'example_text'):
   183         example_text = force_unicode(field.example_text)
   187         example_text = force_unicode(field.example_text)
   196 
   200 
   197       for e in bf.errors:
   201       for e in bf.errors:
   198         item = (name, force_unicode(e))
   202         item = (name, force_unicode(e))
   199         hidden_fields_errors.append(item)
   203         hidden_fields_errors.append(item)
   200 
   204 
       
   205   grouped = dicts.groupby(fields, 'group')
       
   206   rexp = re.compile(r"\d+. ")
       
   207   fields = [(rexp.sub('',key), grouped[key]) for key in sorted(grouped)]
       
   208 
   201   context.update({
   209   context.update({
   202       'top_errors': form.non_field_errors() or '',
   210       'top_errors': form.non_field_errors() or '',
   203       'hidden_field_errors': hidden_fields_errors or '',
   211       'hidden_field_errors': hidden_fields_errors or '',
   204       'fields':  sorted(fields, key=lambda x: x.get('group')) or '',
   212       'groups': fields if fields else '',
   205       'hidden_fields': hidden_fields or '',
   213       'hidden_fields': hidden_fields or '',
   206       })
   214       })
   207 
   215 
   208   return context
   216   return context
   209 
   217