app/soc/logic/cleaning.py
changeset 1699 699f65fbf08a
parent 1682 242ca517c340
child 1722 7f285e96cb17
equal deleted inserted replaced
1698:a8da5a620236 1699:699f65fbf08a
    32 from django.forms.util import ErrorList
    32 from django.forms.util import ErrorList
    33 from django.utils.translation import ugettext
    33 from django.utils.translation import ugettext
    34 
    34 
    35 from soc.logic import rights as rights_logic
    35 from soc.logic import rights as rights_logic
    36 from soc.logic import validate
    36 from soc.logic import validate
       
    37 from soc.logic.models import document as document_logic
    37 from soc.logic.models.site import logic as site_logic
    38 from soc.logic.models.site import logic as site_logic
    38 from soc.logic.models.user import logic as user_logic
    39 from soc.logic.models.user import logic as user_logic
    39 from soc.models import document as document_model
    40 from soc.models import document as document_model
    40 
    41 
    41 
    42 
    45 DEF_NO_RIGHTS_FOR_ACL_MSG = ugettext(
    46 DEF_NO_RIGHTS_FOR_ACL_MSG = ugettext(
    46     'You do not have the required rights for that ACL.')
    47     'You do not have the required rights for that ACL.')
    47 
    48 
    48 DEF_ORGANZIATION_NOT_ACTIVE_MSG = ugettext(
    49 DEF_ORGANZIATION_NOT_ACTIVE_MSG = ugettext(
    49     "This organization is not active or doesn't exist.")
    50     "This organization is not active or doesn't exist.")
       
    51 
       
    52 DEF_NO_SUCH_DOCUMENT_MSG = ugettext(
       
    53     "There is no such document with that link_id under this entity.")
       
    54 
    50 
    55 
    51 def check_field_is_empty(field_name):
    56 def check_field_is_empty(field_name):
    52   """Returns decorator that bypasses cleaning for empty fields.
    57   """Returns decorator that bypasses cleaning for empty fields.
    53   """
    58   """
    54 
    59 
   323     value = self.cleaned_data.get(field_name)
   328     value = self.cleaned_data.get(field_name)
   324 
   329 
   325     # call the Django URLField cleaning method to
   330     # call the Django URLField cleaning method to
   326     # properly clean/validate this field
   331     # properly clean/validate this field
   327     return forms.URLField.clean(self.fields[field_name], value)
   332     return forms.URLField.clean(self.fields[field_name], value)
       
   333   return wrapped
       
   334 
       
   335 
       
   336 def clean_refs(params, fields):
       
   337   """Cleans all references to make sure they are valid.
       
   338   """
       
   339 
       
   340   logic = params['logic']
       
   341 
       
   342   def wrapped(self):
       
   343     """Decorator wrapper method.
       
   344     """
       
   345 
       
   346     scope_path = logic.getKeyNameFromFields(self.cleaned_data)
       
   347 
       
   348     key_fields = {
       
   349         'scope_path': scope_path,
       
   350         'prefix': params['document_prefix'],
       
   351         }
       
   352 
       
   353     for field in fields:
       
   354       link_id = self.cleaned_data.get(field)
       
   355 
       
   356       if not link_id:
       
   357         continue
       
   358 
       
   359       key_fields['link_id'] = link_id
       
   360       ref = document_logic.logic.getFromKeyFields(key_fields)
       
   361 
       
   362       if not ref:
       
   363         self._errors[field] = ErrorList([DEF_NO_SUCH_DOCUMENT_MSG])
       
   364         del self.cleaned_data[field]
       
   365       else:
       
   366         self.cleaned_data['resolved_%s' % field] = ref
       
   367 
       
   368     return self.cleaned_data
       
   369 
   328   return wrapped
   370   return wrapped
   329 
   371 
   330 
   372 
   331 def validate_user_edit(link_id_field, account_field):
   373 def validate_user_edit(link_id_field, account_field):
   332   """Clean method for cleaning user edit form.
   374   """Clean method for cleaning user edit form.