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. |