Changeset 849

Show
Ignore:
Timestamp:
02/07/11 17:31:01 (2 years ago)
Author:
antonio.alves
Message:

Implemented duplicated UTN validation, close #240

Location:
trunk/opentrials
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/opentrials/repository/trds_forms.py

    r813 r849  
    164164# 
    165165 
     166def utrn_number_validate(data): 
     167    if data: 
     168        if not re.match('^U\d{4}-\d{4}-\d{4}$', data): 
     169            raise forms.ValidationError(_("Invalid format. Example: U1111-1111-1111")) 
     170    return data 
    166171 
    167172### step_1 ##################################################################### 
     
    190195    acronym = forms.CharField(required=False, label=_('Acronym'), 
    191196                              max_length=255) 
    192                                
     197 
    193198    def clean_utrn_number(self): 
    194         data = self.cleaned_data['utrn_number'].strip() 
    195         if data: 
    196             if not re.match('^U\d{4}-\d{4}-\d{4}$', data): 
    197                 raise forms.ValidationError(_("Invalid format. Example: U1111-1111-1111")) 
     199        data = utrn_number_validate(self.cleaned_data['utrn_number'].strip()) 
     200        if ClinicalTrial.objects.filter(utrn_number=data).exclude(pk=self.instance.pk).count() > 0: 
     201            raise forms.ValidationError(_('UTRN number already exists.')) 
    198202        return data 
    199203 
  • trunk/opentrials/reviewapp/forms.py

    r841 r849  
    22from tempfile import NamedTemporaryFile 
    33import lxml 
     4import re 
    45 
    56from opentrials.repository.trds_forms import ReviewModelForm 
     
    1718from polyglot.multilingual_forms import MultilingualModelChoiceField, MultilingualModelMultipleChoiceField 
    1819 
    19 from repository.models import Institution, CountryCode 
     20from repository.models import Institution, CountryCode, ClinicalTrial 
    2021from repository.widgets import SelectInstitution 
    2122from repository.xml.validate import validate_xml, InvalidOpenTrialsXML, ICTRP_DTD 
    2223from repository.xml.loading import etree, OpenTrialsXMLImport, REPLACE_IF_EXISTS 
     24from repository.trds_forms import utrn_number_validate 
    2325 
    2426ACCESS = [ 
     
    3638        self.user = kwargs.pop('user', None) 
    3739 
    38         self.base_fields.keyOrder = ['language', 'scientific_title', 'recruitment_country', 
    39                 'primary_sponsor',] 
    40  
    41         self.base_fields['primary_sponsor'].widget = SelectInstitution(formset_prefix='primary_sponsor') 
     40        self.base_fields.keyOrder = ['language', 'scientific_title', 'recruitment_country',  
     41                'utrn_number', 'primary_sponsor',] 
     42 
     43        self.base_fields['primary_sponsor'] = forms.ModelChoiceField(queryset=Institution.objects.filter(creator=self.user).order_by('name'),  
     44                                                label=_('Primary Sponsor'), 
     45                                                widget=SelectInstitution(formset_prefix='primary_sponsor'),  
     46                                                required=True) 
    4247 
    4348        super(InitialTrialForm, self).__init__(*args, **kwargs) 
    4449 
    45         self.fields['primary_sponsor'].queryset = Institution.objects.filter(creator=self.user).order_by('name') 
    46  
    47         if self.user: 
    48             self.fields['language'] = forms.ChoiceField(label=_('Submission language'),  
    49                         choices=settings.MANAGED_LANGUAGES_CHOICES,  
    50                         initial=self.user.get_profile().preferred_language) 
     50        self.fields['language'] = forms.ChoiceField(label=_('Submission language'),  
     51                    choices=settings.MANAGED_LANGUAGES_CHOICES,  
     52                    initial=self.user.get_profile().preferred_language) 
    5153 
    5254    form_title = _('Initial Trial Data') 
     
    5860                                                    model=CountryCode, 
    5961                                                    label_field='description',) 
     62    utrn_number = forms.CharField(label=_('UTRN Number'), max_length=255, required=True) 
    6063    language = forms.ChoiceField(label=_('Submission language'),  
    6164                                 choices=settings.MANAGED_LANGUAGES_CHOICES) 
     65 
     66    def clean_utrn_number(self): 
     67        data = utrn_number_validate(self.cleaned_data['utrn_number'].strip()) 
     68        if ClinicalTrial.objects.filter(utrn_number=data).count() > 0: 
     69            raise forms.ValidationError(_('UTRN number already exists.')) 
     70        return data 
    6271 
    6372class PrimarySponsorForm(ReviewModelForm): 
  • trunk/opentrials/reviewapp/views.py

    r841 r849  
    285285            trial.primary_sponsor = su.primary_sponsor 
    286286            trial.language = su.language 
     287            trial.utrn_number = initial_form.cleaned_data['utrn_number'] 
    287288            trial.save() 
    288289