Skip to content
Snippets Groups Projects
Commit 8cc2539d authored by Hervé  MENAGER's avatar Hervé MENAGER
Browse files

modify PDB ID form to validate format and PDB entry existence

Former-commit-id: fb0ff3428b6b55c4e73c58b186cf72d48b83f4d4
parent 10c6f0d7
No related branches found
No related tags found
No related merge requests found
from django.forms import ModelForm,modelformset_factory,formset_factory from django.forms import ModelForm,modelformset_factory,formset_factory
from django import forms from django import forms
from django.db import models from django.db import models
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex from .models import Bibliography, Protein, ProteinDomainComplex, Ppi, PpiComplex
from .ws import pdb_entry_exists
class IdForm(ModelForm): class IdForm(ModelForm):
class Meta: class Meta:
...@@ -23,8 +27,15 @@ class BibliographyForm(ModelForm): ...@@ -23,8 +27,15 @@ class BibliographyForm(ModelForm):
'journal_name': forms.TextInput(attrs={'readonly':'readonly', 'class':'readonly'}), 'journal_name': forms.TextInput(attrs={'readonly':'readonly', 'class':'readonly'}),
} }
def validate_pdb_exists(value):
if not(pdb_entry_exists(value)):
raise ValidationError('PDB entry not found: %(value)s', params={'value': value}, code='invalid')
class PDBForm(forms.Form): class PDBForm(forms.Form):
pdb_id = forms.CharField(label="PDB ID",max_length=4, widget=forms.TextInput(attrs={'placeholder': 'e.g 4HHB'})) pdb_id = forms.CharField(label="PDB ID",max_length=4, widget=forms.TextInput(attrs={'placeholder': 'e.g 4HHB'}), required=True, validators=[
RegexValidator('^[0-9][a-zA-Z0-9]{3}$', message='PDB ID must be 1 numeric + 3 alphanumeric characters'),
validate_pdb_exists
])
PDBFormSet = formset_factory(PDBForm) PDBFormSet = formset_factory(PDBForm)
formset=PDBFormSet() formset=PDBFormSet()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment