From: nicolas neto Date: Thu, 6 Jul 2017 11:28:05 +0000 (+0200) Subject: vocabulare user/admin change X-Git-Tag: 1.6.4^2~17^2~2^2~10 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=dd464c0cf5ddd5c5718a4ad6bb347c28a3a4f64e;p=telemeta.git vocabulare user/admin change --- diff --git a/app/settings.py b/app/settings.py index d7f30355..b174104f 100644 --- a/app/settings.py +++ b/app/settings.py @@ -181,6 +181,7 @@ TEMPLATE_CONTEXT_PROCESSORS = ( "django.core.context_processors.i18n", "django.core.context_processors.media", 'django.core.context_processors.static', + 'telemeta.context_processors.menu', 'django.contrib.messages.context_processors.messages', ) diff --git a/telemeta/context_processors.py b/telemeta/context_processors.py new file mode 100644 index 00000000..a9e54cca --- /dev/null +++ b/telemeta/context_processors.py @@ -0,0 +1,5 @@ +from django.conf import settings +from telemeta.views.enum import * + +def menu(request): + return {'menu': EnumView().enu} \ No newline at end of file diff --git a/telemeta/migrations/0035_auto__chg_field_recordingcontext_notes__chg_field_recordingcontext_val.py b/telemeta/migrations/0035_auto__chg_field_recordingcontext_notes__chg_field_recordingcontext_val.py index 6e2486ff..153359e4 100644 --- a/telemeta/migrations/0035_auto__chg_field_recordingcontext_notes__chg_field_recordingcontext_val.py +++ b/telemeta/migrations/0035_auto__chg_field_recordingcontext_notes__chg_field_recordingcontext_val.py @@ -339,8 +339,7 @@ class Migration(SchemaMigration): # Changing field 'MediaItem.comment' db.alter_column('media_items', 'comment', self.gf('telemeta.models.fields.TextField')()) - # Changing field 'MediaItem.code' - db.alter_column('media_items', 'code', self.gf('telemeta.models.fields.CharField')(unique=True, max_length=250)) + # Changing field 'MediaItem.location_comment' db.alter_column('media_items', 'location_comment', self.gf('telemeta.models.fields.CharField')(max_length=250)) diff --git a/telemeta/models/enum.py b/telemeta/models/enum.py index 79a2068b..55bc50a9 100644 --- a/telemeta/models/enum.py +++ b/telemeta/models/enum.py @@ -29,6 +29,11 @@ class Enumeration(ModelCore): hidden = False value = CharField(_('value'), required=True, unique=True) notes = TextField(_('notes')) + admin = False + + def _set_admin(self): + self.admin = not self.admin + print self.admin def __unicode__(self): return self.value @@ -46,6 +51,7 @@ class PhysicalFormat(Enumeration): db_table = 'physical_formats' verbose_name = _("archive format") + class PublishingStatus(Enumeration): "Collection publishing status" @@ -53,6 +59,7 @@ class PublishingStatus(Enumeration): db_table = 'publishing_status' verbose_name = _("secondary edition") + class AcquisitionMode(Enumeration): "Mode of acquisition of the collection" @@ -60,6 +67,7 @@ class AcquisitionMode(Enumeration): db_table = 'acquisition_modes' verbose_name = _("mode of acquisition") + class MetadataAuthor(Enumeration): "Collection metadata author" @@ -67,6 +75,7 @@ class MetadataAuthor(Enumeration): db_table = 'metadata_authors' verbose_name = _("record author") + class MetadataWriter(Enumeration): "Collection metadata writer" @@ -74,6 +83,7 @@ class MetadataWriter(Enumeration): db_table = 'metadata_writers' verbose_name = _("record writer") + class LegalRight(Enumeration): "Collection legal rights" @@ -81,6 +91,7 @@ class LegalRight(Enumeration): db_table = 'legal_rights' verbose_name = _("legal rights") + class RecordingContext(Enumeration): "Collection recording context" diff --git a/telemeta/templates/telemeta/admin_enumerations.html b/telemeta/templates/telemeta/admin_enumerations.html index 4d0236a6..a6204b96 100644 --- a/telemeta/templates/telemeta/admin_enumerations.html +++ b/telemeta/templates/telemeta/admin_enumerations.html @@ -3,25 +3,44 @@ {% load i18n %} {% block title %} -

{% trans "Administration" %} > {% trans "Enumerations" %}

+

{% trans "Administration" %} > {% trans "Enumerations" %}

{% endblock %} {% block tabcontents %} -{% if enumerations %} - - - - - {% for enum in enumerations %} - - {% endfor %} - -
{% trans "Title"%}
- {% trans enum.name|capfirst %} -
- {% else %} -

{% trans "No enumerations" %}

- {% endif %} + {% if enumerations %} +
{% csrf_token %} + + + + + + + {% for enum in enumerations %} + + {% if perms.telemeta.change_keyword %} + + {% else %} + + {% endif %} + + + + {% endfor %} + +
 {% trans "Title"%}
+ {% trans enum.name|capfirst %} +
+
+
+ {% if perms.telemeta.change_keyword %} + {% trans "Hide selected items" %} + {% endif %} +
+
+ {% else %} +

{% trans "No enumerations" %}

+ {% endif %} {% endblock %} diff --git a/telemeta/templates/telemeta/base.html b/telemeta/templates/telemeta/base.html index 6a6d8102..d361183f 100644 --- a/telemeta/templates/telemeta/base.html +++ b/telemeta/templates/telemeta/base.html @@ -137,8 +137,8 @@
  • {% trans "Advanced search" %}
  • -
  • {% trans "Vocabulary" %} - {% if user.is_staff %} +
  • {% trans "Vocabulary" %} + {% if user.is_staff %} -
  • + - {% else %} + {% else %} - - {% endif %} + + {% endif %} {% if user.is_authenticated %} {% if user.is_staff or not perms.telemeta.can_not_view_users_and_profiles %} diff --git a/telemeta/templates/telemeta/enumeration.html b/telemeta/templates/telemeta/enumeration.html index 92d69fab..e9aa3a92 100644 --- a/telemeta/templates/telemeta/enumeration.html +++ b/telemeta/templates/telemeta/enumeration.html @@ -4,10 +4,11 @@ {% block head_title %}{% trans "Enumeration" %} : {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %} {% block title %} -

    {% trans "Enumerations" %}

    +

    {{ enumeration_name|capfirst }}

    {% endblock %} {% block tabcontents %} + {% if enumeration_values %} diff --git a/telemeta/urls.py b/telemeta/urls.py index 5b5436ff..f88adcbb 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -145,6 +145,7 @@ urlpatterns = patterns('', url(r'^admin/$', admin_view.admin_index, name="telemeta-admin"), url(r'^admin/general/$', admin_view.admin_general, name="telemeta-admin-general"), url(r'^admin/enumerations/$', admin_view.admin_enumerations, name="telemeta-admin-enumerations"), + url(r'^admin/enumerations/update/$', admin_view.set_admin_enumeration, name="telemeta-admin-enumerations-update"), url(r'^admin/users/$', admin_view.admin_users, name="telemeta-admin-users"), # instruments diff --git a/telemeta/views/admin.py b/telemeta/views/admin.py index c940931b..bfefdc68 100644 --- a/telemeta/views/admin.py +++ b/telemeta/views/admin.py @@ -52,9 +52,10 @@ class AdminView(object): enumerations = [] for model in models: if issubclass(model, Enumeration): - if not model.hidden: + if not model.hidden : enumerations.append({"name": model._meta.verbose_name, - "id": model._meta.module_name}) + "id": model._meta.module_name, + "admin": model.admin}) cmp = lambda obj1, obj2: unaccent_icmp(obj1['name'], obj2['name']) enumerations.sort(cmp) @@ -78,7 +79,6 @@ class AdminView(object): @method_decorator(permission_required('telemeta.change_keyword')) def edit_enumeration(self, request, enumeration_id): atr = ""; - print enumeration_id enumeration = self.__get_enumeration(enumeration_id) if enumeration == None: raise Http404 @@ -161,6 +161,26 @@ class AdminView(object): return self.edit_enumeration(request, enumeration_id) + @method_decorator(permission_required('telemeta.change_keyword')) + def set_admin_enumeration(self, request): + + if request.method == 'POST': + print request.POST.getlist('sel') + from django.db.models import get_models + models = get_models(telemeta.models) + + for model in models: + if issubclass(model, Enumeration): + if model._meta.module_name in request.POST.getlist('sel'): + print model._meta.module_name + model.admin = True + else : + print model._meta.module_name + model.admin = False + + + return self.admin_enumerations(request) + @method_decorator(permission_required('telemeta.change_keyword')) def edit_enumeration_value(self, request, enumeration_id, value_id): @@ -177,8 +197,8 @@ class AdminView(object): vars["enumeration_record"] = record vars["enumeration_records"] = enumeration.objects.all() vars['room'] = get_room(content_type=content_type, - id=record.id, - name=record.value) + id=record.id, + name=record.value) return render(request, 'telemeta/enumeration_edit_value.html', vars) @method_decorator(permission_required('telemeta.change_keyword')) diff --git a/telemeta/views/enum.py b/telemeta/views/enum.py index d6fa1c0c..aafef050 100644 --- a/telemeta/views/enum.py +++ b/telemeta/views/enum.py @@ -2,6 +2,10 @@ from telemeta.views.core import * import telemeta.models class EnumView(object): + enu = [] + + def __init__(self): + self.enu = self.__get_enumerations_list() def __get_admin_context_vars(self): return {"enumerations": self.__get_enumerations_list()} @@ -13,7 +17,7 @@ class EnumView(object): atr = ""; print enumeration_id enumeration = self.__get_enumeration(enumeration_id) - if enumeration == None: + if enumeration == None or enumeration.admin: raise Http404 vars = self.__get_admin_context_vars() vars["enumeration_id"] = enumeration._meta.module_name @@ -38,6 +42,15 @@ class EnumView(object): return render(request, 'telemeta/enumeration.html', vars) + @property + def get_enumerations_list(self): + test = { + "ceci", + "est", + "un", + "test"} + return test + def __get_enumerations_list(self): from django.db.models import get_models models = get_models(telemeta.models) @@ -45,12 +58,19 @@ class EnumView(object): enumerations = [] for model in models: if issubclass(model, Enumeration): - if not model.hidden: + + if not model.hidden and not model.admin: enumerations.append({"name": model._meta.verbose_name, - "id": model._meta.module_name}) + "id": model._meta.module_name + }) + else: + print model._meta.module_name + "____" + print model.admin cmp = lambda obj1, obj2: unaccent_icmp(obj1['name'], obj2['name']) enumerations.sort(cmp) + print enumerations + self.enu = enumerations return enumerations def __get_enumeration(self, id): @@ -95,4 +115,4 @@ class EnumView(object): lookup = "%s__exact" % atr c.append(MediaItemKeyword.objects.filter(**{lookup: enum.__getattribute__("id")}).count()) c.reverse() - return c \ No newline at end of file + return c diff --git a/telemeta/views/home.py b/telemeta/views/home.py index eee873c5..c1cb27f5 100644 --- a/telemeta/views/home.py +++ b/telemeta/views/home.py @@ -23,7 +23,7 @@ from telemeta.views.core import * from saved_searches.models import SavedSearch - +from telemeta.views.enum import * class HomeView(object): """Provide general web UI methods"""