Files
mayan-edms/mayan/apps/sources/forms.py

120 lines
3.4 KiB
Python

from __future__ import unicode_literals
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 .models import (
IMAPEmail, POP3Email, StagingFolderSource, WebFormSource,
WatchFolderSource
)
logger = logging.getLogger(__name__)
class NewDocumentForm(DocumentForm):
class Meta(DocumentForm.Meta):
exclude = ('label', 'description')
class NewVersionForm(forms.Form):
def __init__(self, *args, **kwargs):
super(NewVersionForm, self).__init__(*args, **kwargs)
self.fields['comment'] = forms.CharField(
label=_('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=_('Expand compressed files'), required=False,
help_text=ugettext('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)
staging_file_id = forms.ChoiceField(label=_('Staging file'))
class WebFormUploadForm(UploadBaseForm):
file = forms.FileField(label=_('File'))
class WebFormSetupForm(forms.ModelForm):
class Meta:
fields = ('label', 'enabled', 'uncompress')
model = WebFormSource
class StagingFolderSetupForm(forms.ModelForm):
class Meta:
fields = (
'label', 'enabled', 'folder_path', 'preview_width',
'preview_height', 'uncompress', 'delete_after_upload'
)
model = StagingFolderSource
class EmailSetupBaseForm(forms.ModelForm):
class Meta:
widgets = {
'password': forms.widgets.PasswordInput(render_value=True)
}
class POP3EmailSetupForm(EmailSetupBaseForm):
class Meta(EmailSetupBaseForm.Meta):
fields = (
'label', 'enabled', 'interval', 'document_type', 'uncompress',
'host', 'ssl', 'port', 'username', 'password', 'timeout',
'metadata_attachment_name',
)
model = POP3Email
class IMAPEmailSetupForm(EmailSetupBaseForm):
class Meta(EmailSetupBaseForm.Meta):
fields = (
'label', 'enabled', 'interval', 'document_type', 'uncompress',
'host', 'ssl', 'port', 'username', 'password', 'mailbox',
'metadata_attachment_name'
)
model = IMAPEmail
class WatchFolderSetupForm(forms.ModelForm):
class Meta:
fields = (
'label', 'enabled', 'interval', 'document_type', 'uncompress',
'folder_path'
)
model = WatchFolderSource