From e6456bb3a151977c23bfcab8f7e04a54ac877ea6 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Fri, 17 Oct 2014 16:21:52 +0200 Subject: [PATCH] add collection and item copy CBV, cleaup urls --- telemeta/forms/media.py | 12 ++ telemeta/static/telemeta/css/telemeta.css | 3 +- .../templates/telemeta/collection_edit.html | 18 +- .../templates/telemeta/mediaitem_edit.html | 3 + telemeta/urls.py | 185 +++++------------- telemeta/views/collection.py | 14 +- telemeta/views/core.py | 4 + telemeta/views/item.py | 21 +- telemeta/views/resource.py | 3 - 9 files changed, 110 insertions(+), 153 deletions(-) diff --git a/telemeta/forms/media.py b/telemeta/forms/media.py index a606a5db..5e1fb168 100644 --- a/telemeta/forms/media.py +++ b/telemeta/forms/media.py @@ -157,6 +157,12 @@ class CollectionRelatedInline(InlineFormSet): model = MediaCollectionRelated +class CollectionIdentifierInline(InlineFormSet): + + model = MediaCollectionIdentifier + max_num = 1 + + class ItemRelatedInline(InlineFormSet): model = MediaItemRelated @@ -176,3 +182,9 @@ class ItemFormatInline(InlineFormSet): model = Format + +class ItemIdentifierInline(InlineFormSet): + + model = MediaItemIdentifier + max_num = 1 + diff --git a/telemeta/static/telemeta/css/telemeta.css b/telemeta/static/telemeta/css/telemeta.css index 79000ba1..03519fce 100644 --- a/telemeta/static/telemeta/css/telemeta.css +++ b/telemeta/static/telemeta/css/telemeta.css @@ -322,7 +322,7 @@ label.disabled { color: #d7d7d7 } top: 1.2em; left: 35%; background-color: #6a0307; - padding: 0.5em; + padding: 0.3em; -moz-border-radius: 8px 8px 8px 8px; -webkit-border-radius: 8px 8px 8px 8px; border-radius: 8px 8px 8px 8px; @@ -340,6 +340,7 @@ label.disabled { color: #d7d7d7 } -webkit-border-radius: 5px 0px 0px 5px; border-radius: 5px 0px 0px 5px; width: 215px; + padding-left: 0.5em; } #quick_search_pattern { diff --git a/telemeta/templates/telemeta/collection_edit.html b/telemeta/templates/telemeta/collection_edit.html index 91a78512..cb794b22 100644 --- a/telemeta/templates/telemeta/collection_edit.html +++ b/telemeta/templates/telemeta/collection_edit.html @@ -17,8 +17,9 @@
{% csrf_token %}
@@ -33,19 +34,16 @@
- - - + {% endfor %}
{% block cancel %} diff --git a/telemeta/templates/telemeta/mediaitem_edit.html b/telemeta/templates/telemeta/mediaitem_edit.html index e1815daa..e17daaa1 100644 --- a/telemeta/templates/telemeta/mediaitem_edit.html +++ b/telemeta/templates/telemeta/mediaitem_edit.html @@ -23,6 +23,7 @@
  • {% trans "Keywords" %}
  • {% trans "Performance" %}
  • {% trans "Format" %}
  • +
  • {% trans "Identifier" %}
  • @@ -34,6 +35,8 @@ {{ form.media }}
    {% bootstrap_form form %} + {% trans "Collection access status" %} : {% trans item.collection.public_access %}
    + {% trans "Context access status" %} : {% trans access %}
    diff --git a/telemeta/urls.py b/telemeta/urls.py index b7c8698b..9a10e863 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -74,48 +74,29 @@ urlpatterns = patterns('', url(r'^archives/items_unpublished/$', ItemUnpublishedListView.as_view(), name="telemeta-items-unpublished"), url(r'^archives/items_published/$', ItemPublishedListView.as_view(), name="telemeta-items-published"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/$', item_view.item_detail, - name="telemeta-item-detail"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/$', item_view.item_detail, - {'template': 'telemeta/mediaitem_detail_dc.html'}, - name="telemeta-item-dublincore"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/xml/$', item_view.item_detail, - {'format': 'dublin_core_xml'}, - name="telemeta-item-dublincore-xml"), - url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' - + export_extensions + ')$', - item_view.item_export, - name="telemeta-item-export"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/visualize/(?P[0-9a-z_]+)/(?P[0-9A-Z]+)x(?P[0-9A-Z]+)/$', - item_view.item_visualize, - name="telemeta-item-visualize"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/analyze/xml/$', - item_view.item_analyze_xml, - name="telemeta-item-analyze-xml"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/item_xspf.xml$', - item_view.item_playlist, - dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), - name="telemeta-item-xspf"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/$', item_view.item_detail, name="telemeta-item-detail"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/$', item_view.item_detail, {'template': 'telemeta/mediaitem_detail_dc.html'}, name="telemeta-item-dublincore"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/dc/xml/$', item_view.item_detail, {'format': 'dublin_core_xml'}, name="telemeta-item-dublincore-xml"), + url(r'^archives/items/download/(?P[A-Za-z0-9._-]+)\.(?P' + export_extensions + ')$', item_view.item_export, name="telemeta-item-export"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/visualize/(?P[0-9a-z_]+)/(?P[0-9A-Z]+)x(?P[0-9A-Z]+)/$', item_view.item_visualize, name="telemeta-item-visualize"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/analyze/xml/$', item_view.item_analyze_xml, name="telemeta-item-analyze-xml"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/item_xspf.xml$', item_view.item_playlist, dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-item-xspf"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/edit/$', ItemEditView.as_view(), name="telemeta-item-edit"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/copy/$', item_view.item_copy, - dict(template='telemeta/mediaitem_copy.html'), name="telemeta-item-copy"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/copy/$', ItemEditView.as_view(), name="telemeta-item-copy"), url(r'^archives/item_new/add/$', ItemAddView.as_view(), name="telemeta-item-add"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/$', item_view.item_detail, - dict(template='telemeta/mediaitem_player.html'), name="telemeta-item-player"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/simple/$', item_view.item_detail, - dict(template='telemeta/mediaitem_player_simple.html'), name="telemeta-item-player-simple"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/countour/$', item_view.item_detail, - dict(template='telemeta/mediaitem_player_contour.html'), name="telemeta-item-player-contour"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/performances/$', item_view.item_performances_edit, - dict(template='telemeta/mediaitem_performances_edit.html'), name="telemeta-item-performances_edit"), - url(r'^archives/items/(?P[A-Za-z0-9._-]+)/keywords/$', item_view.item_keywords_edit, - dict(template='telemeta/mediaitem_keywords_edit.html'), name="telemeta-item-keywords_edit"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/$', item_view.item_detail, dict(template='telemeta/mediaitem_player.html'), name="telemeta-item-player"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/simple/$', item_view.item_detail, dict(template='telemeta/mediaitem_player_simple.html'), name="telemeta-item-player-simple"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/player/(?P[0-9]+)x(?P[0-9]+)/countour/$', item_view.item_detail, dict(template='telemeta/mediaitem_player_contour.html'), name="telemeta-item-player-contour"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/performances/$', item_view.item_performances_edit, dict(template='telemeta/mediaitem_performances_edit.html'), name="telemeta-item-performances_edit"), + url(r'^archives/items/(?P[A-Za-z0-9._-]+)/keywords/$', item_view.item_keywords_edit, dict(template='telemeta/mediaitem_keywords_edit.html'), name="telemeta-item-keywords_edit"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', item_view.related_media_item_stream, name="telemeta-item-related"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', item_view.related_media_item_download, name="telemeta-item-related-download"), url(r'^archives/items/(?P[A-Za-z0-9._-]+)/related_edit/$', item_view.related_media_edit, dict(template='telemeta/mediaitem_related_edit.html'), name="telemeta-item-related_edit"), + # Markers url(r'^archives/markers/(?P[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), + # FIXME: need all paths url(r'^items/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(), {'url': '/archives/items/%(path)s/', 'permanent': False}, name="telemeta-item-redir"), @@ -126,26 +107,18 @@ urlpatterns = patterns('', url(r'^archives/collections_sound/$', CollectionSoundListView.as_view(), name="telemeta-collections-sound"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/$', CollectionDetailView.as_view(), name="telemeta-collection-detail"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/dc/$', collection_view.collection_detail, - dict(template="telemeta/collection_detail_dc.html"), name="telemeta-collection-dublincore"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', - collection_view.collection_playlist, - dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), - name="telemeta-collection-xspf"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', - collection_view.collection_playlist, - dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), - name="telemeta-collection-m3u"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/dc/$', collection_view.collection_detail, dict(template="telemeta/collection_detail_dc.html"), name="telemeta-collection-dublincore"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection_xspf.xml$', collection_view.collection_playlist, dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"), name="telemeta-collection-xspf"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/collection.m3u$', collection_view.collection_playlist, dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"), name="telemeta-collection-m3u"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/edit/$', CollectionEditView.as_view(), name="telemeta-collection-edit"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/copy/$', collection_view.collection_copy, - dict(template='telemeta/collection_edit.html'), name="telemeta-collection-copy"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/copy/$', CollectionCopyView.as_view(), name="telemeta-collection-copy"), url(r'^archives/collection_new/add/$', CollectionAddView.as_view(), name="telemeta-collection-add"), - url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', item_view.item_add, - dict(template='telemeta/mediaitem_add.html'), name="telemeta-collection-additem"), + url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/add_item/$', ItemAddView.as_view(), name="telemeta-collection-additem"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/delete/$', collection_view.collection_delete, name="telemeta-collection-delete"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/view/$', collection_view.related_media_collection_stream, name="telemeta-collection-related"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', collection_view.related_media_collection_download, name="telemeta-collection-related-download"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/related_edit/$', collection_view.related_media_edit, dict(template='telemeta/collection_related_edit.html'), name="telemeta-collection-related_edit"), + # FIXME: need all paths url(r'^collections/(?P[A-Za-z0-9._-s/]+)/$', RedirectView.as_view(), {'url': '/archives/collections/%(path)s/', 'permanent': False}, name="telemeta-collection-redir"), url(r'^archives/collections/(?P[A-Za-z0-9._-]+)/package/$', CollectionPackageView.as_view(), @@ -167,14 +140,10 @@ urlpatterns = patterns('', # search # url(r'^archives/$', home_view.search, name="telemeta-archives"), url(r'^search/$', home_view.search, name="telemeta-search"), - url(r'^search/collections/$', home_view.search, {'type': 'collections'}, - name="telemeta-search-collections"), - url(r'^search/items/$', home_view.search, {'type': 'items'}, - name="telemeta-search-items"), - url(r'^search/corpus/$', home_view.search, {'type': 'corpus'}, - name="telemeta-search-corpus"), - url(r'^search/fonds/$', home_view.search, {'type': 'fonds'}, - name="telemeta-search-fonds"), + url(r'^search/collections/$', home_view.search, {'type': 'collections'}, name="telemeta-search-collections"), + url(r'^search/items/$', home_view.search, {'type': 'items'}, name="telemeta-search-items"), + url(r'^search/corpus/$', home_view.search, {'type': 'corpus'}, name="telemeta-search-corpus"), + url(r'^search/fonds/$', home_view.search, {'type': 'fonds'}, name="telemeta-search-fonds"), url(r'^search/criteria/$', home_view.edit_search, name="telemeta-search-criteria"), url(r'^complete_location/$', home_view.complete_location, name="telemeta-complete-location"), @@ -186,86 +155,35 @@ urlpatterns = patterns('', url(r'^admin/users/$', admin_view.admin_users, name="telemeta-admin-users"), # instruments administration - url(r'^admin/instruments/$', - instrument_view.edit_instrument , - name="telemeta-instrument-edit"), - url(r'^admin/instruments/add/$', - instrument_view.add_to_instrument, - name="telemeta-instrument-add"), - url(r'^admin/instruments/update/$', - instrument_view.update_instrument, - name="telemeta-instrument-update"), - url(r'^admin/instruments/' - + r'(?P[0-9]+)/$', - instrument_view.edit_instrument_value, - name="telemeta-instrument-record-edit"), - url(r'^admin/instruments/' - + r'(?P[0-9]+)/update/$', - instrument_view.update_instrument_value, - name="telemeta-instrument-record-update"), - url(r'^admin/instruments/' - + r'(?P[0-9]+)/replace/$', - instrument_view.replace_instrument_value, - name="telemeta-instrument-record-replace"), + url(r'^admin/instruments/$', instrument_view.edit_instrument , name="telemeta-instrument-edit"), + url(r'^admin/instruments/add/$', instrument_view.add_to_instrument, name="telemeta-instrument-add"), + url(r'^admin/instruments/update/$', instrument_view.update_instrument, name="telemeta-instrument-update"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/$', instrument_view.edit_instrument_value, name="telemeta-instrument-record-edit"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/update/$', instrument_view.update_instrument_value, name="telemeta-instrument-record-update"), + url(r'^admin/instruments/' + r'(?P[0-9]+)/replace/$', instrument_view.replace_instrument_value, name="telemeta-instrument-record-replace"), # instruments aliases administration - url(r'^admin/instrument_aliases/$', - instrument_alias_view.edit_instrument , - name="telemeta-instrument-alias-edit"), - url(r'^admin/instrument_aliases/add/$', - instrument_alias_view.add_to_instrument, - name="telemeta-instrument-alias-add"), - url(r'^admin/instrument_aliases/update/$', - instrument_alias_view.update_instrument, - name="telemeta-instrument-alias-update"), - url(r'^admin/instrument_aliases/' - + r'(?P[0-9]+)/$', - instrument_alias_view.edit_instrument_value, - name="telemeta-instrument-alias-record-edit"), - url(r'^admin/instrument_aliases/' - + r'(?P[0-9]+)/update/$', - instrument_alias_view.update_instrument_value, - name="telemeta-instrument-alias-record-update"), - url(r'^admin/instrument_aliases/' - + r'(?P[0-9]+)/replace/$', - instrument_alias_view.replace_instrument_value, - name="telemeta-instrument-alias-record-replace"), + url(r'^admin/instrument_aliases/$', instrument_alias_view.edit_instrument, name="telemeta-instrument-alias-edit"), + url(r'^admin/instrument_aliases/add/$', instrument_alias_view.add_to_instrument, name="telemeta-instrument-alias-add"), + url(r'^admin/instrument_aliases/update/$', instrument_alias_view.update_instrument, name="telemeta-instrument-alias-update"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/$', instrument_alias_view.edit_instrument_value, name="telemeta-instrument-alias-record-edit"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/update/$', instrument_alias_view.update_instrument_value, name="telemeta-instrument-alias-record-update"), + url(r'^admin/instrument_aliases/' + r'(?P[0-9]+)/replace/$', instrument_alias_view.replace_instrument_value, name="telemeta-instrument-alias-record-replace"), # enumerations administration - url(r'^admin/enumerations/(?P[0-9a-z]+)/$', - admin_view.edit_enumeration , - name="telemeta-enumeration-edit"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/add/$', - admin_view.add_to_enumeration, - name="telemeta-enumeration-add"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/update/$', - admin_view.update_enumeration, - name="telemeta-enumeration-update"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' - + r'(?P[0-9]+)/$', - admin_view.edit_enumeration_value, - name="telemeta-enumeration-record-edit"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' - + r'(?P[0-9]+)/update/$', - admin_view.update_enumeration_value, - name="telemeta-enumeration-record-update"), - url(r'^admin/enumerations/(?P[0-9a-z]+)/' - + r'(?P[0-9]+)/replace/$', - admin_view.replace_enumeration_value, - name="telemeta-enumeration-replace"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/$', admin_view.edit_enumeration , name="telemeta-enumeration-edit"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/add/$', admin_view.add_to_enumeration, name="telemeta-enumeration-add"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/update/$', admin_view.update_enumeration, name="telemeta-enumeration-update"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/$', admin_view.edit_enumeration_value, name="telemeta-enumeration-record-edit"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/update/$', admin_view.update_enumeration_value, name="telemeta-enumeration-record-update"), + url(r'^admin/enumerations/(?P[0-9a-z]+)/' + r'(?P[0-9]+)/replace/$', admin_view.replace_enumeration_value, name="telemeta-enumeration-replace"), # Geographic browsing url(r'^geo/$', geo_view.list_continents, name="telemeta-geo-continents"), - url(r'^geo/(?P[a-z_]+)/$', geo_view.list_countries, - name="telemeta-geo-countries"), - url(r'^geo/collections/(?P[a-z_]+)/(?P[a-z_]+)/$', - geo_view.list_country_collections, - name="telemeta-geo-country-collections"), - url(r'^geo/items/(?P[a-z_]+)/(?P[a-z_]+)/$', - geo_view.list_country_items, - name="telemeta-geo-country-items"), - url(r'^geo/country_info/(?P[0-9a-z]+)/$', - geo_view.country_info, name="telemeta-country-info"), + url(r'^geo/(?P[a-z_]+)/$', geo_view.list_countries, name="telemeta-geo-countries"), + url(r'^geo/collections/(?P[a-z_]+)/(?P[a-z_]+)/$', geo_view.list_country_collections, name="telemeta-geo-country-collections"), + url(r'^geo/items/(?P[a-z_]+)/(?P[a-z_]+)/$', geo_view.list_country_items, name="telemeta-geo-country-items"), + url(r'^geo/country_info/(?P[0-9a-z]+)/$', geo_view.country_info, name="telemeta-country-info"), # Flat pages url(r'^pages/(?P.*)$', home_view.render_flatpage, name="telemeta-flatpage"), @@ -274,10 +192,8 @@ urlpatterns = patterns('', url(r'^oai/.*$', home_view.handle_oai_request, name="telemeta-oai"), # Authentication - url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, - name="telemeta-login"), - url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, - name="telemeta-login"), + url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), + url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), #url(r'^login/$', 'ipauth.views.login', {'template_name': 'telemeta/login.html'}, # name="telemeta-login"), url(r'^logout/$', home_view.logout, name="telemeta-logout"), @@ -319,8 +235,7 @@ urlpatterns = patterns('', # Static media # FIXME:need to move export dir from the cache - url(r'^media/cache/(?P.*)$', 'django.views.static.serve', { - 'document_root': settings.TELEMETA_CACHE_DIR,}), + url(r'^media/cache/(?P.*)$', 'django.views.static.serve', {'document_root': settings.TELEMETA_CACHE_DIR,}), url(r'^', include('jqchat.urls')), diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index 34b981d1..5bab13ff 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -297,7 +297,7 @@ class CollectionDetailView(CollectionViewMixin, DetailView): class CollectionEditView(CollectionViewMixin, UpdateWithInlinesView): template_name = 'telemeta/collection_edit.html' - inlines = [CollectionRelatedInline, ] + inlines = [CollectionRelatedInline, CollectionIdentifierInline] def form_valid(self, form): messages.info(self.request, _("You have successfully updated your collection.")) @@ -310,9 +310,19 @@ class CollectionEditView(CollectionViewMixin, UpdateWithInlinesView): class CollectionAddView(CollectionViewMixin, CreateWithInlinesView): template_name = 'telemeta/collection_add.html' - inlines = [CollectionRelatedInline, ] + inlines = [CollectionRelatedInline, CollectionIdentifierInline] def get_success_url(self): return reverse_lazy('telemeta-collections') +class CollectionCopyView(CollectionAddView): + + template_name = 'telemeta/collection_add.html' + + def get_initial(self): + resource = self.model.objects.get(code=self.kwargs['public_id']) + return model_to_dict(resource) + + def get_success_url(self): + return reverse_lazy('telemeta-collections') diff --git a/telemeta/views/core.py b/telemeta/views/core.py index 89954036..cc17efd3 100644 --- a/telemeta/views/core.py +++ b/telemeta/views/core.py @@ -71,6 +71,10 @@ from django.core.servers.basehttp import FileWrapper from django.core.urlresolvers import reverse, reverse_lazy from django.contrib.contenttypes.models import ContentType from django.views.decorators.http import condition +from django.utils.translation import ugettext_lazy as _ +from django.forms.models import model_to_dict +from django.views.generic.edit import DeletionMixin, BaseDeleteView + from telemeta.models import * import telemeta.models diff --git a/telemeta/views/item.py b/telemeta/views/item.py index 9015eaf6..6a67ef23 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -713,7 +713,8 @@ class ItemEditView(ItemViewMixin, UpdateWithInlinesView): form_class = MediaItemForm template_name = 'telemeta/mediaitem_edit.html' - inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline, ItemFormatInline] + inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline, + ItemFormatInline, ItemIdentifierInline] def form_valid(self, form): messages.info(self.request, _("You have successfully updated your item.")) @@ -740,7 +741,23 @@ class ItemAddView(ItemViewMixin, CreateWithInlinesView): form_class = MediaItemForm template_name = 'telemeta/mediaitem_add.html' - inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline, ItemFormatInline] + inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline, + ItemFormatInline, ItemIdentifierInline] + + def get_success_url(self): + return reverse_lazy('telemeta-items') + + +class ItemCopyView(ItemAddView): + + form_class = MediaItemForm + template_name = 'telemeta/mediaitem_add.html' + inlines = [ItemRelatedInline, ItemPerformanceInline, ItemKeywordInline, + ItemFormatInline, ItemIdentifierInline] + + def get_initial(self): + resource = self.model.objects.get(code=self.kwargs['public_id']) + return model_to_dict(resource) def get_success_url(self): return reverse_lazy('telemeta-items') diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index b342f42b..e1393ba9 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -36,9 +36,6 @@ from telemeta.views.core import * -from django.utils.translation import ugettext_lazy as _ -from django.forms.models import model_to_dict -from django.views.generic.edit import DeletionMixin, BaseDeleteView class ResourceView(object): -- 2.39.5