127 lines
3.7 KiB
Python
127 lines
3.7 KiB
Python
from __future__ import absolute_import
|
|
|
|
import logging
|
|
|
|
from django import forms
|
|
from django.utils.translation import ugettext
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from documents.forms import DocumentForm
|
|
from documents.models import DocumentVersion
|
|
|
|
from .models import (IMAPEmail, POP3Email, SourceTransformation,
|
|
StagingFolderSource, WebFormSource, WatchFolderSource)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class NewDocumentForm(DocumentForm):
|
|
class Meta(DocumentForm.Meta):
|
|
exclude = ('label',)
|
|
|
|
|
|
class NewVersionForm(forms.Form):
|
|
def __init__(self, *args, **kwargs):
|
|
document = kwargs.pop('document')
|
|
super(NewVersionForm, self).__init__(*args, **kwargs)
|
|
self.fields['version_update'] = forms.ChoiceField(
|
|
label=_(u'Version update'),
|
|
choices=DocumentVersion.get_version_update_choices(document.latest_version)
|
|
)
|
|
|
|
self.fields['comment'] = forms.CharField(
|
|
label=_(u'Comment'),
|
|
required=False,
|
|
widget=forms.widgets.Textarea(attrs={'rows': 4}),
|
|
)
|
|
|
|
|
|
class UploadBaseForm(forms.Form):
|
|
def __init__(self, *args, **kwargs):
|
|
show_expand = kwargs.pop('show_expand', False)
|
|
self.source = kwargs.pop('source')
|
|
|
|
super(UploadBaseForm, self).__init__(*args, **kwargs)
|
|
|
|
if show_expand:
|
|
self.fields['expand'] = forms.BooleanField(
|
|
label=_(u'Expand compressed files'), required=False,
|
|
help_text=ugettext(u'Upload a compressed file\'s contained files as individual documents')
|
|
)
|
|
|
|
|
|
class StagingUploadForm(UploadBaseForm):
|
|
"""
|
|
Form that show all the files in the staging folder specified by the
|
|
StagingFile class passed as 'cls' argument
|
|
"""
|
|
def __init__(self, *args, **kwargs):
|
|
super(StagingUploadForm, self).__init__(*args, **kwargs)
|
|
|
|
try:
|
|
self.fields['staging_file_id'].choices = [
|
|
(staging_file.encoded_filename, unicode(staging_file)) for staging_file in self.source.get_files()
|
|
]
|
|
except Exception as exception:
|
|
logger.error('exception: %s' % exception)
|
|
pass
|
|
|
|
# Put staging_list field first in the field order list
|
|
staging_list_index = self.fields.keyOrder.index('staging_file_id')
|
|
staging_list = self.fields.keyOrder.pop(staging_list_index)
|
|
self.fields.keyOrder.insert(0, staging_list)
|
|
|
|
staging_file_id = forms.ChoiceField(label=_(u'Staging file'))
|
|
|
|
|
|
class WebFormUploadForm(UploadBaseForm):
|
|
file = forms.FileField(label=_(u'File'))
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(WebFormUploadForm, self).__init__(*args, **kwargs)
|
|
|
|
# Move the file filed to the top
|
|
self.fields.keyOrder.remove('file')
|
|
self.fields.keyOrder.insert(0, 'file')
|
|
|
|
|
|
class WebFormSetupForm(forms.ModelForm):
|
|
class Meta:
|
|
model = WebFormSource
|
|
|
|
|
|
class StagingFolderSetupForm(forms.ModelForm):
|
|
class Meta:
|
|
model = StagingFolderSource
|
|
|
|
|
|
class POP3EmailSetupForm(forms.ModelForm):
|
|
class Meta:
|
|
model = POP3Email
|
|
|
|
|
|
class IMAPEmailSetupForm(forms.ModelForm):
|
|
class Meta:
|
|
model = IMAPEmail
|
|
|
|
|
|
class WatchFolderSetupForm(forms.ModelForm):
|
|
class Meta:
|
|
model = WatchFolderSource
|
|
|
|
|
|
class SourceTransformationForm(forms.ModelForm):
|
|
class Meta:
|
|
model = SourceTransformation
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(SourceTransformationForm, self).__init__(*args, **kwargs)
|
|
self.fields['content_type'].widget = forms.HiddenInput()
|
|
self.fields['object_id'].widget = forms.HiddenInput()
|
|
|
|
|
|
class SourceTransformationForm_create(forms.ModelForm):
|
|
class Meta:
|
|
model = SourceTransformation
|
|
exclude = ('content_type', 'object_id')
|