]> git.parisson.com Git - telemeta.git/commitdiff
- the media objects ID regex is now in the models, following DRY (see urls)
authorolivier <>
Fri, 18 May 2007 10:28:50 +0000 (10:28 +0000)
committerolivier <>
Fri, 18 May 2007 10:28:50 +0000 (10:28 +0000)
- media objects IDs are now validated at model level
- experimenting new logo by Julia
- trying some new layout + cleaned css
- renamed "dictionaries" to "enumerations"
- new PublishingStatus enumerations model (you simply need to syncdb)

telemeta/htdocs/css/telemeta.css
telemeta/htdocs/images/logo.png
telemeta/models.py
telemeta/templates/admin.html
telemeta/templates/base.html
telemeta/templates/dictionary_edit.html [deleted file]
telemeta/templates/dictionary_edit_value.html [deleted file]
telemeta/templates/enumeration_edit.html [new file with mode: 0644]
telemeta/templates/enumeration_edit_value.html [new file with mode: 0644]
telemeta/urls.py
telemeta/views/web.py

index 08aaed8b8861f930ba5f43f4086262575affed12..b21658f79a7f8b1efdf2fabf0f85cf990567fa58 100644 (file)
@@ -1,7 +1,4 @@
-body {
-    font-family: Verdana;
-    font-size: 80%;
-}
+body { font-family: Verdana; font-size: 80%; }
 
 a:link, a:visited {
     border-bottom:1px dotted #BBBBBB;
@@ -9,51 +6,35 @@ a:link, a:visited {
     text-decoration:none;
 }
 
-a:link:hover, a:visited:hover {
-    background-color:#EEEEEE;
-    color:#555555;
-}
+a:link:hover, a:visited:hover { background-color:#EEEEEE; color:#555555; }
+a img { border: none; }
 
 #header {
-    border-bottom: solid 1px black;
     padding-bottom: 0.2em;
     padding-top: 0.2em;
 }
-#header a {
-    text-decoration: none;
-}
-#header a img {
-    border: none;
-}
-
-
-#menu {
-    text-align: right;
-    clear: right;
-}
 
-#submenu {
-    clear: right;
-    float: right;
-    padding-top: 1em;
-}
-#submenu a {
-    color: #000066;
-}
+#logo { padding-top: 1ex; }
+#logo a, #logo a:hover { border: none; background: transparent; }
 
-#quick_search {
-    position: absolute;
-    top: 2em;
-    right: 1em;
+#menu a, #menu a:hover { border: none;}
+#menu { 
+    text-align: right; 
+    clear: right; 
+    background: #DDDDDD; 
+    padding: 1px;
+    border-bottom: solid 1px black;
 }
+#submenu { clear: right; float: right; padding-top: 1em; }
+#submenu a { color: #000066; }
 
+#quick_search { position: absolute; top: 2em; right: 1em; }
 #quick_search input {
     vertical-align: middle;
     font-size: 90%;
 }
 
-#quick_search_pattern {
-}
+#quick_search_pattern { }
 
 .item_visualization {
   clear: right;
@@ -61,14 +42,8 @@ a:link:hover, a:visited:hover {
   padding: 1ex;
   margin-top: 1em;
 }
-.item_visualization select {
-  width: 200px;
-}
-
-.item_visualization img {
-  width: 300px;
-  border: solid 1px black;
-}
+.item_visualization select { width: 200px; }
+.item_visualization img { width: 300px; border: solid 1px black; }
 
 
 /* Styles for tabular listings (stolen from trac) */
@@ -163,6 +138,4 @@ label.disabled { color: #d7d7d7 }
 
 /* HTML dublin core display */
 
-table.dublincore {
-    width: auto;
-}
+table.dublincore { width: auto; }
index 0041d069d31db635cb6fed3dee5193e6bef76092..b99eb35568d7ebf93fab1099545ac736292724e3 100644 (file)
Binary files a/telemeta/htdocs/images/logo.png and b/telemeta/htdocs/images/logo.png differ
index 067dc2ce00daaf63abcb955453fb993537a7ad3e..f2d47579f24f06594d90bfafb6e3fd494311fc63 100644 (file)
@@ -7,13 +7,18 @@
 #
 # Author: Olivier Guilyardi <olivier@samalyse.com>
 
-import telemeta
 from django.db import models
 from django.db.models import Q
-from telemeta.core import *
 from django.core.exceptions import ObjectDoesNotExist
+from django.core import validators
+
+import telemeta
+from telemeta.core import *
 from telemeta import dublincore as dc
 
+# Regular (sub) expression for matching/validating media objects IDs
+media_id_regex = r'[0-9A-Za-z._:%?-]+'
+
 class MediaModel(Component):
     pass
 
@@ -25,27 +30,22 @@ class MediaCore:
             fields_dict[field.name] = getattr(self, field.name)
         return fields_dict
 
-#    def dc_elements(self):        
-#        """Return model fields mapped to Dublin Core elements, as a dict of 
-#        the form: {dc_element_name: [value1, value2, ....], ...}
-#        """
-#        fields_dict = {}
-#        for field in self._meta.fields:
-#            if (hasattr(field, 'dc_element')):
-#                if fields_dict.has_key(field.dc_element):
-#                    fields_dict[field.dc_element].append(getattr(self, field.name))
-#                else:
-#                    fields_dict[field.dc_element] = [getattr(self, field.name)]
-#                    
-#        return fields_dict
-
 class PhysicalFormat(models.Model):
     value = models.CharField(maxlength=250)
-    is_dictionary = True
+    is_enumeration = True
+    def __str__(self):
+        return self.value
+    class Meta:
+        ordering = ['value']
+        
+class PublishingStatus(models.Model):
+    value = models.CharField(maxlength=250)
+    is_enumeration = True
     def __str__(self):
         return self.value
     class Meta:
         ordering = ['value']
+        verbose_name_plural = "Publishing status"
         
 class MediaCollectionManager(models.Manager):
     def quick_search(self, pattern):
@@ -55,20 +55,22 @@ class MediaCollectionManager(models.Manager):
             Q(creator__icontains=pattern)
         )
 
-
 class MediaCollection(models.Model, MediaCore):
     "Group related media items"
 
+    id_regex = media_id_regex
+    id_validator = validators.MatchesRegularExpression('^' + id_regex + '$')
+
     publisher_reference = models.CharField(maxlength=250, blank=True)
     physical_format = models.CharField(maxlength=250, blank=True)
     id = models.CharField(maxlength=250, primary_key=True, 
-        verbose_name='identifier')
+        verbose_name='identifier', validator_list=[id_validator])
     title = models.CharField(maxlength=250)
     native_title = models.CharField(maxlength=250, blank=True)
     physical_items_num = models.CharField(maxlength=250, blank=True) 
     publishing_status = models.CharField(maxlength=250, blank=True)
-    is_original = models.CharField(maxlength=250)
-    is_full_copy = models.CharField(maxlength=250)
+    is_original = models.CharField(maxlength=250, blank=True)
+    is_full_copy = models.CharField(maxlength=250, blank=True)
     copied_from = models.ForeignKey('self', null=True, blank=True)
     creator = models.CharField(maxlength=250)
     booklet_writer = models.CharField(maxlength=250, blank=True)
@@ -146,12 +148,15 @@ class MediaItemManager(models.Manager):
 class MediaItem(models.Model, MediaCore):
     "Describe a item with metadata" 
 
+    id_regex = media_id_regex
+    id_validator = validators.MatchesRegularExpression('^' + id_regex + '$')
+
     ref = models.CharField(maxlength=250, blank=True)
     format = models.CharField(maxlength=250, blank=True)
     collection = models.ForeignKey(MediaCollection, related_name="items")
     face_plage = models.CharField(maxlength=250, blank=True)
     id = models.CharField(maxlength=250, primary_key=True, 
-        verbose_name='identifier')
+        verbose_name='identifier', validator_list=[id_validator])
     duree = models.CharField(maxlength=250, blank=True)
     dates_enregistr = models.CharField(maxlength=250, blank=True)
     etat = models.CharField(maxlength=250, blank=True)
index 8de5c33a38696a237ed72c3bf74742999a07c176..171f5a315116987e8d6e72c4cf8436b3ae73c54b 100644 (file)
 <ul>
 <li>Users</li>
 
-{% if dictionaries %}
-    <li>Dictionaries
+{% if enumerations %}
+    <li>Enumerations
     <ul>
-    {% for d in dictionaries %}
-        {%ifequal d.id dictionary_id %}
-            <li class="active">{{ d.name|capfirst }}</li>
+    {% for enum in enumerations %}
+        {%ifequal enum.id enumeration_id %}
+            <li class="active">{{ enum.name|capfirst }}</li>
         {%else%}
-            <li><a href="{% url telemeta-dictionary-edit d.id %}">{{ d.name|capfirst }}</a></li>
+            <li><a href="{% url telemeta-enumeration-edit enum.id %}">
+                {{ enum.name|capfirst }}</a></li>
         {%endifequal%}
     {% endfor %}
     </ul>
 </div>
 <div class="tabcontents">
     {% block tabcontents %}
-    
-    
-    
-    
-    
     {% endblock %}
 </div>
 {% endblock %}
index 5f3c6626b034be45aa8fb01b60e8f2aa001ded4f..7ed55b94a3e31604b26055a3e96a605d34cca560 100644 (file)
@@ -13,7 +13,9 @@
 {% endif %}
 -->
 <div id="header">
-<a href="/"><img src="/images/logo.png"></a>
+<div id="logo">
+<a href="{% url telemeta-home %}"><img src="/images/logo.png"></a>
+</div>
 
 <div id="quick_search">
 <form action="{% url telemeta-quicksearch %}" method="GET">
diff --git a/telemeta/templates/dictionary_edit.html b/telemeta/templates/dictionary_edit.html
deleted file mode 100644 (file)
index 93072dc..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{% extends "admin.html" %}
-
-{% block tabcontents %}
-    <h4>Manage {{ dictionary_name_plural|capfirst }}</h4>
-
-
-
- <form class="addnew" id="addenum" method="post"
-        action="{% url telemeta-dictionary-add dictionary_id %}">
-  <fieldset>
-   <legend>Add {{ dictionary_name|capfirst }}</legend>
-   <div class="field">
-    <label>Value: <input type="text" name="value"></label>
-
-   </div>
-   <div class="buttons">
-    <input type="submit" name="add" value="Add">
-   </div>
-  </fieldset>
- </form>
- {% if dictionary_values %}
- <form method="POST" action="{% url telemeta-dictionary-update dictionary_id %}">
-  <table class="listing">
-   <thead>
-    <tr><th class="sel">&nbsp;</th><th>Value</th>
-
-    </tr>
-   </thead><tbody>
-    {% for record in dictionary_values %}
-    <tr>
-     <td><input type="checkbox" name="sel" value="{{record.id}}" /></td>
-     <td><a href="{% url telemeta-dictionary-record-edit dictionary_id,record.id %}">
-        {{record.value}}</a></td>
-    </tr>
-    {% endfor %}
-    </tbody>
-  </table>
-  <div class="buttons">
-   <input type="submit" name="remove" value="Remove selected items" />
-  </div>
- </form>
- {% else %}
-    <p class="help">This dictionary is empty.</p>
- {% endif %}
-
-  <br style="clear: right"/>
-
-{% endblock %}
diff --git a/telemeta/templates/dictionary_edit_value.html b/telemeta/templates/dictionary_edit_value.html
deleted file mode 100644 (file)
index 3c6b749..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "admin.html" %}
-
-{% block tabcontents %}
-    <h4>Manage {{ dictionary_name_plural|capfirst }}</h4>
-
- <form class="mod" id="addenum" method="post"
-        action="{% url telemeta-dictionary-record-update dictionary_id,dictionary_record.id %}">
-  <fieldset>
-   <legend>Modify {{ dictionary_name|capfirst }}</legend>
-   <div class="field">
-    <label>Value: <input type="text" name="value" value="{{dictionary_record.value}}" /></label>
-
-   </div>
-   <div class="buttons">
-    <input type="submit" name="save" value="Save">
-    <input type="submit" name="cancel" value="Cancel">
-   </div>
-  </fieldset>
- </form>
-  <br style="clear: right"/>
-
-{% endblock %}
diff --git a/telemeta/templates/enumeration_edit.html b/telemeta/templates/enumeration_edit.html
new file mode 100644 (file)
index 0000000..8a42653
--- /dev/null
@@ -0,0 +1,47 @@
+{% extends "admin.html" %}
+
+{% block tabcontents %}
+    <h4>Manage {{ enumeration_name_plural|capfirst }}</h4>
+
+
+
+ <form class="addnew" id="addenum" method="post"
+        action="{% url telemeta-enumeration-add enumeration_id %}">
+  <fieldset>
+   <legend>Add {{ enumeration_name|capfirst }}</legend>
+   <div class="field">
+    <label>Value: <input type="text" name="value"></label>
+
+   </div>
+   <div class="buttons">
+    <input type="submit" name="add" value="Add">
+   </div>
+  </fieldset>
+ </form>
+ {% if enumeration_values %}
+ <form method="POST" action="{% url telemeta-enumeration-update enumeration_id %}">
+  <table class="listing">
+   <thead>
+    <tr><th class="sel">&nbsp;</th><th>Value</th>
+
+    </tr>
+   </thead><tbody>
+    {% for record in enumeration_values %}
+    <tr>
+     <td><input type="checkbox" name="sel" value="{{record.id}}" /></td>
+     <td><a href="{% url telemeta-enumeration-record-edit enumeration_id,record.id %}">
+        {{record.value}}</a></td>
+    </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+  <div class="buttons">
+   <input type="submit" name="remove" value="Remove selected items" />
+  </div>
+ </form>
+ {% else %}
+    <p class="help">This enumeration is empty.</p>
+ {% endif %}
+
+  <br style="clear: right"/>
+{% endblock %}
diff --git a/telemeta/templates/enumeration_edit_value.html b/telemeta/templates/enumeration_edit_value.html
new file mode 100644 (file)
index 0000000..b574a1b
--- /dev/null
@@ -0,0 +1,22 @@
+{% extends "admin.html" %}
+
+{% block tabcontents %}
+    <h4>Manage {{ enumeration_name_plural|capfirst }}</h4>
+
+ <form class="mod" id="addenum" method="post"
+    action="{% url telemeta-enumeration-record-update enumeration_id,enumeration_record.id %}">
+  <fieldset>
+   <legend>Modify {{ enumeration_name|capfirst }}</legend>
+   <div class="field">
+    <label>Value: <input type="text" name="value" value="{{enumeration_record.value}}" /></label>
+
+   </div>
+   <div class="buttons">
+    <input type="submit" name="save" value="Save">
+    <input type="submit" name="cancel" value="Cancel">
+   </div>
+  </fieldset>
+ </form>
+  <br style="clear: right"/>
+
+{% endblock %}
index 582cbc92584b6b8aa9fc808046632f4066828227..ed316240316047df07541b78ebc0d6aad8300431 100644 (file)
@@ -20,25 +20,29 @@ web_view = WebView(comp_mgr)
 all_items = { 'queryset': MediaItem.objects.all(), }
 all_collections = { 'queryset': MediaCollection.objects.all(), }
 
+# ID's regular expressions
+i_ex = MediaItem.id_regex
+c_ex = MediaCollection.id_regex
+
 urlpatterns = patterns('',
-    (r'^$', web_view.index),
+    url(r'^$', web_view.index, name="telemeta-home"),
 
     # items
     url(r'^items/$', 'django.views.generic.list_detail.object_list', 
         dict(all_items, paginate_by=20, template_name="mediaitem_list.html"),
         name="telemeta-items"),
-    url(r'^items/(?P<item_id>[0-9A-Z._:%?-]+)/$', web_view.item_detail, 
+    url(r'^items/(?P<item_id>' + i_ex + ')/$', web_view.item_detail, 
         name="telemeta-item-detail"),
-    url(r'^items/(?P<item_id>[0-9A-Z._:%?-]+)/dc/$', web_view.item_detail, 
+    url(r'^items/(?P<item_id>' + i_ex + ')/dc/$', web_view.item_detail, 
         {'template': 'mediaitem_detail_dc.html'},
         name="telemeta-item-dublincore"),
-    url(r'^items/(?P<item_id>[0-9A-Z._:%?-]+)/dc/xml/$', web_view.item_detail, 
+    url(r'^items/(?P<item_id>' + i_ex + ')/dc/xml/$', web_view.item_detail, 
         {'format': 'dublin_core_xml'},
         name="telemeta-item-dublincore-xml"),
-    url(r'^items/(?P<item_id>[0-9A-Z._:%?-]+)/download/(?P<format>[0-9A-Z]+)/$', 
+    url(r'^items/(?P<item_id>' + i_ex + ')/download/(?P<format>[0-9A-Z]+)/$', 
         web_view.item_export,
         name="telemeta-item-export"),
-    url(r'^items/(?P<item_id>[0-9A-Z._:%?-]+)/visualize/(?P<visualizer_id>[0-9a-z]+)/$', 
+    url(r'^items/(?P<item_id>' + i_ex + ')/visualize/(?P<visualizer_id>[0-9a-z]+)/$', 
         web_view.item_visualize,
         name="telemeta-item-visualize"),
 
@@ -50,11 +54,11 @@ urlpatterns = patterns('',
     url(r'^collections/?page=(?P<page>[0-9]+)$', 
         'django.views.generic.list_detail.object_list',
         dict(all_collections, paginate_by=20)),
-    url(r'^collections/(?P<object_id>[0-9A-Z._%?-]+)/$', 
+    url(r'^collections/(?P<object_id>' + c_ex + ')/$', 
         'django.views.generic.list_detail.object_detail',
         dict(all_collections, template_name="collection_detail.html"),
         name="telemeta-collection-detail"),
-    url(r'^collections/(?P<object_id>[0-9A-Z._%?-]+)/dc/$', 
+    url(r'^collections/(?P<object_id>' + c_ex + ')/dc/$', 
         'django.views.generic.list_detail.object_detail',
         dict(all_collections, template_name="collection_detail_dc.html"),
         name="telemeta-collection-dublincore"),
@@ -65,24 +69,24 @@ urlpatterns = patterns('',
     # administration        
     url(r'^admin/$', web_view.admin_index, name="telemeta-admin"),        
 
-    # dictionaries administration
-    url(r'^admin/dictionaries/(?P<dictionary_id>[0-9a-z]+)/$', 
-        web_view.edit_dictionary ,
-        name="telemeta-dictionary-edit"),        
-    url(r'^admin/dictionaries/(?P<dictionary_id>[0-9a-z]+)/add/$', 
-        web_view.add_to_dictionary,
-        name="telemeta-dictionary-add"),        
-    url(r'^admin/dictionaries/(?P<dictionary_id>[0-9a-z]+)/update/$', 
-        web_view.update_dictionary,
-        name="telemeta-dictionary-update"),        
-    url(r'^admin/dictionaries/(?P<dictionary_id>[0-9a-z]+)/(?P<value_id>[0-9]+)/$',
-        web_view.edit_dictionary_value,
-        name="telemeta-dictionary-record-edit"),   
-
-    url(r'^admin/dictionaries/(?P<dictionary_id>[0-9a-z]+)/(?P<value_id>[0-9]+)/update/$',
-        web_view.update_dictionary_value, 
-        name="telemeta-dictionary-record-update"),   
-
+    # enumerations administration
+    url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/$', 
+        web_view.edit_enumeration ,
+        name="telemeta-enumeration-edit"),        
+    url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/add/$', 
+        web_view.add_to_enumeration,
+        name="telemeta-enumeration-add"),        
+    url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/update/$', 
+        web_view.update_enumeration,
+        name="telemeta-enumeration-update"),        
+    url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/'
+        + r'(?P<value_id>[0-9]+)/$',
+        web_view.edit_enumeration_value,
+        name="telemeta-enumeration-record-edit"),   
+    url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/'
+        + r'(?P<value_id>[0-9]+)/update/$',
+        web_view.update_enumeration_value, 
+        name="telemeta-enumeration-record-update"),   
 
     # CSS+Images (FIXME: for developement only)
     (r'^css/(?P<path>.*)$', 'django.views.static.serve', 
index 71984daaf4199e9da02e4c7efe11c5acdb8101ff..2b938999071d82d748d59494dbd61b0c1cb3e4c8 100644 (file)
@@ -101,24 +101,24 @@ class WebView(Component):
                     {'pattern': pattern, 'collections': collections, 
                      'items': items})
 
-    def __get_dictionary_list(self):
+    def __get_enumerations_list(self):
         from django.db.models import get_models
         models = get_models(telemeta.models)
 
-        dictionaries = []
+        enumerations = []
         for model in models:
-            if getattr(model, "is_dictionary", False):
-                dictionaries.append({"name": model._meta.verbose_name_plural, 
+            if getattr(model, "is_enumeration", False):
+                enumerations.append({"name": model._meta.verbose_name_plural, 
                     "id": model._meta.module_name})
-        return dictionaries                    
+        return enumerations                    
     
     def __get_admin_context_vars(self):
-        return {"dictionaries": self.__get_dictionary_list()}
+        return {"enumerations": self.__get_enumerations_list()}
 
     def admin_index(self, request):
         return render_to_response('admin.html', self. __get_admin_context_vars())
 
-    def __get_dictionary(self, id):
+    def __get_enumeration(self, id):
         from django.db.models import get_models
         models = get_models(telemeta.models)
         for model in models:
@@ -129,113 +129,69 @@ class WebView(Component):
             return None
 
         return model
-        
 
-    def edit_dictionary(self, request, dictionary_id):        
+    def edit_enumeration(self, request, enumeration_id):        
 
-        dictionary  = self.__get_dictionary(dictionary_id)
-        if dictionary == None:
+        enumeration  = self.__get_enumeration(enumeration_id)
+        if enumeration == None:
             raise Http404
 
         vars = self.__get_admin_context_vars()
-        vars["dictionary_id"] = dictionary._meta.module_name
-        vars["dictionary_name"] = dictionary._meta.verbose_name            
-        vars["dictionary_name_plural"] = dictionary._meta.verbose_name_plural
-        vars["dictionary_values"] = dictionary.objects.all()
-        return render_to_response('dictionary_edit.html', vars)
+        vars["enumeration_id"] = enumeration._meta.module_name
+        vars["enumeration_name"] = enumeration._meta.verbose_name            
+        vars["enumeration_name_plural"] = enumeration._meta.verbose_name_plural
+        vars["enumeration_values"] = enumeration.objects.all()
+        return render_to_response('enumeration_edit.html', vars)
 
-    def add_to_dictionary(self, request, dictionary_id):        
+    def add_to_enumeration(self, request, enumeration_id):        
 
-        dictionary  = self.__get_dictionary(dictionary_id)
-        if dictionary == None:
+        enumeration  = self.__get_enumeration(enumeration_id)
+        if enumeration == None:
             raise Http404
 
-        dictionary_value = dictionary(value=request.POST['value'])
-        dictionary_value.save()
+        enumeration_value = enumeration(value=request.POST['value'])
+        enumeration_value.save()
 
-        return self.edit_dictionary(request, dictionary_id)
+        return self.edit_enumeration(request, enumeration_id)
 
-    def update_dictionary(self, request, dictionary_id):        
+    def update_enumeration(self, request, enumeration_id):        
         
-        dictionary  = self.__get_dictionary(dictionary_id)
-        if dictionary == None:
+        enumeration  = self.__get_enumeration(enumeration_id)
+        if enumeration == None:
             raise Http404
 
         if request.POST.has_key("remove"):
-            dictionary.objects.filter(id__in=request.POST['sel']).delete()
+            enumeration.objects.filter(id__in=request.POST.getlist('sel')).delete()
 
-        return self.edit_dictionary(request, dictionary_id)
+        return self.edit_enumeration(request, enumeration_id)
 
-    def edit_dictionary_value(self, request, dictionary_id, value_id):        
+    def edit_enumeration_value(self, request, enumeration_id, value_id):        
 
-        dictionary  = self.__get_dictionary(dictionary_id)
-        if dictionary == None:
+        enumeration  = self.__get_enumeration(enumeration_id)
+        if enumeration == None:
             raise Http404
         
         vars = self.__get_admin_context_vars()
-        vars["dictionary_id"] = dictionary._meta.module_name
-        vars["dictionary_name"] = dictionary._meta.verbose_name            
-        vars["dictionary_name_plural"] = dictionary._meta.verbose_name_plural
-        vars["dictionary_record"] = dictionary.objects.get(id__exact=value_id)
-        return render_to_response('dictionary_edit_value.html', vars)
+        vars["enumeration_id"] = enumeration._meta.module_name
+        vars["enumeration_name"] = enumeration._meta.verbose_name            
+        vars["enumeration_name_plural"] = enumeration._meta.verbose_name_plural
+        vars["enumeration_record"] = enumeration.objects.get(id__exact=value_id)
+        return render_to_response('enumeration_edit_value.html', vars)
 
-    def update_dictionary_value(self, request, dictionary_id, value_id):        
+    def update_enumeration_value(self, request, enumeration_id, value_id):        
 
         if request.POST.has_key("save"):
-            dictionary  = self.__get_dictionary(dictionary_id)
-            if dictionary == None:
+            enumeration  = self.__get_enumeration(enumeration_id)
+            if enumeration == None:
                 raise Http404
        
-            record = dictionary.objects.get(id__exact=value_id)
+            record = enumeration.objects.get(id__exact=value_id)
             record.value = request.POST["value"]
             record.save()
 
-        return self.edit_dictionary(request, dictionary_id)
+        return self.edit_enumeration(request, enumeration_id)
 
         
-def media_item_edit(request, media_item_id):
-    "Provide MediaItem object edition"
-
-    media_item = MediaItem.objects.get(pk=media_item_id)
-    dynprops = media_item.get_dynamic_properties()
-    return render_to_response('media_item.html', {'media_item': media_item, 'dynprops' : dynprops})
-
-def media_item_update(request, media_item_id):
-    "Handle MediaItem object edition form submission"
-
-    media_item = MediaItem.objects.get(pk=media_item_id)
-    media_item.author = request.POST['author']
-    media_item.title = request.POST['title']
-    media_item.save()
-
-    pattern = re.compile(r'^dynprop_(\d+)$')
-    for name, value in request.POST.items():
-        match = pattern.search(name)
-        if match:
-            prop_id = match.groups()[0]
-            prop = MediaItemPropertyDefinition.objects.get(pk=prop_id)
-            telemeta.logger.debug("prop_id: " + prop_id + " ; " + "media_item_id: " + 
-                                    media_item_id + " ; value: " + value + 
-                                    " ; type:" + prop.type)
-            media_item = MediaItem.objects.get(pk=media_item_id)
-            property, created = MediaItemProperty.objects.get_or_create(
-                                    media_item=media_item, definition=prop)
-
-            if prop.type == 'text':
-                property.value = value
-            else:
-                value = int(value)
-
-                if value > 0:
-                    enum_item = MediaItemPropertyEnumerationItem.objects.get(pk=value)
-                    property.enum_item = enum_item
-                else:
-                    property.enum_item = 0
-
-            property.save()
-
-    return media_item_edit(request, media_item_id)
-