diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-03 17:59:35 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-03 17:59:35 +0100 | 
| commit | 5e1cafecaabecd5f6dd8d77f5e0ac70e785fdcc3 (patch) | |
| tree | db74975f02072b2ecd98acc6c27004117e63adb0 /ishtar_common/forms.py | |
| parent | e53dafe0aadc4f20bb05e875e982da65f9b01944 (diff) | |
| download | Ishtar-5e1cafecaabecd5f6dd8d77f5e0ac70e785fdcc3.tar.bz2 Ishtar-5e1cafecaabecd5f6dd8d77f5e0ac70e785fdcc3.zip | |
Associate template to AdministrativActType - automatically associate the relevant template on administrativeact document generation (refs #1524)
Diffstat (limited to 'ishtar_common/forms.py')
| -rw-r--r-- | ishtar_common/forms.py | 26 | 
1 files changed, 26 insertions, 0 deletions
| diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index e82a6e86d..5faa232fb 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -145,3 +145,29 @@ def get_form_selection(class_name, label, key, model, base_form, get_url,          return cleaned_data      attrs['clean'] = clean      return type(class_name, (forms.Form,), attrs) + +class DocumentGenerationForm(forms.Form): +    """ +    Form to generate document by choosing the template +    """ +    _associated_model = None # ex: AdministrativeAct +    _associated_object_name = '' # ex: 'archaeological_operations.models.AdministrativeAct' +    document_template = forms.ChoiceField(label=_("Template"), choices=[]) + +    def __init__(self, *args, **kwargs): +        super(DocumentGenerationForm, self).__init__(*args, **kwargs) +        self.fields['document_template'].choices = \ +                models.DocumentTemplate.get_tuples( +                    dct={'associated_object_name':self._associated_object_name}) + +    def save(self, object_pk): +        try: +            c_object = self._associated_model.objects.get(pk=object_pk) +        except self._associated_model.DoesNotExist: +            return +        try: +            template = models.DocumentTemplate.objects.get( +                            pk=self.cleaned_data.get('document_template')) +        except models.DocumentTemplate.DoesNotExist: +            return +        return template.publish(c_object) | 
