diff --git a/mayan/apps/metadata/__init__.py b/mayan/apps/metadata/__init__.py index a18223e346..e146f9cfce 100644 --- a/mayan/apps/metadata/__init__.py +++ b/mayan/apps/metadata/__init__.py @@ -14,12 +14,10 @@ from .api import get_metadata_string from .links import (metadata_add, metadata_edit, metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove, metadata_remove, metadata_view, - setup_document_type_metadata, setup_metadata_set_create, - setup_metadata_set_delete, setup_metadata_set_edit, - setup_metadata_set_list, setup_metadata_set_members, - setup_metadata_type_create, setup_metadata_type_delete, - setup_metadata_type_edit, setup_metadata_type_list) -from .models import MetadataSet, MetadataType + setup_document_type_metadata, setup_metadata_type_create, + setup_metadata_type_delete, setup_metadata_type_edit, + setup_metadata_type_list) +from .models import MetadataType from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_REMOVE, @@ -31,11 +29,8 @@ register_links(Document, [metadata_view], menu_name='form_header') register_links(DocumentType, [setup_document_type_metadata]) register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete]) register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu') -register_links(MetadataSet, [setup_metadata_set_edit, setup_metadata_set_members, setup_metadata_set_delete]) -register_links([MetadataSet, 'metadata:setup_metadata_set_list', 'metadata:setup_metadata_set_create'], [setup_metadata_set_list, setup_metadata_set_create], menu_name='secondary_menu') register_multi_item_links(['folders:folder_view', 'indexes:index_instance_node_view', 'documents:document_type_document_list', 'search:search', 'search:results', 'linking:document_group_view', 'documents:document_list', 'documents:document_list_recent', 'tags:tag_tagged_item_list'], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove]) -register_setup(setup_metadata_set_list) register_setup(setup_metadata_type_list) class_permissions(Document, [ diff --git a/mayan/apps/metadata/admin.py b/mayan/apps/metadata/admin.py index 99acc10462..fd84212536 100644 --- a/mayan/apps/metadata/admin.py +++ b/mayan/apps/metadata/admin.py @@ -2,25 +2,17 @@ from __future__ import absolute_import from django.contrib import admin -from .models import (DocumentMetadata, DocumentTypeDefaults, MetadataSet, - MetadataSetItem, MetadataType) +from .models import DocumentMetadata, DocumentTypeDefaults, MetadataType class DocumentTypeDefaultsAdmin(admin.ModelAdmin): - filter_horizontal = ('default_metadata_sets', 'default_metadata') + filter_horizontal = ('default_metadata',) class MetadataTypeAdmin(admin.ModelAdmin): list_display = ('name', 'title', 'default', 'lookup') -class MetadataSetItemInline(admin.StackedInline): - model = MetadataSetItem - extra = 1 - classes = ('collapse-open',) - allow_add = True - - class DocumentMetadataInline(admin.StackedInline): model = DocumentMetadata extra = 0 @@ -28,10 +20,5 @@ class DocumentMetadataInline(admin.StackedInline): allow_add = False -class MetadataSetAdmin(admin.ModelAdmin): - inlines = [MetadataSetItemInline] - - admin.site.register(DocumentTypeDefaults, DocumentTypeDefaultsAdmin) -admin.site.register(MetadataSet, MetadataSetAdmin) admin.site.register(MetadataType, MetadataTypeAdmin) diff --git a/mayan/apps/metadata/forms.py b/mayan/apps/metadata/forms.py index fa5714ae21..8ec6fad0e5 100644 --- a/mayan/apps/metadata/forms.py +++ b/mayan/apps/metadata/forms.py @@ -6,7 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from common.widgets import ScrollableCheckboxSelectMultiple -from .models import DocumentTypeDefaults, MetadataSet, MetadataType +from .models import DocumentTypeDefaults, MetadataType from .settings import AVAILABLE_FUNCTIONS, AVAILABLE_MODELS, AVAILABLE_VALIDATORS @@ -87,18 +87,10 @@ class MetadataSelectionForm(forms.Form): if document_type: try: defaults = document_type.documenttypedefaults_set.get() - self.fields['metadata_sets'].initial = defaults.default_metadata_sets.all() self.fields['metadata_types'].initial = defaults.default_metadata.all() except DocumentTypeDefaults.DoesNotExist: pass - metadata_sets = forms.ModelMultipleChoiceField( - queryset=MetadataSet.objects.all(), - label=_(u'Metadata sets'), - required=False, - widget=ScrollableCheckboxSelectMultiple(attrs={'size': 10, 'class': 'choice_form'}) - ) - metadata_types = forms.ModelMultipleChoiceField( queryset=MetadataType.objects.all(), label=_(u'Metadata'), @@ -112,8 +104,3 @@ MetadataRemoveFormSet = formset_factory(MetadataRemoveForm, extra=0) class MetadataTypeForm(forms.ModelForm): class Meta: model = MetadataType - - -class MetadataSetForm(forms.ModelForm): - class Meta: - model = MetadataSet diff --git a/mayan/apps/metadata/links.py b/mayan/apps/metadata/links.py index 46df7d39d9..14e401bd87 100644 --- a/mayan/apps/metadata/links.py +++ b/mayan/apps/metadata/links.py @@ -8,10 +8,6 @@ from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW, - PERMISSION_METADATA_SET_CREATE, - PERMISSION_METADATA_SET_DELETE, - PERMISSION_METADATA_SET_EDIT, - PERMISSION_METADATA_SET_VIEW, PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE, PERMISSION_METADATA_TYPE_EDIT, @@ -28,12 +24,6 @@ metadata_multiple_remove = {'text': _(u'Remove metadata'), 'view': 'metadata:met setup_document_type_metadata = {'text': _(u'Default metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]} -setup_metadata_set_list = {'text': _(u'Metadata sets'), 'view': 'metadata:setup_metadata_set_list', 'famfam': 'table', 'icon': 'table.png', 'permissions': [PERMISSION_METADATA_SET_VIEW]} -setup_metadata_set_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_set_edit', 'args': 'object.pk', 'famfam': 'table_edit', 'permissions': [PERMISSION_METADATA_SET_EDIT]} -setup_metadata_set_members = {'text': _(u'Members'), 'view': 'metadata:setup_metadata_set_members', 'args': 'object.pk', 'famfam': 'table_link', 'permissions': [PERMISSION_METADATA_SET_EDIT]} -setup_metadata_set_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_set_delete', 'args': 'object.pk', 'famfam': 'table_delete', 'permissions': [PERMISSION_METADATA_SET_DELETE]} -setup_metadata_set_create = {'text': _(u'Create new'), 'view': 'metadata:setup_metadata_set_create', 'famfam': 'table_add', 'permissions': [PERMISSION_METADATA_SET_CREATE]} - setup_metadata_type_list = {'text': _(u'Metadata types'), 'view': 'metadata:setup_metadata_type_list', 'famfam': 'xhtml_go', 'icon': 'xhtml.png', 'permissions': [PERMISSION_METADATA_TYPE_VIEW]} setup_metadata_type_edit = {'text': _(u'Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]} setup_metadata_type_delete = {'text': _(u'Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]} diff --git a/mayan/apps/metadata/managers.py b/mayan/apps/metadata/managers.py index 95ea935014..a74372af40 100644 --- a/mayan/apps/metadata/managers.py +++ b/mayan/apps/metadata/managers.py @@ -6,8 +6,3 @@ from django.db import models class MetadataTypeManager(models.Manager): def get_by_natural_key(self, name): return self.get(name=name) - - -class MetadataSetManager(models.Manager): - def get_by_natural_key(self, title): - return self.get(title=title) diff --git a/mayan/apps/metadata/models.py b/mayan/apps/metadata/models.py index ef4593d91d..6c06809a96 100644 --- a/mayan/apps/metadata/models.py +++ b/mayan/apps/metadata/models.py @@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _ from documents.models import Document, DocumentType -from .managers import MetadataSetManager, MetadataTypeManager +from .managers import MetadataTypeManager class MetadataType(models.Model): @@ -39,43 +39,6 @@ class MetadataType(models.Model): verbose_name_plural = _(u'Metadata types') -class MetadataSet(models.Model): - """ - Define a group of metadata types - """ - title = models.CharField(max_length=48, verbose_name=_(u'Title'), unique=True) - - objects = MetadataSetManager() - - def __unicode__(self): - return self.title - - def natural_key(self): - return (self.title,) - - class Meta: - ordering = ('title',) - verbose_name = _(u'Metadata set') - verbose_name_plural = _(u'Metadata set') - - -class MetadataSetItem(models.Model): - """ - Define the set of metadata that relates to a set or group of - metadata fields - """ - # TODO: is the metadata set model really necessary? - metadata_set = models.ForeignKey(MetadataSet, verbose_name=_(u'Metadata set')) - metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'Metadata type')) - - def __unicode__(self): - return unicode(self.metadata_type) - - class Meta: - verbose_name = _(u'Metadata set item') - verbose_name_plural = _(u'Metadata set items') - - class DocumentMetadata(models.Model): """ Link a document to a specific instance of a metadata type with it's @@ -95,12 +58,10 @@ class DocumentMetadata(models.Model): class DocumentTypeDefaults(models.Model): """ - Default preselected metadata types and metadata set per document - type + Default preselected metadata types per document type """ document_type = models.ForeignKey(DocumentType, verbose_name=_(u'Document type')) - default_metadata_sets = models.ManyToManyField(MetadataSet, blank=True, verbose_name=_(u'Default metadata sets')) - default_metadata = models.ManyToManyField(MetadataType, blank=True, verbose_name=_(u'Default metadata')) + default_metadata = models.ManyToManyField(MetadataType, blank=True, verbose_name=_(u'Metadata')) def __unicode__(self): return unicode(self.document_type) diff --git a/mayan/apps/metadata/permissions.py b/mayan/apps/metadata/permissions.py index 9f6ff38a76..1ca36fe4e4 100644 --- a/mayan/apps/metadata/permissions.py +++ b/mayan/apps/metadata/permissions.py @@ -15,8 +15,3 @@ PERMISSION_METADATA_TYPE_EDIT = Permission.objects.register(metadata_setup_names PERMISSION_METADATA_TYPE_CREATE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_create', _(u'Create new metadata types')) PERMISSION_METADATA_TYPE_DELETE = Permission.objects.register(metadata_setup_namespace, 'metadata_type_delete', _(u'Delete metadata types')) PERMISSION_METADATA_TYPE_VIEW = Permission.objects.register(metadata_setup_namespace, 'metadata_type_view', _(u'View metadata types')) - -PERMISSION_METADATA_SET_EDIT = Permission.objects.register(metadata_setup_namespace, 'metadata_set_edit', _(u'Edit metadata sets')) -PERMISSION_METADATA_SET_CREATE = Permission.objects.register(metadata_setup_namespace, 'metadata_set_create', _(u'Create new metadata sets')) -PERMISSION_METADATA_SET_DELETE = Permission.objects.register(metadata_setup_namespace, 'metadata_set_delete', _(u'Delete metadata sets')) -PERMISSION_METADATA_SET_VIEW = Permission.objects.register(metadata_setup_namespace, 'metadata_set_view', _(u'View metadata sets')) diff --git a/mayan/apps/metadata/registry.py b/mayan/apps/metadata/registry.py deleted file mode 100644 index 7c95aee0a2..0000000000 --- a/mayan/apps/metadata/registry.py +++ /dev/null @@ -1,23 +0,0 @@ -from __future__ import absolute_import - -from .cleanup import cleanup - - -bootstrap_models = [ - { - 'name': 'metadatatype', - }, - { - 'name': 'metadataset', - 'dependencies': ['metadata.metadatatype'] - }, - { - 'name': 'metadatasetitem', - 'dependencies': ['metadata.metadataset'] - }, - { - 'name': 'documenttypedefaults', - 'dependencies': ['documents.documenttype'] - }, -] -cleanup_functions = [cleanup] diff --git a/mayan/apps/metadata/south_migrations/0004_auto__del_metadataset__del_metadatasetitem__chg_field_documentmetadata.py b/mayan/apps/metadata/south_migrations/0004_auto__del_metadataset__del_metadatasetitem__chg_field_documentmetadata.py new file mode 100644 index 0000000000..c0e68e8214 --- /dev/null +++ b/mayan/apps/metadata/south_migrations/0004_auto__del_metadataset__del_metadatasetitem__chg_field_documentmetadata.py @@ -0,0 +1,91 @@ +# -*- 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 'MetadataSet' + db.delete_table(u'metadata_metadataset') + + # Deleting model 'MetadataSetItem' + db.delete_table(u'metadata_metadatasetitem') + + # Removing M2M table for field default_metadata_sets on 'DocumentTypeDefaults' + db.delete_table(db.shorten_name(u'metadata_documenttypedefaults_default_metadata_sets')) + + + # Changing field 'DocumentMetadata.value' + db.alter_column(u'metadata_documentmetadata', 'value', self.gf('django.db.models.fields.CharField')(max_length=255)) + + def backwards(self, orm): + # Adding model 'MetadataSet' + db.create_table(u'metadata_metadataset', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('title', self.gf('django.db.models.fields.CharField')(max_length=48, unique=True)), + )) + db.send_create_signal('metadata', ['MetadataSet']) + + # Adding model 'MetadataSetItem' + db.create_table(u'metadata_metadatasetitem', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('metadata_set', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.MetadataSet'])), + ('metadata_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.MetadataType'])), + )) + db.send_create_signal('metadata', ['MetadataSetItem']) + + # Adding M2M table for field default_metadata_sets on 'DocumentTypeDefaults' + m2m_table_name = db.shorten_name(u'metadata_documenttypedefaults_default_metadata_sets') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('documenttypedefaults', models.ForeignKey(orm['metadata.documenttypedefaults'], null=False)), + ('metadataset', models.ForeignKey(orm['metadata.metadataset'], null=False)) + )) + db.create_unique(m2m_table_name, ['documenttypedefaults_id', 'metadataset_id']) + + + # Changing field 'DocumentMetadata.value' + db.alter_column(u'metadata_documentmetadata', 'value', self.gf('django.db.models.fields.CharField')(max_length=256)) + + models = { + u'documents.document': { + 'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'}, + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'documents'", 'to': u"orm['documents.DocumentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'uuid': ('django.db.models.fields.CharField', [], {'max_length': '48', 'blank': 'True'}) + }, + u'documents.documenttype': { + 'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}), + 'ocr': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'metadata.documentmetadata': { + 'Meta': {'object_name': 'DocumentMetadata'}, + 'document': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'metadata'", 'to': u"orm['documents.Document']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'metadata_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['metadata.MetadataType']"}), + 'value': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'blank': 'True'}) + }, + u'metadata.documenttypedefaults': { + 'Meta': {'object_name': 'DocumentTypeDefaults'}, + 'default_metadata': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['metadata.MetadataType']", 'symmetrical': 'False', 'blank': 'True'}), + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['documents.DocumentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + u'metadata.metadatatype': { + 'Meta': {'ordering': "('title',)", 'object_name': 'MetadataType'}, + 'default': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lookup': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '48'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '48', 'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['metadata'] \ No newline at end of file diff --git a/mayan/apps/metadata/urls.py b/mayan/apps/metadata/urls.py index 8fc460f0be..12071cd75c 100644 --- a/mayan/apps/metadata/urls.py +++ b/mayan/apps/metadata/urls.py @@ -17,12 +17,6 @@ urlpatterns = patterns('metadata.views', url(r'^setup/type/(?P\d+)/edit/$', 'setup_metadata_type_edit', (), 'setup_metadata_type_edit'), url(r'^setup/type/(?P\d+)/delete/$', 'setup_metadata_type_delete', (), 'setup_metadata_type_delete'), - url(r'^setup/set/list/$', 'setup_metadata_set_list', (), 'setup_metadata_set_list'), - url(r'^setup/set/create/$', 'setup_metadata_set_create', (), 'setup_metadata_set_create'), - url(r'^setup/set/(?P\d+)/edit/$', 'setup_metadata_set_edit', (), 'setup_metadata_set_edit'), - url(r'^setup/set/(?P\d+)/members/$', 'setup_metadata_set_members', (), 'setup_metadata_set_members'), - url(r'^setup/set/(?P\d+)/delete/$', 'setup_metadata_set_delete', (), 'setup_metadata_set_delete'), - url(r'^setup/document/type/(?P\d+)/metadata/default/edit/$', 'setup_document_type_metadata', (), 'setup_document_type_metadata'), ) diff --git a/mayan/apps/metadata/views.py b/mayan/apps/metadata/views.py index 616954de75..b67eb41628 100644 --- a/mayan/apps/metadata/views.py +++ b/mayan/apps/metadata/views.py @@ -20,17 +20,12 @@ from common.views import assign_remove from .api import save_metadata_list from .classes import MetadataObjectWrapper from .forms import (AddMetadataForm, MetadataFormSet, MetadataRemoveFormSet, - MetadataSetForm, MetadataTypeForm) -from .models import (DocumentMetadata, DocumentTypeDefaults, MetadataSet, - MetadataSetItem, MetadataType) + MetadataTypeForm) +from .models import DocumentMetadata, DocumentTypeDefaults, MetadataType from .permissions import (PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT, PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW, - PERMISSION_METADATA_SET_CREATE, - PERMISSION_METADATA_SET_DELETE, - PERMISSION_METADATA_SET_EDIT, - PERMISSION_METADATA_SET_VIEW, PERMISSION_METADATA_TYPE_CREATE, PERMISSION_METADATA_TYPE_DELETE, PERMISSION_METADATA_TYPE_EDIT, @@ -383,197 +378,43 @@ def setup_metadata_type_delete(request, metadatatype_id): context_instance=RequestContext(request)) -def setup_metadata_set_list(request): - Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_VIEW]) - - context = { - 'object_list': MetadataSet.objects.all(), - 'title': _(u'Metadata sets'), - 'hide_link': True, - 'extra_columns': [ - { - 'name': _(u'Members'), - 'attribute': encapsulate(lambda x: x.metadatasetitem_set.count()), - }, - ] - } - - return render_to_response('main/generic_list.html', context, - context_instance=RequestContext(request)) - - -def setup_metadata_set_edit(request, metadata_set_id): - Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_TYPE_EDIT]) - - metadata_set = get_object_or_404(MetadataSet, pk=metadata_set_id) - - if request.method == 'POST': - form = MetadataSetForm(instance=metadata_set, data=request.POST) - if form.is_valid(): - try: - form.save() - messages.success(request, _(u'Metadata set edited successfully')) - return HttpResponseRedirect(reverse('metadata:setup_metadata_set_list')) - except Exception as exception: - messages.error(request, _(u'Error editing metadata set; %s') % exception) - pass - else: - form = MetadataSetForm(instance=metadata_set) - - return render_to_response('main/generic_form.html', { - 'title': _(u'Edit metadata set: %s') % metadata_set, - 'form': form, - 'object': metadata_set, - 'object_name': _(u'Metadata set'), - }, context_instance=RequestContext(request)) - - -def get_set_members(metadata_set): - return [item.metadata_type for item in metadata_set.metadatasetitem_set.all()] - - -def get_non_set_members(metadata_set): - return MetadataType.objects.exclude(pk__in=[member.pk for member in get_set_members(metadata_set)]) - - -def add_set_member(metadata_set, selection): - model, pk = selection.split(u',') - metadata_type = get_object_or_404(MetadataType, pk=pk) - new_member, created = MetadataSetItem.objects.get_or_create(metadata_set=metadata_set, metadata_type=metadata_type) - if not created: - raise Exception - - -def remove_set_member(metadata_set, selection): - model, pk = selection.split(u',') - metadata_type = get_object_or_404(MetadataType, pk=pk) - member = MetadataSetItem.objects.get(metadata_type=metadata_type, metadata_set=metadata_set) - member.delete() - - -def setup_metadata_set_members(request, metadata_set_id): - Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_EDIT]) - - metadata_set = get_object_or_404(MetadataSet, pk=metadata_set_id) - - return assign_remove( - request, - left_list=lambda: generate_choices_w_labels(get_non_set_members(metadata_set), display_object_type=False), - right_list=lambda: generate_choices_w_labels(get_set_members(metadata_set), display_object_type=False), - add_method=lambda x: add_set_member(metadata_set, x), - remove_method=lambda x: remove_set_member(metadata_set, x), - left_list_title=_(u'Non members of metadata set: %s') % metadata_set, - right_list_title=_(u'Members of metadata set: %s') % metadata_set, - extra_context={ - 'object': metadata_set, - 'object_name': _(u'Metadata set'), - } - ) - - -def setup_metadata_set_create(request): - Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_CREATE]) - - if request.method == 'POST': - form = MetadataSetForm(request.POST) - if form.is_valid(): - form.save() - messages.success(request, _(u'Metadata set created successfully')) - return HttpResponseRedirect(reverse('metadata:setup_metadata_set_list')) - else: - form = MetadataSetForm() - - return render_to_response('main/generic_form.html', { - 'title': _(u'Create metadata set'), - 'form': form, - }, context_instance=RequestContext(request)) - - -def setup_metadata_set_delete(request, metadata_set_id): - Permission.objects.check_permissions(request.user, [PERMISSION_METADATA_SET_DELETE]) - - metadata_set = get_object_or_404(MetadataSet, pk=metadata_set_id) - - post_action_redirect = reverse('metadata:setup_metadata_set_list') - - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', post_action_redirect))) - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', post_action_redirect))) - - if request.method == 'POST': - try: - metadata_set.delete() - messages.success(request, _(u'Metadata set: %s deleted successfully.') % metadata_set) - return HttpResponseRedirect(post_action_redirect) - except Exception as exception: - messages.error(request, _(u'Metadata set: %(metadata_set)s delete error: %(error)s') % { - 'metadata_set': metadata_set, 'error': exception}) - return HttpResponseRedirect(previous) - - context = { - 'object_name': _(u'Metadata set'), - 'delete_view': True, - 'next': next, - 'previous': previous, - 'object': metadata_set, - 'title': _(u'Are you sure you wish to delete the metadata set: %s?') % metadata_set, - 'form_icon': u'application_form_delete.png', - } - - return render_to_response('main/generic_confirm.html', context, - context_instance=RequestContext(request)) - - def _as_choice_list(items): return sorted([(MetadataObjectWrapper.encapsulate(item).gid, get_object_name(item, display_object_type=False)) for item in items], key=lambda x: x[1]) def get_document_type_metadata_non_members(document_type): - metadata_types, metadata_sets = get_document_type_metadata_members(document_type, separate=True) + metadata_types = get_document_type_metadata_members(document_type, separate=True) metadata_types = set(MetadataType.objects.all()) - set(metadata_types) - metadata_sets = set(MetadataSet.objects.all()) - set(metadata_sets) non_members = [] if metadata_types: non_members.append((_(u'Metadata types'), _as_choice_list(list(metadata_types)))) - if metadata_sets: - non_members.append((_(u'Metadata sets'), _as_choice_list(list(metadata_sets)))) - return non_members def get_document_type_metadata_members(document_type, separate=False): metadata_types = set(document_type.documenttypedefaults_set.get().default_metadata.all()) - metadata_sets = set(document_type.documenttypedefaults_set.get().default_metadata_sets.all()) if separate: - return metadata_types, metadata_sets + return metadata_types else: members = [] if metadata_types: members.append((_(u'Metadata types'), _as_choice_list(list(metadata_types)))) - if metadata_sets: - members.append((_(u'Metadata sets'), _as_choice_list(list(metadata_sets)))) - return members def add_document_type_metadata(document_type, selection): metadata_object = MetadataObjectWrapper.get(selection).source_object - try: - document_type.documenttypedefaults_set.get().default_metadata.add(metadata_object) - except TypeError: - document_type.documenttypedefaults_set.get().default_metadata_sets.add(metadata_object) + document_type.documenttypedefaults_set.get().default_metadata.add(metadata_object) def remove_document_type_metadata(document_type, selection): metadata_object = MetadataObjectWrapper.get(selection).source_object - if isinstance(metadata_object, MetadataType): - document_type.documenttypedefaults_set.get().default_metadata.remove(metadata_object) - else: - document_type.documenttypedefaults_set.get().default_metadata_sets.remove(metadata_object) + document_type.documenttypedefaults_set.get().default_metadata.remove(metadata_object) def setup_document_type_metadata(request, document_type_id): diff --git a/mayan/apps/sources/wizards.py b/mayan/apps/sources/wizards.py index 06d25759db..59ba90b755 100644 --- a/mayan/apps/sources/wizards.py +++ b/mayan/apps/sources/wizards.py @@ -22,7 +22,7 @@ class DocumentCreateWizard(MayanPermissionCheckMixin, SessionWizardView): def has_metadata_types(wizard): # Skip the 3rd step if no metadata types or sets are selected try: - return wizard.get_cleaned_data_for_step('1')['metadata_sets'] or wizard.get_cleaned_data_for_step('1')['metadata_types'] + return wizard.get_cleaned_data_for_step('1')['metadata_types'] except TypeError: return False @@ -34,14 +34,6 @@ class DocumentCreateWizard(MayanPermissionCheckMixin, SessionWizardView): 'metadata_type': metadata_type, }) - for metadata_set in self.get_cleaned_data_for_step('1')['metadata_sets']: - for metadata_set_item in metadata_set.metadatasetitem_set.all(): - data = { - 'metadata_type': metadata_set_item.metadata_type, - } - if data not in initial: - initial.append(data) - return initial def __init__(self, *args, **kwargs):