From: yomguy Date: Mon, 21 May 2012 15:06:39 +0000 (+0200) Subject: fix item edit form with format X-Git-Tag: 1.4.3-2^2~20 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=bc866e5d75295442d4df4ed9b36821d34eee12de;p=telemeta.git fix item edit form with format --- diff --git a/telemeta/forms/__init__.py b/telemeta/forms/__init__.py index c7810789..c479f555 100644 --- a/telemeta/forms/__init__.py +++ b/telemeta/forms/__init__.py @@ -2,3 +2,4 @@ from media import * from language import * from system import * +from format import * diff --git a/telemeta/models/core.py b/telemeta/models/core.py index ce88c86e..d5adc1e8 100644 --- a/telemeta/models/core.py +++ b/telemeta/models/core.py @@ -346,12 +346,12 @@ class ModelCore(EnhancedModel): required.append(field) return required - def save(self, force_insert=False, force_update=False): + def save(self, force_insert=False, force_update=False, *args, **kwargs): required = self.required_fields() for field in required: if not getattr(self, field.name): raise RequiredFieldError(self, field) - super(ModelCore, self).save(force_insert, force_update) + super(ModelCore, self).save(force_insert, force_update, *args, **kwargs) @classmethod def get_dom_name(cls): diff --git a/telemeta/models/format.py b/telemeta/models/format.py index 50b93033..900bfb00 100644 --- a/telemeta/models/format.py +++ b/telemeta/models/format.py @@ -56,9 +56,9 @@ class Format(ModelCore): item = ForeignKey('MediaItem', related_name="format", verbose_name = _("item")) original_format = WeakForeignKey(OriginalFormat, related_name="format", verbose_name = _("original format")) - original_code = CharField(_('original code'), required=True) + original_code = CharField(_('original code')) original_number = CharField(_('original number')) - original_status = CharField(_('status')) + original_status = CharField(_('original status')) original_state = TextField(_('technical properties / conservation state')) original_comments = TextField(_('comments / notes')) original_location = WeakForeignKey(OriginalLocation, related_name="format", @@ -78,13 +78,15 @@ class Format(ModelCore): tape_reference = CharField(_('tape reference')) sticker_presence = BooleanField(_('sticker presence')) - class Meta(MetaCore): db_table = 'media_formats' verbose_name = _('format') def __unicode__(self): - return self.original_format + if self.original_format: + return self.original_format + else: + return 'unknown' @property def public_id(self): diff --git a/telemeta/templates/telemeta/mediaitem_detail.html b/telemeta/templates/telemeta/mediaitem_detail.html index 130c3ffe..2eb65ce2 100644 --- a/telemeta/templates/telemeta/mediaitem_detail.html +++ b/telemeta/templates/telemeta/mediaitem_detail.html @@ -302,20 +302,21 @@ Item : {{ item }}
{% trans "Media type" %}
{% trans mime_type|mime_to_media_type %}
{% dl_field item "approx_duration" %} - {% if physical_format %} - {% dl_field physical_format "original_code" %} - {% dl_field physical_format "tape_number" %} - {% dl_field physical_format "status" %} - {% dl_field physical_format "conservation_state" %} - {% dl_field physical_format "tape_length" %} - {% dl_field physical_format "tape_width" %} - {% dl_field physical_format "tape_speed" %} - {% dl_field physical_format "tape_vendor" %} - {% dl_field physical_format "tape_thickness" %} - {% dl_field physical_format "tape_diameter" %} - {% dl_field physical_format "tape_reference" %} -
{% trans "Remarks" %}
-
{{ physical_format.comments|html_line_break|safe }}
+ {% if format %} + {% dl_field format "original_format" %} + {% dl_field format "original_code" %} + {% dl_field format "original_number" %} + {% dl_field format "original_status" %} + {% dl_field format "original_location" %} + {% dl_field format "original_state" %} +
{% trans "Comments" %}
+
{{ format.original_comments|html_line_break|safe }}
+ {% dl_field format "tape_wheel_diameter" %} + {% dl_field format "tape_thickness" %} + {% dl_field format "tape_speed" %} + {% dl_field format "tape_vendor" %} + {% dl_field format "tape_reference" %} + {% dl_field format "sticker_presence" %} {% endif %} diff --git a/telemeta/templates/telemeta/mediaitem_edit.html b/telemeta/templates/telemeta/mediaitem_edit.html index de4b6dba..e0f03d18 100644 --- a/telemeta/templates/telemeta/mediaitem_edit.html +++ b/telemeta/templates/telemeta/mediaitem_edit.html @@ -10,14 +10,15 @@ {% trans "Cancel" %} {% endblock %} -{% block infos %} +{% block infos %}
-
{% csrf_token %} + {% csrf_token %} + {% for form in forms %} {% for field in form %} - {% if field.html_name == "copied_from_item" %} + {% if field.html_name in hidden_fields %} {% else %} @@ -32,6 +33,7 @@ {% endif %} {% endfor %} + {% endfor %}
{% for error in form.non_field_errors %}
  • {{ error }}
  • {% endfor %}
    {{ field.label_tag.as_hidden }}{{ field.as_hidden }}
    {{ field.errors }}
    {% trans "Cancel" %} @@ -51,7 +53,7 @@
    {% endblock infos %} -{% block related %} +{% block related %} {% endblock %} {% block delete %} diff --git a/telemeta/views/base.py b/telemeta/views/base.py index 1d80d0a0..6e3991da 100644 --- a/telemeta/views/base.py +++ b/telemeta/views/base.py @@ -659,7 +659,9 @@ class ItemView(object): else: last_revision = None - physical_format = item.original_format + format = '' + if Format.objects.filter(item=item): + format = item.format.get() return render(request, template, {'item': item, 'export_formats': formats, @@ -668,7 +670,7 @@ class ItemView(object): 'previous' : previous, 'next' : next, 'marker': marker_id, 'playlists' : playlists, 'public_access': public_access, 'width': width, 'height': height, 'related_media': related_media, 'mime_type': mime_type, 'last_revision': last_revision, - 'physical_format': physical_format, + 'format': format, }) @method_decorator(permission_required('telemeta.change_mediaitem')) @@ -699,14 +701,18 @@ class ItemView(object): if 'quicktime' in mime_type: mime_type = 'video/mp4' + format, created = Format.objects.get_or_create(item=item) + if request.method == 'POST': - form = MediaItemForm(data=request.POST, files=request.FILES, instance=item) - if form.is_valid(): - form.save() - code = form.cleaned_data['code'] + item_form = MediaItemForm(data=request.POST, files=request.FILES, instance=item, prefix='item') + format_form = FormatForm(data=request.POST, instance=format, prefix='format') + if item_form.is_valid() and format_form.is_valid(): + item_form.save() + format_form.save() + code = item_form.cleaned_data['code'] if not code: code = str(item.id) - if form.files: + if item_form.files: self.cache_data.delete_item_data(code) self.cache_export.delete_item_data(code) flags = MediaItemTranscodingFlag.objects.filter(item=item) @@ -718,13 +724,18 @@ class ItemView(object): item.set_revision(request.user) return HttpResponseRedirect('/archives/items/'+code) else: - form = MediaItemForm(instance=item) + item_form = MediaItemForm(instance=item, prefix='item') + format_form = FormatForm(instance=format, prefix='format') + forms = [item_form, format_form] + + hidden_fields = ['item-copied_from_item', 'format-item'] return render(request, template, {'item': item, 'export_formats': formats, 'visualizers': graphers, 'visualizer_id': grapher_id, - 'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), "form": form, - 'previous' : previous, 'next' : next, 'mime_type': mime_type, + 'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True), + 'forms': forms, 'previous' : previous, 'next' : next, 'mime_type': mime_type, + 'hidden_fields': hidden_fields, }) def related_media_item_stream(self, request, item_public_id, media_id):