X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/da8442aa10f031739977a5ab296538b4e32bf284..22aac0da99594406b261f14c135812c855c196ef:/apps/api/forms.py diff --git a/apps/api/forms.py b/apps/api/forms.py deleted file mode 100644 index 22cadb9e..00000000 --- a/apps/api/forms.py +++ /dev/null @@ -1,143 +0,0 @@ -# -*- encoding: utf-8 -*- - -__author__= "Łukasz Rekucki" -__date__ = "$2009-09-20 21:34:52$" -__doc__ = "Micro-forms for the API." - -from django import forms -from api.models import PullRequest -from django.contrib.auth.models import User - -import re -from django.utils import simplejson as json - -class MergeRequestForm(forms.Form): - # should the target document revision be updated or shared - type = forms.ChoiceField(choices=(('update', 'Update'), ('share', 'Share')) ) - - # - # if type == update: - # * user's revision which is the base of the merge - # if type == share: - # * revision which will be pulled to the main branch - # - # NOTE: the revision doesn't have to be owned by the user - # who requests the merge: - # a) Every user can update his branch - # b) Some users can push their changes - # -> if they can't, they leave a PRQ - # c) Some users can pull other people's changes - # d) Some users can update branches owned by special - # users associated with PRQ's - revision = forms.RegexField('[0-9a-f]{40}') - - # any additional comments that user wants to add to the change - message = forms.CharField(required=False) - -class DocumentUploadForm(forms.Form): - ocr_file = forms.FileField(label='Source OCR file', required=False) - ocr_data = forms.CharField(widget=forms.HiddenInput(), required=False) - - bookname = forms.RegexField(regex=r'[0-9\.\w_-]+', \ - label='Publication name', help_text='Example: słowacki__beniowski__pieśń_1') - - generate_dc = forms.BooleanField(required=False, \ - initial=True, label=u"Generate DublinCore template") - - - def clean(self): - clean_data = self.cleaned_data - - ocr_file = clean_data['ocr_file'] - ocr_data = clean_data['ocr_data'] - - if not ocr_file and not ocr_data: - raise forms.ValidationError( - "You must either provide file descriptor or raw data." ) - - return clean_data - -PRQ_USER_RE = re.compile(r"^\$prq-(\d{1,10})$", re.UNICODE) - -class DocumentRetrieveForm(forms.Form): - revision = forms.RegexField(regex=r'latest|[0-9a-z]{40}', required=False) - user = forms.CharField(required=False) - - def clean_user(self): - # why, oh why doesn't django implement this!!! - # value = super(DocumentRetrieveForm, self).clean_user() - value = self.cleaned_data['user'] - - if value.startswith('$'): - # library user (... maybe later) - if value == '$library': - raise forms.ValidationError("Invalid user name '%s'" % value) - - m = PRQ_USER_RE.match(value) - - if m: - try: - return value - except: - raise forms.ValidationError("User doesn't exist.") - raise forms.ValidationError("Invalid user name '%s'" % value) - try: - return value - except: - raise forms.ValidationError("User doesn't exist.") - - -class TextRetrieveForm(DocumentRetrieveForm): - chunk = forms.CharField(required=False) - format = forms.CharField(required=False) - - def clean_format(self): - value = self.cleaned_data['format'] - if not value: - return 'raw' - - if value not in ('nl', 'raw'): - raise forms.ValidationError("Invalid text format") - return value - -class TextUpdateForm(DocumentRetrieveForm): - message = forms.CharField(required=False) - contents = forms.CharField(required=False) - chunks = forms.CharField(required=False) - - format = forms.CharField(required=False) - - def clean_format(self): - value = self.cleaned_data['format'] - if not value: - return 'raw' - - if value not in ('nl', 'raw'): - raise forms.ValidationError("Invalid text format") - return value - - def clean_message(self): - value = self.cleaned_data['message'] - - if value: - return u"$USER$ " + value - else: - return u"$AUTO$ XML content update." - - def clean_chunks(self): - value = self.cleaned_data['chunks'] - - try: - return json.loads(value) - except Exception, e: - forms.ValidationError("Invalid JSON: " + e.message) - - - def clean(self): - if self.cleaned_data['contents'] and self.cleaned_data['chunks']: - raise forms.ValidationError("Pass either contents or chunks - not both ") - - if not self.cleaned_data['contents'] and not self.cleaned_data['chunks']: - raise forms.ValidationError("You must pass contents or chunks.") - - return self.cleaned_data \ No newline at end of file