Improve sources app model sub classes and inheritance handling
This commit is contained in:
@@ -10,14 +10,16 @@ from rest_api.classes import APIEndPoint
|
|||||||
|
|
||||||
from .classes import StagingFile
|
from .classes import StagingFile
|
||||||
from .links import (document_create_multiple, document_create_siblings,
|
from .links import (document_create_multiple, document_create_siblings,
|
||||||
staging_file_delete, setup_sources, setup_web_form_list,
|
setup_sources, setup_web_form_list, setup_source_create,
|
||||||
setup_staging_folder_list, setup_watch_folder_list,
|
setup_source_delete, setup_source_edit,
|
||||||
setup_source_edit, setup_source_delete, setup_source_create,
|
setup_source_transformation_create,
|
||||||
setup_source_transformation_list, setup_source_transformation_create,
|
setup_source_transformation_delete,
|
||||||
setup_source_transformation_edit, setup_source_transformation_delete,
|
setup_source_transformation_edit,
|
||||||
upload_version)
|
setup_source_transformation_list,
|
||||||
from .models import (WebForm, StagingFolder, SourceTransformation,
|
setup_staging_folder_list, setup_watch_folder_list,
|
||||||
WatchFolder)
|
staging_file_delete, upload_version)
|
||||||
|
from .models import (SourceTransformation, StagingFolderSource,
|
||||||
|
WatchFolderSource, WebFormSource)
|
||||||
from .urls import api_urls
|
from .urls import api_urls
|
||||||
from .widgets import staging_file_thumbnail
|
from .widgets import staging_file_thumbnail
|
||||||
|
|
||||||
@@ -27,16 +29,16 @@ register_links(SourceTransformation, [setup_source_transformation_edit, setup_so
|
|||||||
|
|
||||||
register_links(['sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_create'], [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
register_links(['sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_create'], [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||||
|
|
||||||
register_links(WebForm, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
register_links(WebFormSource, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||||
register_links(WebForm, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
register_links(WebFormSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
||||||
|
|
||||||
register_links(['sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_edit', 'sources:setup_source_delete', 'sources:setup_source_create'], [setup_sources, setup_source_create], menu_name='sidebar')
|
register_links(['sources:setup_web_form_list', 'sources:setup_staging_folder_list', 'sources:setup_watch_folder_list', 'sources:setup_source_edit', 'sources:setup_source_delete', 'sources:setup_source_create'], [setup_sources, setup_source_create], menu_name='sidebar')
|
||||||
|
|
||||||
register_links(StagingFolder, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
register_links(StagingFolderSource, [setup_web_form_list, setup_staging_folder_list], menu_name='form_header')
|
||||||
register_links(StagingFolder, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
register_links(StagingFolderSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
||||||
|
|
||||||
register_links(WatchFolder, [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list], menu_name='form_header')
|
register_links(WatchFolderSource, [setup_web_form_list, setup_staging_folder_list, setup_watch_folder_list], menu_name='form_header')
|
||||||
register_links(WatchFolder, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
register_links(WatchFolderSource, [setup_source_transformation_list, setup_source_edit, setup_source_delete])
|
||||||
|
|
||||||
# Document version
|
# Document version
|
||||||
register_links(['documents:document_version_list', 'documents:upload_version', 'documents:document_version_revert'], [upload_version], menu_name='sidebar')
|
register_links(['documents:document_version_list', 'documents:upload_version', 'documents:document_version_revert'], [upload_version], menu_name='sidebar')
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ from __future__ import absolute_import
|
|||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import StagingFolder, SourceTransformation, WebForm
|
from .models import StagingFolderSource, SourceTransformation, WebFormSource
|
||||||
|
|
||||||
admin.site.register(StagingFolder)
|
admin.site.register(StagingFolderSource)
|
||||||
admin.site.register(SourceTransformation)
|
admin.site.register(SourceTransformation)
|
||||||
admin.site.register(WebForm)
|
admin.site.register(WebFormSource)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from rest_framework.response import Response
|
|||||||
from documents.settings import (DISPLAY_SIZE, ZOOM_MAX_LEVEL,
|
from documents.settings import (DISPLAY_SIZE, ZOOM_MAX_LEVEL,
|
||||||
ZOOM_MIN_LEVEL)
|
ZOOM_MIN_LEVEL)
|
||||||
|
|
||||||
from .models import StagingFolder
|
from .models import StagingFolderSource
|
||||||
from .serializers import (StagingFolderFileSerializer, StagingFolderSerializer,
|
from .serializers import (StagingFolderFileSerializer, StagingFolderSerializer,
|
||||||
StagingSourceFileImageSerializer)
|
StagingSourceFileImageSerializer)
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ class APIStagingSourceFileView(generics.GenericAPIView):
|
|||||||
serializer_class = StagingFolderFileSerializer
|
serializer_class = StagingFolderFileSerializer
|
||||||
|
|
||||||
def get(self, request, staging_folder_pk, encoded_filename):
|
def get(self, request, staging_folder_pk, encoded_filename):
|
||||||
staging_folder = get_object_or_404(StagingFolder, pk=staging_folder_pk)
|
staging_folder = get_object_or_404(StagingFolderSource, pk=staging_folder_pk)
|
||||||
return Response(StagingFolderFileSerializer(staging_folder.get_file(encoded_filename=encoded_filename), context={'request': request}).data)
|
return Response(StagingFolderFileSerializer(staging_folder.get_file(encoded_filename=encoded_filename), context={'request': request}).data)
|
||||||
|
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ class APIStagingSourceListView(generics.ListAPIView):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
serializer_class = StagingFolderSerializer
|
serializer_class = StagingFolderSerializer
|
||||||
queryset = StagingFolder.objects.all()
|
queryset = StagingFolderSource.objects.all()
|
||||||
|
|
||||||
|
|
||||||
class APIStagingSourceView(generics.RetrieveAPIView):
|
class APIStagingSourceView(generics.RetrieveAPIView):
|
||||||
@@ -41,7 +41,7 @@ class APIStagingSourceView(generics.RetrieveAPIView):
|
|||||||
Details of the selected staging folders and the files it contains.
|
Details of the selected staging folders and the files it contains.
|
||||||
"""
|
"""
|
||||||
serializer_class = StagingFolderSerializer
|
serializer_class = StagingFolderSerializer
|
||||||
queryset = StagingFolder.objects.all()
|
queryset = StagingFolderSource.objects.all()
|
||||||
|
|
||||||
|
|
||||||
class APIStagingSourceFileImageView(generics.GenericAPIView):
|
class APIStagingSourceFileImageView(generics.GenericAPIView):
|
||||||
@@ -55,7 +55,7 @@ class APIStagingSourceFileImageView(generics.GenericAPIView):
|
|||||||
serializer_class = StagingSourceFileImageSerializer
|
serializer_class = StagingSourceFileImageSerializer
|
||||||
|
|
||||||
def get(self, request, staging_folder_pk, encoded_filename):
|
def get(self, request, staging_folder_pk, encoded_filename):
|
||||||
staging_folder = get_object_or_404(StagingFolder, pk=staging_folder_pk)
|
staging_folder = get_object_or_404(StagingFolderSource, pk=staging_folder_pk)
|
||||||
staging_file = staging_folder.get_file(encoded_filename=encoded_filename)
|
staging_file = staging_folder.get_file(encoded_filename=encoded_filename)
|
||||||
|
|
||||||
size = request.GET.get('size', DISPLAY_SIZE)
|
size = request.GET.get('size', DISPLAY_SIZE)
|
||||||
|
|||||||
@@ -8,9 +8,9 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
|
|
||||||
from documents.forms import DocumentForm
|
from documents.forms import DocumentForm
|
||||||
|
|
||||||
from .models import SourceTransformation, StagingFolder, WebForm, WatchFolder
|
from .models import (SourceTransformation, StagingFolderSource, WebFormSource,
|
||||||
|
WatchFolderSource)
|
||||||
from .utils import validate_whitelist_blacklist
|
from .utils import validate_whitelist_blacklist
|
||||||
from .widgets import FamFamRadioSelect
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -77,17 +77,17 @@ class WebFormForm(DocumentForm):
|
|||||||
|
|
||||||
class WebFormSetupForm(forms.ModelForm):
|
class WebFormSetupForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = WebForm
|
model = WebFormSource
|
||||||
|
|
||||||
|
|
||||||
class StagingFolderSetupForm(forms.ModelForm):
|
class StagingFolderSetupForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StagingFolder
|
model = StagingFolderSource
|
||||||
|
|
||||||
|
|
||||||
class WatchFolderSetupForm(forms.ModelForm):
|
class WatchFolderSetupForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = WatchFolder
|
model = WatchFolderSource
|
||||||
|
|
||||||
|
|
||||||
class SourceTransformationForm(forms.ModelForm):
|
class SourceTransformationForm(forms.ModelForm):
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from documents.permissions import (PERMISSION_DOCUMENT_CREATE,
|
from documents.permissions import (PERMISSION_DOCUMENT_CREATE,
|
||||||
PERMISSION_DOCUMENT_NEW_VERSION)
|
PERMISSION_DOCUMENT_NEW_VERSION)
|
||||||
|
|
||||||
from .models import (StagingFolder, WatchFolder, WebForm)
|
from .models import StagingFolderSource, WatchFolderSource, WebFormSource
|
||||||
from .permissions import (PERMISSION_SOURCES_SETUP_CREATE,
|
from .permissions import (PERMISSION_SOURCES_SETUP_CREATE,
|
||||||
PERMISSION_SOURCES_SETUP_DELETE,
|
PERMISSION_SOURCES_SETUP_DELETE,
|
||||||
PERMISSION_SOURCES_SETUP_EDIT,
|
PERMISSION_SOURCES_SETUP_EDIT,
|
||||||
@@ -16,17 +16,17 @@ document_create_siblings = {'text': _(u'Clone metadata'), 'view': 'sources:docum
|
|||||||
|
|
||||||
staging_file_delete = {'text': _(u'Delete'), 'view': 'sources:staging_file_delete', 'args': ['source.pk', 'object.encoded_filename'], 'famfam': 'delete', 'keep_query': True, 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE]}
|
staging_file_delete = {'text': _(u'Delete'), 'view': 'sources:staging_file_delete', 'args': ['source.pk', 'object.encoded_filename'], 'famfam': 'delete', 'keep_query': True, 'permissions': [PERMISSION_DOCUMENT_NEW_VERSION, PERMISSION_DOCUMENT_CREATE]}
|
||||||
|
|
||||||
setup_sources = {'text': _(u'Sources'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebForm], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW], 'children_view_regex': [r'setup_web_form', r'setup_staging_folder', r'setup_source_']}
|
setup_sources = {'text': _(u'Sources'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebFormSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW], 'children_view_regex': [r'setup_web_form', r'setup_staging_folder', r'setup_source_']}
|
||||||
setup_web_form_list = {'text': _(u'Web forms'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebForm], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
setup_web_form_list = {'text': _(u'Web forms'), 'view': 'sources:setup_web_form_list', 'famfam': 'application_form', 'icon': 'application_form.png', 'children_classes': [WebFormSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
||||||
setup_staging_folder_list = {'text': _(u'Staging folders'), 'view': 'sources:setup_staging_folder_list', 'famfam': 'folder_camera', 'children_classes': [StagingFolder], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
setup_staging_folder_list = {'text': _(u'Staging folders'), 'view': 'sources:setup_staging_folder_list', 'famfam': 'folder_camera', 'children_classes': [StagingFolderSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
||||||
setup_watch_folder_list = {'text': _(u'Watch folders'), 'view': 'sources:setup_watch_folder_list', 'famfam': 'folder_magnify', 'children_classes': [WatchFolder], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
setup_watch_folder_list = {'text': _(u'Watch folders'), 'view': 'sources:setup_watch_folder_list', 'famfam': 'folder_magnify', 'children_classes': [WatchFolderSource], 'permissions': [PERMISSION_SOURCES_SETUP_VIEW]}
|
||||||
|
|
||||||
setup_source_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_edit', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
setup_source_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_edit', 'args': ['source.pk'], 'famfam': 'application_form_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
||||||
setup_source_delete = {'text': _(u'Delete'), 'view': 'sources:setup_source_delete', 'args': ['source.source_type', 'source.pk'], 'famfam': 'application_form_delete', 'permissions': [PERMISSION_SOURCES_SETUP_DELETE]}
|
setup_source_delete = {'text': _(u'Delete'), 'view': 'sources:setup_source_delete', 'args': ['source.pk'], 'famfam': 'application_form_delete', 'permissions': [PERMISSION_SOURCES_SETUP_DELETE]}
|
||||||
setup_source_create = {'text': _(u'Add new source'), 'view': 'sources:setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]}
|
setup_source_create = {'text': _(u'Add new source'), 'view': 'sources:setup_source_create', 'args': 'source_type', 'famfam': 'application_form_add', 'permissions': [PERMISSION_SOURCES_SETUP_CREATE]}
|
||||||
|
|
||||||
setup_source_transformation_list = {'text': _(u'Transformations'), 'view': 'sources:setup_source_transformation_list', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_move_front', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
setup_source_transformation_list = {'text': _(u'Transformations'), 'view': 'sources:setup_source_transformation_list', 'args': ['source.pk'], 'famfam': 'shape_move_front', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
||||||
setup_source_transformation_create = {'text': _(u'Add transformation'), 'view': 'sources:setup_source_transformation_create', 'args': ['source.source_type', 'source.pk'], 'famfam': 'shape_square_add', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
setup_source_transformation_create = {'text': _(u'Add transformation'), 'view': 'sources:setup_source_transformation_create', 'args': ['source.pk'], 'famfam': 'shape_square_add', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
||||||
setup_source_transformation_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
setup_source_transformation_edit = {'text': _(u'Edit'), 'view': 'sources:setup_source_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
||||||
setup_source_transformation_delete = {'text': _(u'Delete'), 'view': 'sources:setup_source_transformation_delete', 'args': 'transformation.pk', 'famfam': 'shape_square_delete', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
setup_source_transformation_delete = {'text': _(u'Delete'), 'view': 'sources:setup_source_transformation_delete', 'args': 'transformation.pk', 'famfam': 'shape_square_delete', 'permissions': [PERMISSION_SOURCES_SETUP_EDIT]}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,201 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from south.utils import datetime_utils as datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Deleting model 'StagingFolder'
|
||||||
|
db.delete_table(u'sources_stagingfolder')
|
||||||
|
|
||||||
|
# Deleting model 'WebForm'
|
||||||
|
db.delete_table(u'sources_webform')
|
||||||
|
|
||||||
|
# Deleting model 'WatchFolder'
|
||||||
|
db.delete_table(u'sources_watchfolder')
|
||||||
|
|
||||||
|
# Deleting model 'OutOfProcess'
|
||||||
|
db.delete_table(u'sources_outofprocess')
|
||||||
|
|
||||||
|
# Adding model 'Source'
|
||||||
|
db.create_table(u'sources_source', (
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('title', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||||
|
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('whitelist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('blacklist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['Source'])
|
||||||
|
|
||||||
|
# Adding model 'InteractiveSource'
|
||||||
|
db.create_table(u'sources_interactivesource', (
|
||||||
|
(u'source_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['sources.Source'], unique=True, primary_key=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['InteractiveSource'])
|
||||||
|
|
||||||
|
# Adding model 'WatchFolderSource'
|
||||||
|
db.create_table(u'sources_watchfoldersource', (
|
||||||
|
(u'outofprocesssource_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['sources.OutOfProcessSource'], unique=True, primary_key=True)),
|
||||||
|
('folder_path', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
('delete_after_upload', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('interval', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['WatchFolderSource'])
|
||||||
|
|
||||||
|
# Adding model 'WebFormSource'
|
||||||
|
db.create_table(u'sources_webformsource', (
|
||||||
|
(u'interactivesource_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['sources.InteractiveSource'], unique=True, primary_key=True)),
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['WebFormSource'])
|
||||||
|
|
||||||
|
# Adding model 'OutOfProcessSource'
|
||||||
|
db.create_table(u'sources_outofprocesssource', (
|
||||||
|
(u'source_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['sources.Source'], unique=True, primary_key=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['OutOfProcessSource'])
|
||||||
|
|
||||||
|
# Adding model 'StagingFolderSource'
|
||||||
|
db.create_table(u'sources_stagingfoldersource', (
|
||||||
|
(u'interactivesource_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['sources.InteractiveSource'], unique=True, primary_key=True)),
|
||||||
|
('folder_path', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
|
('preview_width', self.gf('django.db.models.fields.IntegerField')()),
|
||||||
|
('preview_height', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
('delete_after_upload', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['StagingFolderSource'])
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Adding model 'StagingFolder'
|
||||||
|
db.create_table(u'sources_stagingfolder', (
|
||||||
|
('folder_path', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
('delete_after_upload', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('whitelist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('preview_height', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||||
|
('blacklist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('preview_width', self.gf('django.db.models.fields.IntegerField')()),
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('title', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||||
|
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['StagingFolder'])
|
||||||
|
|
||||||
|
# Adding model 'WebForm'
|
||||||
|
db.create_table(u'sources_webform', (
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
('whitelist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('title', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||||
|
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('blacklist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['WebForm'])
|
||||||
|
|
||||||
|
# Adding model 'WatchFolder'
|
||||||
|
db.create_table(u'sources_watchfolder', (
|
||||||
|
('blacklist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('folder_path', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
|
('title', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||||
|
('delete_after_upload', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('whitelist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('interval', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||||
|
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('uncompress', self.gf('django.db.models.fields.CharField')(max_length=1)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['WatchFolder'])
|
||||||
|
|
||||||
|
# Adding model 'OutOfProcess'
|
||||||
|
db.create_table(u'sources_outofprocess', (
|
||||||
|
('title', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||||
|
('whitelist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('enabled', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
('blacklist', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'sources', ['OutOfProcess'])
|
||||||
|
|
||||||
|
# Deleting model 'Source'
|
||||||
|
db.delete_table(u'sources_source')
|
||||||
|
|
||||||
|
# Deleting model 'InteractiveSource'
|
||||||
|
db.delete_table(u'sources_interactivesource')
|
||||||
|
|
||||||
|
# Deleting model 'WatchFolderSource'
|
||||||
|
db.delete_table(u'sources_watchfoldersource')
|
||||||
|
|
||||||
|
# Deleting model 'WebFormSource'
|
||||||
|
db.delete_table(u'sources_webformsource')
|
||||||
|
|
||||||
|
# Deleting model 'OutOfProcessSource'
|
||||||
|
db.delete_table(u'sources_outofprocesssource')
|
||||||
|
|
||||||
|
# Deleting model 'StagingFolderSource'
|
||||||
|
db.delete_table(u'sources_stagingfoldersource')
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'sources.interactivesource': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'InteractiveSource', '_ormbases': [u'sources.Source']},
|
||||||
|
u'source_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['sources.Source']", 'unique': 'True', 'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'sources.outofprocesssource': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'OutOfProcessSource', '_ormbases': [u'sources.Source']},
|
||||||
|
u'source_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['sources.Source']", 'unique': 'True', 'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'sources.source': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'Source'},
|
||||||
|
'blacklist': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'title': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||||
|
'whitelist': ('django.db.models.fields.TextField', [], {'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'sources.sourcetransformation': {
|
||||||
|
'Meta': {'ordering': "('order',)", 'object_name': 'SourceTransformation'},
|
||||||
|
'arguments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||||
|
'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'null': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'transformation': ('django.db.models.fields.CharField', [], {'max_length': '128'})
|
||||||
|
},
|
||||||
|
u'sources.stagingfoldersource': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'StagingFolderSource', '_ormbases': [u'sources.InteractiveSource']},
|
||||||
|
'delete_after_upload': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'folder_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
u'interactivesource_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['sources.InteractiveSource']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'preview_height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'preview_width': ('django.db.models.fields.IntegerField', [], {}),
|
||||||
|
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'})
|
||||||
|
},
|
||||||
|
u'sources.watchfoldersource': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'WatchFolderSource', '_ormbases': [u'sources.OutOfProcessSource']},
|
||||||
|
'delete_after_upload': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'folder_path': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'interval': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||||
|
u'outofprocesssource_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['sources.OutOfProcessSource']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'})
|
||||||
|
},
|
||||||
|
u'sources.webformsource': {
|
||||||
|
'Meta': {'ordering': "('title',)", 'object_name': 'WebFormSource', '_ormbases': [u'sources.InteractiveSource']},
|
||||||
|
u'interactivesource_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['sources.InteractiveSource']", 'unique': 'True', 'primary_key': 'True'}),
|
||||||
|
'uncompress': ('django.db.models.fields.CharField', [], {'max_length': '1'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['sources']
|
||||||
@@ -10,6 +10,8 @@ from django.core.exceptions import ValidationError
|
|||||||
from django.db import models, transaction
|
from django.db import models, transaction
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from model_utils.managers import InheritanceManager
|
||||||
|
|
||||||
from acls.utils import apply_default_acls
|
from acls.utils import apply_default_acls
|
||||||
from common.compressed_files import CompressedFile, NotACompressedFile
|
from common.compressed_files import CompressedFile, NotACompressedFile
|
||||||
from converter.api import get_available_transformations_choices
|
from converter.api import get_available_transformations_choices
|
||||||
@@ -31,12 +33,14 @@ from .managers import SourceTransformationManager
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class BaseModel(models.Model):
|
class Source(models.Model):
|
||||||
title = models.CharField(max_length=64, verbose_name=_(u'Title'))
|
title = models.CharField(max_length=64, verbose_name=_(u'Title'))
|
||||||
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'))
|
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'))
|
||||||
whitelist = models.TextField(blank=True, verbose_name=_(u'Whitelist'), editable=False)
|
whitelist = models.TextField(blank=True, verbose_name=_(u'Whitelist'), editable=False)
|
||||||
blacklist = models.TextField(blank=True, verbose_name=_(u'Blacklist'), editable=False)
|
blacklist = models.TextField(blank=True, verbose_name=_(u'Blacklist'), editable=False)
|
||||||
|
|
||||||
|
objects = InheritanceManager()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def class_fullname(cls):
|
def class_fullname(cls):
|
||||||
return unicode(dict(SOURCE_CHOICES).get(cls.source_type))
|
return unicode(dict(SOURCE_CHOICES).get(cls.source_type))
|
||||||
@@ -136,15 +140,17 @@ class BaseModel(models.Model):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('title',)
|
ordering = ('title',)
|
||||||
abstract = True
|
verbose_name = _(u'Source')
|
||||||
|
verbose_name_plural = _(u'Sources')
|
||||||
|
|
||||||
|
|
||||||
class InteractiveBaseModel(BaseModel):
|
class InteractiveSource(Source):
|
||||||
class Meta(BaseModel.Meta):
|
class Meta:
|
||||||
abstract = True
|
verbose_name = _(u'Interactive source')
|
||||||
|
verbose_name_plural = _(u'Interactive sources')
|
||||||
|
|
||||||
|
|
||||||
class StagingFolder(InteractiveBaseModel):
|
class StagingFolderSource(InteractiveSource):
|
||||||
is_interactive = True
|
is_interactive = True
|
||||||
source_type = SOURCE_CHOICE_STAGING
|
source_type = SOURCE_CHOICE_STAGING
|
||||||
|
|
||||||
@@ -172,24 +178,32 @@ class StagingFolder(InteractiveBaseModel):
|
|||||||
except OSError as exception:
|
except OSError as exception:
|
||||||
raise Exception(_(u'Unable get list of staging files: %s') % exception)
|
raise Exception(_(u'Unable get list of staging files: %s') % exception)
|
||||||
|
|
||||||
class Meta(InteractiveBaseModel.Meta):
|
class Meta:
|
||||||
verbose_name = _(u'Staging folder')
|
verbose_name = _(u'Staging folder')
|
||||||
verbose_name_plural = _(u'Staging folders')
|
verbose_name_plural = _(u'Staging folders')
|
||||||
|
|
||||||
|
|
||||||
class WebForm(InteractiveBaseModel):
|
class WebFormSource(InteractiveSource):
|
||||||
is_interactive = True
|
is_interactive = True
|
||||||
source_type = SOURCE_CHOICE_WEB_FORM
|
source_type = SOURCE_CHOICE_WEB_FORM
|
||||||
|
|
||||||
uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'Uncompress'), help_text=_(u'Whether to expand or not compressed archives.'))
|
uncompress = models.CharField(max_length=1, choices=SOURCE_INTERACTIVE_UNCOMPRESS_CHOICES, verbose_name=_(u'Uncompress'), help_text=_(u'Whether to expand or not compressed archives.'))
|
||||||
# Default path
|
# Default path
|
||||||
|
|
||||||
class Meta(InteractiveBaseModel.Meta):
|
class Meta:
|
||||||
verbose_name = _(u'Web form')
|
verbose_name = _(u'Web form')
|
||||||
verbose_name_plural = _(u'Web forms')
|
verbose_name_plural = _(u'Web forms')
|
||||||
|
|
||||||
|
|
||||||
class WatchFolder(BaseModel):
|
class OutOfProcessSource(Source):
|
||||||
|
is_interactive = False
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _(u'Out of process')
|
||||||
|
verbose_name_plural = _(u'Out of process')
|
||||||
|
|
||||||
|
|
||||||
|
class WatchFolderSource(OutOfProcessSource):
|
||||||
is_interactive = False
|
is_interactive = False
|
||||||
source_type = SOURCE_CHOICE_WATCH
|
source_type = SOURCE_CHOICE_WATCH
|
||||||
|
|
||||||
@@ -198,28 +212,14 @@ class WatchFolder(BaseModel):
|
|||||||
delete_after_upload = models.BooleanField(default=True, verbose_name=_(u'Delete after upload'), help_text=_(u'Delete the file after is has been successfully uploaded.'))
|
delete_after_upload = models.BooleanField(default=True, verbose_name=_(u'Delete after upload'), help_text=_(u'Delete the file after is has been successfully uploaded.'))
|
||||||
interval = models.PositiveIntegerField(verbose_name=_(u'Interval'), help_text=_(u'Inverval in seconds where the watch folder path is checked for new documents.'))
|
interval = models.PositiveIntegerField(verbose_name=_(u'Interval'), help_text=_(u'Inverval in seconds where the watch folder path is checked for new documents.'))
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
|
||||||
if self.pk:
|
|
||||||
remove_job(self.internal_name())
|
|
||||||
super(WatchFolder, self).save(*args, **kwargs)
|
|
||||||
self.schedule()
|
|
||||||
|
|
||||||
def schedule(self):
|
|
||||||
if self.enabled:
|
|
||||||
register_interval_job(self.internal_name(),
|
|
||||||
title=self.fullname(), func=self.execute,
|
|
||||||
kwargs={'source_id': self.pk}, seconds=self.interval
|
|
||||||
)
|
|
||||||
|
|
||||||
def execute(self, source_id):
|
def execute(self, source_id):
|
||||||
source = WatchFolder.objects.get(pk=source_id)
|
if self.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
||||||
if source.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
|
||||||
expand = True
|
expand = True
|
||||||
else:
|
else:
|
||||||
expand = False
|
expand = False
|
||||||
print 'execute: %s' % self.internal_name()
|
print 'execute: %s' % self.internal_name()
|
||||||
|
|
||||||
class Meta(BaseModel.Meta):
|
class Meta:
|
||||||
verbose_name = _(u'Watch folder')
|
verbose_name = _(u'Watch folder')
|
||||||
verbose_name_plural = _(u'Watch folders')
|
verbose_name_plural = _(u'Watch folders')
|
||||||
|
|
||||||
@@ -267,11 +267,3 @@ class SourceTransformation(models.Model):
|
|||||||
ordering = ('order',)
|
ordering = ('order',)
|
||||||
verbose_name = _(u'Document source transformation')
|
verbose_name = _(u'Document source transformation')
|
||||||
verbose_name_plural = _(u'Document source transformations')
|
verbose_name_plural = _(u'Document source transformations')
|
||||||
|
|
||||||
|
|
||||||
class OutOfProcess(BaseModel):
|
|
||||||
is_interactive = False
|
|
||||||
|
|
||||||
class Meta(BaseModel.Meta):
|
|
||||||
verbose_name = _(u'Out of process')
|
|
||||||
verbose_name_plural = _(u'Out of process')
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import logging
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from rest_framework.reverse import reverse
|
from rest_framework.reverse import reverse
|
||||||
|
|
||||||
from .models import StagingFolder
|
from .models import StagingFolderSource
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ class StagingFolderSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StagingFolder
|
model = StagingFolderSource
|
||||||
|
|
||||||
|
|
||||||
class StagingSourceFileImageSerializer(serializers.Serializer):
|
class StagingSourceFileImageSerializer(serializers.Serializer):
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from .wizards import DocumentCreateWizard
|
|||||||
urlpatterns = patterns('sources.views',
|
urlpatterns = patterns('sources.views',
|
||||||
url(r'^staging_file/(?P<staging_folder_pk>\d+)/(?P<encoded_filename>.+)/delete/$', 'staging_file_delete', name='staging_file_delete'),
|
url(r'^staging_file/(?P<staging_folder_pk>\d+)/(?P<encoded_filename>.+)/delete/$', 'staging_file_delete', name='staging_file_delete'),
|
||||||
|
|
||||||
url(r'^upload/document/new/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_interactive'),
|
url(r'^upload/document/new/interactive/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_interactive'),
|
||||||
url(r'^upload/document/new/interactive/$', 'upload_interactive', (), 'upload_interactive'),
|
url(r'^upload/document/new/interactive/$', 'upload_interactive', (), 'upload_interactive'),
|
||||||
|
|
||||||
url(r'^upload/document/(?P<document_pk>\d+)/version/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_version'),
|
url(r'^upload/document/(?P<document_pk>\d+)/version/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/$', 'upload_interactive', (), 'upload_version'),
|
||||||
@@ -24,12 +24,12 @@ urlpatterns = patterns('sources.views',
|
|||||||
url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_WATCH, 'setup_source_list', {'source_type': SOURCE_CHOICE_WATCH}, 'setup_watch_folder_list'),
|
url(r'^setup/interactive/%s/list/$' % SOURCE_CHOICE_WATCH, 'setup_source_list', {'source_type': SOURCE_CHOICE_WATCH}, 'setup_watch_folder_list'),
|
||||||
|
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/list/$', 'setup_source_list', (), 'setup_source_list'),
|
url(r'^setup/interactive/(?P<source_type>\w+)/list/$', 'setup_source_list', (), 'setup_source_list'),
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'),
|
url(r'^setup/interactive/(?P<source_id>\d+)/edit/$', 'setup_source_edit', (), 'setup_source_edit'),
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'),
|
url(r'^setup/interactive/(?P<source_id>\d+)/delete/$', 'setup_source_delete', (), 'setup_source_delete'),
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/create/$', 'setup_source_create', (), 'setup_source_create'),
|
url(r'^setup/interactive/(?P<source_type>\w+)/create/$', 'setup_source_create', (), 'setup_source_create'),
|
||||||
|
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'),
|
url(r'^setup/interactive/(?P<source_id>\d+)/transformation/list/$', 'setup_source_transformation_list', (), 'setup_source_transformation_list'),
|
||||||
url(r'^setup/interactive/(?P<source_type>\w+)/(?P<source_id>\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'),
|
url(r'^setup/interactive/(?P<source_id>\d+)/transformation/create/$', 'setup_source_transformation_create', (), 'setup_source_transformation_create'),
|
||||||
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'),
|
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/edit/$', 'setup_source_transformation_edit', (), 'setup_source_transformation_edit'),
|
||||||
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'),
|
url(r'^setup/interactive/source/transformation/(?P<transformation_id>\d+)/delete/$', 'setup_source_transformation_delete', (), 'setup_source_transformation_delete'),
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ from django.conf import settings
|
|||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.conf import settings
|
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
@@ -28,7 +27,8 @@ from .forms import (StagingDocumentForm, StagingFolderSetupForm,
|
|||||||
from .literals import (SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH,
|
from .literals import (SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH,
|
||||||
SOURCE_CHOICE_WEB_FORM, SOURCE_UNCOMPRESS_CHOICE_ASK,
|
SOURCE_CHOICE_WEB_FORM, SOURCE_UNCOMPRESS_CHOICE_ASK,
|
||||||
SOURCE_UNCOMPRESS_CHOICE_Y)
|
SOURCE_UNCOMPRESS_CHOICE_Y)
|
||||||
from .models import StagingFolder, SourceTransformation, WatchFolder, WebForm
|
from .models import (Source, StagingFolderSource, SourceTransformation,
|
||||||
|
WatchFolderSource, WebFormSource)
|
||||||
from .permissions import (PERMISSION_SOURCES_SETUP_CREATE,
|
from .permissions import (PERMISSION_SOURCES_SETUP_CREATE,
|
||||||
PERMISSION_SOURCES_SETUP_DELETE,
|
PERMISSION_SOURCES_SETUP_DELETE,
|
||||||
PERMISSION_SOURCES_SETUP_EDIT,
|
PERMISSION_SOURCES_SETUP_EDIT,
|
||||||
@@ -57,11 +57,11 @@ def return_function(obj):
|
|||||||
|
|
||||||
def get_tab_link_for_source(source, document=None):
|
def get_tab_link_for_source(source, document=None):
|
||||||
if document:
|
if document:
|
||||||
view = u'upload_version'
|
view = u'sources:upload_version'
|
||||||
args = [document.pk, u'"%s"' % source.source_type, source.pk]
|
args = [document.pk, source.pk]
|
||||||
else:
|
else:
|
||||||
view = u'sources:upload_interactive'
|
view = u'sources:upload_interactive'
|
||||||
args = [u'"%s"' % source.source_type, source.pk]
|
args = [source.pk]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'text': source.title,
|
'text': source.title,
|
||||||
@@ -75,11 +75,11 @@ def get_tab_link_for_source(source, document=None):
|
|||||||
def get_active_tab_links(document=None):
|
def get_active_tab_links(document=None):
|
||||||
tab_links = []
|
tab_links = []
|
||||||
|
|
||||||
web_forms = WebForm.objects.filter(enabled=True)
|
web_forms = WebFormSource.objects.filter(enabled=True)
|
||||||
for web_form in web_forms:
|
for web_form in web_forms:
|
||||||
tab_links.append(get_tab_link_for_source(web_form, document))
|
tab_links.append(get_tab_link_for_source(web_form, document))
|
||||||
|
|
||||||
staging_folders = StagingFolder.objects.filter(enabled=True)
|
staging_folders = StagingFolderSource.objects.filter(enabled=True)
|
||||||
for staging_folder in staging_folders:
|
for staging_folder in staging_folders:
|
||||||
tab_links.append(get_tab_link_for_source(staging_folder, document))
|
tab_links.append(get_tab_link_for_source(staging_folder, document))
|
||||||
|
|
||||||
@@ -90,7 +90,7 @@ def get_active_tab_links(document=None):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def upload_interactive(request, source_type=None, source_id=None, document_pk=None):
|
def upload_interactive(request, source_id=None, document_pk=None):
|
||||||
subtemplates_list = []
|
subtemplates_list = []
|
||||||
|
|
||||||
if document_pk:
|
if document_pk:
|
||||||
@@ -109,7 +109,7 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
context = {}
|
context = {}
|
||||||
|
|
||||||
if results[SOURCE_CHOICE_WEB_FORM].count() == 0 and results[SOURCE_CHOICE_STAGING].count() == 0:
|
if results[SOURCE_CHOICE_WEB_FORM].count() == 0 and results[SOURCE_CHOICE_STAGING].count() == 0:
|
||||||
source_setup_link = mark_safe('<a href="%s">%s</a>' % (reverse('setup_web_form_list'), ugettext(u'Here')))
|
source_setup_link = mark_safe('<a href="%s">%s</a>' % (reverse('sources:setup_web_form_list'), ugettext(u'Here')))
|
||||||
subtemplates_list.append(
|
subtemplates_list.append(
|
||||||
{
|
{
|
||||||
'name': 'main/generic_subtemplate.html',
|
'name': 'main/generic_subtemplate.html',
|
||||||
@@ -130,170 +130,115 @@ def upload_interactive(request, source_type=None, source_id=None, document_pk=No
|
|||||||
else:
|
else:
|
||||||
document_type = None
|
document_type = None
|
||||||
|
|
||||||
if source_type is None and source_id is None:
|
if source_id is None:
|
||||||
if results[SOURCE_CHOICE_WEB_FORM].count():
|
if results[SOURCE_CHOICE_WEB_FORM].count():
|
||||||
source_type = results[SOURCE_CHOICE_WEB_FORM][0].source_type
|
|
||||||
source_id = results[SOURCE_CHOICE_WEB_FORM][0].pk
|
source_id = results[SOURCE_CHOICE_WEB_FORM][0].pk
|
||||||
elif results[SOURCE_CHOICE_STAGING].count():
|
elif results[SOURCE_CHOICE_STAGING].count():
|
||||||
source_type = results[SOURCE_CHOICE_STAGING][0].source_type
|
|
||||||
source_id = results[SOURCE_CHOICE_STAGING][0].pk
|
source_id = results[SOURCE_CHOICE_STAGING][0].pk
|
||||||
|
|
||||||
if source_type and source_id:
|
if source_id:
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
|
||||||
web_form = get_object_or_404(WebForm, pk=source_id)
|
if isinstance(source, WebFormSource):
|
||||||
context['source'] = web_form
|
form_class = WebFormForm
|
||||||
if request.method == 'POST':
|
else:
|
||||||
form = WebFormForm(request.POST, request.FILES,
|
form_class = StagingDocumentForm
|
||||||
document_type=document_type,
|
|
||||||
show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
context['source'] = source
|
||||||
source=web_form,
|
|
||||||
instance=document
|
if request.method == 'POST':
|
||||||
)
|
form = form_class(request.POST, request.FILES,
|
||||||
if form.is_valid():
|
document_type=document_type,
|
||||||
try:
|
show_expand=(source.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
||||||
if document:
|
source=source,
|
||||||
expand = False
|
instance=document
|
||||||
|
)
|
||||||
|
|
||||||
|
if form.is_valid():
|
||||||
|
try:
|
||||||
|
if document:
|
||||||
|
expand = False
|
||||||
|
else:
|
||||||
|
if source.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK:
|
||||||
|
expand = form.cleaned_data.get('expand')
|
||||||
else:
|
else:
|
||||||
if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK:
|
if source.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
||||||
expand = form.cleaned_data.get('expand')
|
expand = True
|
||||||
else:
|
else:
|
||||||
if web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
expand = False
|
||||||
expand = True
|
|
||||||
else:
|
|
||||||
expand = False
|
|
||||||
|
|
||||||
new_filename = get_form_filename(form)
|
new_filename = get_form_filename(form)
|
||||||
|
|
||||||
result = web_form.upload_file(
|
if isinstance(source, WebFormSource):
|
||||||
request.FILES['file'],
|
file_object = request.FILES['file']
|
||||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
else:
|
||||||
document_type=document_type,
|
staging_file = source.get_file(encoded_filename=form.cleaned_data['staging_file_id'])
|
||||||
expand=expand,
|
file_object = staging_file.as_file()
|
||||||
metadata_dict_list=decode_metadata_from_url(request.GET),
|
|
||||||
user=request.user,
|
|
||||||
document=document,
|
|
||||||
new_version_data=form.cleaned_data.get('new_version_data'),
|
|
||||||
description=form.cleaned_data.get('description')
|
|
||||||
)
|
|
||||||
if document:
|
|
||||||
messages.success(request, _(u'New document version uploaded successfully.'))
|
|
||||||
return HttpResponseRedirect(reverse('document_version_list', args=[document.pk]))
|
|
||||||
else:
|
|
||||||
if result['is_compressed'] is None:
|
|
||||||
messages.success(request, _(u'File uploaded successfully.'))
|
|
||||||
|
|
||||||
if result['is_compressed'] is True:
|
result = source.upload_file(
|
||||||
messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.'))
|
file_object,
|
||||||
|
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
||||||
|
document_type=document_type,
|
||||||
|
expand=expand,
|
||||||
|
metadata_dict_list=decode_metadata_from_url(request.GET),
|
||||||
|
user=request.user,
|
||||||
|
document=document,
|
||||||
|
new_version_data=form.cleaned_data.get('new_version_data'),
|
||||||
|
description=form.cleaned_data.get('description')
|
||||||
|
)
|
||||||
|
|
||||||
if result['is_compressed'] is False:
|
if isinstance(source, StagingFolderSource):
|
||||||
messages.warning(request, _(u'File was not a compressed file, uploaded as it was.'))
|
if source.delete_after_upload:
|
||||||
|
|
||||||
return HttpResponseRedirect(request.get_full_path())
|
|
||||||
except NewDocumentVersionNotAllowed:
|
|
||||||
messages.error(request, _(u'New version uploads are not allowed for this document.'))
|
|
||||||
except Exception as exception:
|
|
||||||
if settings.DEBUG:
|
|
||||||
raise
|
|
||||||
messages.error(request, _(u'Unhandled exception: %s') % exception)
|
|
||||||
else:
|
|
||||||
form = WebFormForm(
|
|
||||||
show_expand=(web_form.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
|
||||||
document_type=document_type,
|
|
||||||
source=web_form,
|
|
||||||
instance=document
|
|
||||||
)
|
|
||||||
if document:
|
|
||||||
title = _(u'Upload a new version from source: %s') % web_form.title
|
|
||||||
else:
|
|
||||||
title = _(u'Upload a local document from source: %s') % web_form.title
|
|
||||||
|
|
||||||
subtemplates_list.append({
|
|
||||||
'name': 'main/generic_form_subtemplate.html',
|
|
||||||
'context': {
|
|
||||||
'form': form,
|
|
||||||
'title': title,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
|
||||||
staging_folder = get_object_or_404(StagingFolder, pk=source_id)
|
|
||||||
context['source'] = staging_folder
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
|
||||||
form = StagingDocumentForm(request.POST, request.FILES,
|
|
||||||
document_type=document_type,
|
|
||||||
show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
|
||||||
source=staging_folder,
|
|
||||||
instance=document
|
|
||||||
)
|
|
||||||
if form.is_valid():
|
|
||||||
try:
|
|
||||||
staging_file = staging_folder.get_file(encoded_filename=form.cleaned_data['staging_file_id'])
|
|
||||||
if document:
|
|
||||||
expand = False
|
|
||||||
else:
|
|
||||||
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK:
|
|
||||||
expand = form.cleaned_data.get('expand')
|
|
||||||
else:
|
|
||||||
if staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y:
|
|
||||||
expand = True
|
|
||||||
else:
|
|
||||||
expand = False
|
|
||||||
|
|
||||||
new_filename = get_form_filename(form)
|
|
||||||
|
|
||||||
result = staging_folder.upload_file(
|
|
||||||
staging_file.as_file(),
|
|
||||||
new_filename, use_file_name=form.cleaned_data.get('use_file_name', False),
|
|
||||||
document_type=document_type,
|
|
||||||
expand=expand,
|
|
||||||
metadata_dict_list=decode_metadata_from_url(request.GET),
|
|
||||||
user=request.user,
|
|
||||||
document=document,
|
|
||||||
new_version_data=form.cleaned_data.get('new_version_data'),
|
|
||||||
description=form.cleaned_data.get('description')
|
|
||||||
)
|
|
||||||
if document:
|
|
||||||
messages.success(request, _(u'Document version from staging file: %s, uploaded successfully.') % staging_file.filename)
|
|
||||||
else:
|
|
||||||
if result['is_compressed'] is None:
|
|
||||||
messages.success(request, _(u'Staging file: %s, uploaded successfully.') % staging_file.filename)
|
|
||||||
|
|
||||||
if result['is_compressed'] is True:
|
|
||||||
messages.success(request, _(u'Staging file: %s, uncompressed successfully and uploaded as individual files.') % staging_file.filename)
|
|
||||||
|
|
||||||
if result['is_compressed'] is False:
|
|
||||||
messages.warning(request, _(u'Staging file: %s, was not compressed, uploaded as a single file.') % staging_file.filename)
|
|
||||||
|
|
||||||
if staging_folder.delete_after_upload:
|
|
||||||
staging_file.delete()
|
staging_file.delete()
|
||||||
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
messages.success(request, _(u'Staging file: %s, deleted successfully.') % staging_file.filename)
|
||||||
if document:
|
|
||||||
return HttpResponseRedirect(reverse('documents:document_view_simple', args=[document.pk]))
|
if document:
|
||||||
else:
|
messages.success(request, _(u'New document version uploaded successfully.'))
|
||||||
return HttpResponseRedirect(request.get_full_path())
|
return HttpResponseRedirect(reverse('documents:document_version_list', args=[document.pk]))
|
||||||
except NewDocumentVersionNotAllowed:
|
else:
|
||||||
messages.error(request, _(u'New version uploads are not allowed for this document.'))
|
if result['is_compressed'] is None:
|
||||||
except Exception as exception:
|
messages.success(request, _(u'File uploaded successfully.'))
|
||||||
if settings.DEBUG:
|
|
||||||
raise
|
if result['is_compressed'] is True:
|
||||||
messages.error(request, _(u'Unhandled exception: %s') % exception)
|
messages.success(request, _(u'File uncompressed successfully and uploaded as individual files.'))
|
||||||
else:
|
|
||||||
form = StagingDocumentForm(document_type=document_type,
|
if result['is_compressed'] is False:
|
||||||
show_expand=(staging_folder.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
messages.warning(request, _(u'File was not a compressed file, uploaded as it was.'))
|
||||||
source=staging_folder,
|
|
||||||
instance=document
|
return HttpResponseRedirect(request.get_full_path())
|
||||||
)
|
except NewDocumentVersionNotAllowed:
|
||||||
|
messages.error(request, _(u'New version uploads are not allowed for this document.'))
|
||||||
|
except Exception as exception:
|
||||||
|
if settings.DEBUG:
|
||||||
|
raise
|
||||||
|
messages.error(request, _(u'Unhandled exception: %s') % exception)
|
||||||
|
else:
|
||||||
|
form = form_class(
|
||||||
|
show_expand=(source.uncompress == SOURCE_UNCOMPRESS_CHOICE_ASK) and not document,
|
||||||
|
document_type=document_type,
|
||||||
|
source=source,
|
||||||
|
instance=document
|
||||||
|
)
|
||||||
|
|
||||||
|
if document:
|
||||||
|
title = _(u'Upload a new version from source: %s') % source.title
|
||||||
|
else:
|
||||||
|
title = _(u'Upload a local document from source: %s') % source.title
|
||||||
|
|
||||||
|
subtemplates_list.append({
|
||||||
|
'name': 'main/generic_form_subtemplate.html',
|
||||||
|
'context': {
|
||||||
|
'form': form,
|
||||||
|
'title': title,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if isinstance(source, StagingFolderSource):
|
||||||
try:
|
try:
|
||||||
staging_filelist = list(staging_folder.get_files())
|
staging_filelist = list(source.get_files())
|
||||||
except Exception as exception:
|
except Exception as exception:
|
||||||
messages.error(request, exception)
|
messages.error(request, exception)
|
||||||
staging_filelist = []
|
staging_filelist = []
|
||||||
finally:
|
finally:
|
||||||
if document:
|
|
||||||
title = _(u'Upload a new version from staging source: %s') % staging_folder.title
|
|
||||||
else:
|
|
||||||
title = _(u'Upload a document from staging source: %s') % staging_folder.title
|
|
||||||
|
|
||||||
subtemplates_list = [
|
subtemplates_list = [
|
||||||
{
|
{
|
||||||
'name': 'main/generic_form_subtemplate.html',
|
'name': 'main/generic_form_subtemplate.html',
|
||||||
@@ -373,7 +318,7 @@ def get_form_filename(form):
|
|||||||
|
|
||||||
def staging_file_delete(request, staging_folder_pk, encoded_filename):
|
def staging_file_delete(request, staging_folder_pk, encoded_filename):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_NEW_VERSION])
|
Permission.objects.check_permissions(request.user, [PERMISSION_DOCUMENT_CREATE, PERMISSION_DOCUMENT_NEW_VERSION])
|
||||||
staging_folder = get_object_or_404(StagingFolder, pk=staging_folder_pk)
|
staging_folder = get_object_or_404(StagingFolderSource, pk=staging_folder_pk)
|
||||||
|
|
||||||
staging_file = staging_folder.get_file(encoded_filename=encoded_filename)
|
staging_file = staging_folder.get_file(encoded_filename=encoded_filename)
|
||||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
||||||
@@ -405,11 +350,11 @@ def setup_source_list(request, source_type):
|
|||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_VIEW])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_VIEW])
|
||||||
|
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||||
cls = WebForm
|
cls = WebFormSource
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
elif source_type == SOURCE_CHOICE_STAGING:
|
||||||
cls = StagingFolder
|
cls = StagingFolderSource
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
elif source_type == SOURCE_CHOICE_WATCH:
|
||||||
cls = WatchFolder
|
cls = WatchFolderSource
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'object_list': cls.objects.all(),
|
'object_list': cls.objects.all(),
|
||||||
@@ -423,20 +368,17 @@ def setup_source_list(request, source_type):
|
|||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def setup_source_edit(request, source_type, source_id):
|
def setup_source_edit(request, source_id):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||||
|
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
|
||||||
cls = WebForm
|
if isinstance(source, WebFormSource):
|
||||||
form_class = WebFormSetupForm
|
form_class = WebFormSetupForm
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
elif isinstance(source, StagingFolderSource):
|
||||||
cls = StagingFolder
|
|
||||||
form_class = StagingFolderSetupForm
|
form_class = StagingFolderSetupForm
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
elif isinstance(source, WatchFolderSource):
|
||||||
cls = WatchFolder
|
|
||||||
form_class = WatchFolderSetupForm
|
form_class = WatchFolderSetupForm
|
||||||
|
|
||||||
source = get_object_or_404(cls, pk=source_id)
|
|
||||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -458,31 +400,28 @@ def setup_source_edit(request, source_type, source_id):
|
|||||||
'navigation_object_name': 'source',
|
'navigation_object_name': 'source',
|
||||||
'next': next,
|
'next': next,
|
||||||
'object_name': _(u'Source'),
|
'object_name': _(u'Source'),
|
||||||
'source_type': source_type,
|
'source_type': source.source_type,
|
||||||
},
|
},
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def setup_source_delete(request, source_type, source_id):
|
def setup_source_delete(request, source_id):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_DELETE])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_DELETE])
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
|
||||||
cls = WebForm
|
redirect_view = reverse('sources:setup_source_list', args=[source.source_type])
|
||||||
|
|
||||||
|
if isinstance(source, WebFormSource):
|
||||||
form_icon = u'application_form_delete.png'
|
form_icon = u'application_form_delete.png'
|
||||||
redirect_view = 'setup_web_form_list'
|
redirect_view = 'sources:setup_web_form_list'
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
elif isinstance(source, StagingFolderSource):
|
||||||
cls = StagingFolder
|
|
||||||
form_icon = u'folder_delete.png'
|
form_icon = u'folder_delete.png'
|
||||||
redirect_view = 'setup_staging_folder_list'
|
redirect_view = 'sources:setup_staging_folder_list'
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
elif isinstance(source, WatchFolderSource):
|
||||||
cls = WatchFolder
|
|
||||||
form_icon = u'folder_delete.png'
|
form_icon = u'folder_delete.png'
|
||||||
redirect_view = 'setup_watch_folder_list'
|
redirect_view = 'sources:setup_watch_folder_list'
|
||||||
|
|
||||||
redirect_view = reverse('sources:setup_source_list', args=[source_type])
|
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
|
||||||
|
|
||||||
source = get_object_or_404(cls, pk=source_id)
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
try:
|
try:
|
||||||
source.delete()
|
source.delete()
|
||||||
@@ -502,7 +441,7 @@ def setup_source_delete(request, source_type, source_id):
|
|||||||
'delete_view': True,
|
'delete_view': True,
|
||||||
'previous': previous,
|
'previous': previous,
|
||||||
'form_icon': form_icon,
|
'form_icon': form_icon,
|
||||||
'source_type': source_type,
|
'source_type': source.source_type,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render_to_response('main/generic_confirm.html', context,
|
return render_to_response('main/generic_confirm.html', context,
|
||||||
@@ -513,13 +452,13 @@ def setup_source_create(request, source_type):
|
|||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_CREATE])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_CREATE])
|
||||||
|
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
if source_type == SOURCE_CHOICE_WEB_FORM:
|
||||||
cls = WebForm
|
cls = WebFormSource
|
||||||
form_class = WebFormSetupForm
|
form_class = WebFormSetupForm
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
elif source_type == SOURCE_CHOICE_STAGING:
|
||||||
cls = StagingFolder
|
cls = WebFormSource
|
||||||
form_class = StagingFolderSetupForm
|
form_class = StagingFolderSetupForm
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
elif source_type == SOURCE_CHOICE_WATCH:
|
||||||
cls = WatchFolder
|
cls = WebFormSource
|
||||||
form_class = WatchFolderSetupForm
|
form_class = WatchFolderSetupForm
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -543,17 +482,10 @@ def setup_source_create(request, source_type):
|
|||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def setup_source_transformation_list(request, source_type, source_id):
|
def setup_source_transformation_list(request, source_id):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||||
|
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
|
||||||
cls = WebForm
|
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
|
||||||
cls = StagingFolder
|
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
|
||||||
cls = WatchFolder
|
|
||||||
|
|
||||||
source = get_object_or_404(cls, pk=source_id)
|
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'object_list': SourceTransformation.transformations.get_for_object(source),
|
'object_list': SourceTransformation.transformations.get_for_object(source),
|
||||||
@@ -579,7 +511,7 @@ def setup_source_transformation_edit(request, transformation_id):
|
|||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||||
|
|
||||||
source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id)
|
source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id)
|
||||||
redirect_view = reverse('sources:setup_source_transformation_list', args=[source_transformation.content_object.source_type, source_transformation.content_object.pk])
|
redirect_view = reverse('sources:setup_source_transformation_list', args=[source_transformation.content_object.pk])
|
||||||
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view)))
|
next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -612,7 +544,7 @@ def setup_source_transformation_delete(request, transformation_id):
|
|||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||||
|
|
||||||
source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id)
|
source_transformation = get_object_or_404(SourceTransformation, pk=transformation_id)
|
||||||
redirect_view = reverse('sources:setup_source_transformation_list', args=[source_transformation.content_object.source_type, source_transformation.content_object.pk])
|
redirect_view = reverse('sources:setup_source_transformation_list', args=[source_transformation.content_object.pk])
|
||||||
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
|
previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view)))
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
@@ -642,19 +574,12 @@ def setup_source_transformation_delete(request, transformation_id):
|
|||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
|
||||||
def setup_source_transformation_create(request, source_type, source_id):
|
def setup_source_transformation_create(request, source_id):
|
||||||
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_SOURCES_SETUP_EDIT])
|
||||||
|
|
||||||
if source_type == SOURCE_CHOICE_WEB_FORM:
|
source = get_object_or_404(Source.objects.select_subclasses(), pk=source_id)
|
||||||
cls = WebForm
|
|
||||||
elif source_type == SOURCE_CHOICE_STAGING:
|
|
||||||
cls = StagingFolder
|
|
||||||
elif source_type == SOURCE_CHOICE_WATCH:
|
|
||||||
cls = WatchFolder
|
|
||||||
|
|
||||||
source = get_object_or_404(cls, pk=source_id)
|
redirect_view = reverse('sources:setup_source_transformation_list', args=[source.pk])
|
||||||
|
|
||||||
redirect_view = reverse('sources:setup_source_transformation_list', args=[source.source_type, source.pk])
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = SourceTransformationForm_create(request.POST)
|
form = SourceTransformationForm_create(request.POST)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ django-pagination==1.0.7
|
|||||||
django-compressor==1.4
|
django-compressor==1.4
|
||||||
django-cors-headers==0.13
|
django-cors-headers==0.13
|
||||||
django-taggit==0.12
|
django-taggit==0.12
|
||||||
|
django-model-utils==2.2
|
||||||
django-mptt==0.6.1
|
django-mptt==0.6.1
|
||||||
django-rest-swagger==0.1.14
|
django-rest-swagger==0.1.14
|
||||||
django-sendfile==0.3.6
|
django-sendfile==0.3.6
|
||||||
|
|||||||
Reference in New Issue
Block a user