From 7817c7103680b50e1573eb362ea0b46c77e4e3c9 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Thu, 13 Nov 2014 02:25:15 +0100 Subject: [PATCH] fix no public_id for copy --- telemeta/urls.py | 1 - telemeta/views/collection.py | 13 ++++++++++--- telemeta/views/item.py | 13 ++++++++++--- telemeta/views/resource.py | 23 +++++++++++++++++++---- 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/telemeta/urls.py b/telemeta/urls.py index c5a6fea5..bad6eae1 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -136,7 +136,6 @@ urlpatterns = patterns('', url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related/(?P[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"), url(r'^archives/(?P[A-Za-z0-9._-]+)/(?P[A-Za-z0-9._-]+)/related_edit/$', resource_view.related_edit, dict(template='telemeta/resource_related_edit.html'), name="telemeta-resource-related_edit"), - # search # url(r'^archives/$', home_view.search, name="telemeta-archives"), url(r'^search/$', SearchView.as_view(), name="telemeta-search"), diff --git a/telemeta/views/collection.py b/telemeta/views/collection.py index 5bab13ff..e203eabb 100644 --- a/telemeta/views/collection.py +++ b/telemeta/views/collection.py @@ -230,7 +230,15 @@ class CollectionViewMixin(object): model = MediaCollection def get_object(self): - self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk + obj = self.model.objects.filter(code=self.kwargs['public_id']) + if not obj: + try: + obj = self.model.objects.get(id=self.kwargs['public_id']) + except: + pass + else: + obj = obj[0] + self.pk = obj.pk return get_object_or_404(self.model, pk=self.pk) @@ -321,8 +329,7 @@ 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) + return model_to_dict(self.get_object()) def get_success_url(self): return reverse_lazy('telemeta-collections') diff --git a/telemeta/views/item.py b/telemeta/views/item.py index a8e23d6d..6190f313 100644 --- a/telemeta/views/item.py +++ b/telemeta/views/item.py @@ -706,7 +706,15 @@ class ItemViewMixin(ItemBaseMixin): def get_object(self): if 'public_id' in self.kwargs.keys(): - self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk + obj = self.model.objects.filter(code=self.kwargs['public_id']) + if not obj: + try: + obj = self.model.objects.get(id=self.kwargs['public_id']) + except: + pass + else: + obj = obj[0] + self.pk = obj.pk return get_object_or_404(self.model, pk=self.pk) else: return get_object_or_404(self.model, pk=self.kwargs['pk']) @@ -753,8 +761,7 @@ class ItemCopyView(ItemAddView): template_name = 'telemeta/mediaitem_add.html' def get_initial(self): - resource = self.model.objects.get(code=self.kwargs['public_id']) - return model_to_dict(resource) + return model_to_dict(self.get_object()) def get_success_url(self): return reverse_lazy('telemeta-items') diff --git a/telemeta/views/resource.py b/telemeta/views/resource.py index e1393ba9..d6f0eb07 100644 --- a/telemeta/views/resource.py +++ b/telemeta/views/resource.py @@ -220,7 +220,15 @@ class ResourceMixin(View): # super(CorpusDetailView, self).get_object() self.type = self.kwargs['type'] self.setup(self.type) - self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk + obj = self.model.objects.filter(code=self.kwargs['public_id']) + if not obj: + try: + obj = self.model.objects.get(id=self.kwargs['public_id']) + except: + pass + else: + obj = obj[0] + self.pk = obj.pk return get_object_or_404(self.model, pk=self.pk) def get_context_data(self, **kwargs): @@ -240,7 +248,15 @@ class ResourceSingleMixin(ResourceMixin): # super(CorpusDetailView, self).get_object() self.type = self.kwargs['type'] self.setup(self.type) - self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk + obj = self.model.objects.filter(code=self.kwargs['public_id']) + if not obj: + try: + obj = self.model.objects.get(id=self.kwargs['public_id']) + except: + pass + else: + obj = obj[0] + self.pk = obj.pk return get_object_or_404(self.model, pk=self.pk) def get_context_data(self, **kwargs): @@ -308,8 +324,7 @@ class ResourceCopyView(ResourceSingleMixin, ResourceAddView): template_name = 'telemeta/resource_edit.html' def get_initial(self): - resource = self.model.objects.get(code=self.kwargs['public_id']) - return model_to_dict(resource) + return model_to_dict(self.get_object()) def get_success_url(self): return reverse_lazy('telemeta-resource-list', kwargs={'type':self.kwargs['type']}) -- 2.39.5