# Generic resources
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/$', ResourceListView.as_view(), name="telemeta-resource-list"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/$', ResourceDetailView.as_view(), name="telemeta-resource-detail"),
- url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', resource_view.detail,
- dict(template="telemeta/resource_detail_dc.html"), name="telemeta-resource-dublincore"),
- url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', resource_view.edit,
- dict(template='telemeta/resource_edit.html'), name="telemeta-resource-edit"),
- url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', resource_view.copy,
- dict(template='telemeta/resource_edit.html'), name="telemeta-resource-copy"),
- url(r'^archives/(?P<type>[A-Za-z0-9._-]+)_add$', resource_view.add,
- dict(template='telemeta/resource_add.html'), name="telemeta-resource-add"),
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/dc/$', ResourceDetailDCView.as_view(), name="telemeta-resource-dublincore"),
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/edit/$', ResourceEditView.as_view(), name="telemeta-resource-edit"),
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/copy/$', ResourceCopyView.as_view(), name="telemeta-resource-copy"),
+ url(r'^archives/(?P<type>[A-Za-z0-9._-]+)_add$', ResourceAddView.as_view(), name="telemeta-resource-add"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/delete/$', resource_view.delete, name="telemeta-resource-delete"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/view/$', resource_view.related_stream, name="telemeta-resource-related"),
url(r'^archives/(?P<type>[A-Za-z0-9._-]+)/(?P<public_id>[A-Za-z0-9._-]+)/related/(?P<media_id>[A-Za-z0-9._-]+)/download/$', resource_view.related_download, name="telemeta-resource-related-download"),
from telemeta.views.core import *
+from django.utils.translation import ugettext_lazy as _
+from django.forms.models import model_to_dict
class ResourceView(object):
return render(request, template, {'resource': resource, 'type': type, 'formset': formset,})
-class ResourceMixin(object):
+class ResourceMixin(View):
types = {'corpus':
{'model': MediaCorpus,
self.parent = self.types[type]['parent']
self.type = type
-
-class ResourceListView(ResourceMixin, ListView):
-
- template_name = "telemeta/resource_list.html"
- paginate_by = 20
-
- def get_queryset(self):
+ def get_object(self):
+ # super(CorpusDetailView, self).get_object()
self.type = self.kwargs['type']
self.setup(self.type)
- return self.model.objects.all().order_by('code')
+ self.pk = self.model.objects.get(code=self.kwargs['public_id']).pk
+ return get_object_or_404(self.model, pk=self.pk)
def get_context_data(self, **kwargs):
- context = super(ResourceListView, self).get_context_data(**kwargs)
+ context = super(ResourceMixin, self).get_context_data(**kwargs)
context['type'] = self.type
return context
-class FondsListView(ListView):
-
- model = MediaFonds
- queryset = MediaFonds.objects.all().order_by('code')
- template_name = "telemeta/resource_list.html"
- paginate_by = 20
-
- def get_context_data(self, **kwargs):
- context = super(FondsListView, self).get_context_data(**kwargs)
- context['type'] = 'fonds'
- return context
-
-
-
-
-class ResourceDetailView(ResourceMixin, DetailView):
-
- template_name = "telemeta/resource_detail.html"
+class ResourceSingleMixin(ResourceMixin):
def get_object(self):
# super(CorpusDetailView, self).get_object()
return get_object_or_404(self.model, pk=self.pk)
def get_context_data(self, **kwargs):
- context = super(ResourceDetailView, self).get_context_data(**kwargs)
- resource = self.object
- related_media = self.related.objects.filter(resource=self.object)
+ context = super(ResourceMixin, self).get_context_data(**kwargs)
+ resource = self.get_object()
+ related_media = self.related.objects.filter(resource=resource)
check_related_media(related_media)
playlists = get_playlists(self.request)
revisions = Revision.objects.filter(element_type=self.type, element_id=self.pk).order_by('-time')
-
context['resource'] = resource
context['type'] = self.type
context['related_media'] = related_media
else:
context['parents'] = []
return context
+
+
+class ResourceListView(ResourceMixin, ListView):
+
+ template_name = "telemeta/resource_list.html"
+ paginate_by = 20
+
+ def get_queryset(self):
+ self.type = self.kwargs['type']
+ self.setup(self.type)
+ return self.model.objects.all().order_by('code')
+
+
+class ResourceDetailView(ResourceSingleMixin, DetailView):
+
+ template_name = "telemeta/resource_detail.html"
+
+
+class ResourceDetailDCView(ResourceDetailView):
+
+ template_name = "telemeta/resource_detail_dc.html"
+
+
+class ResourceEditView(ResourceSingleMixin, UpdateView):
+
+ template_name = 'telemeta/resource_edit.html'
+
+ def get_form_class(self):
+ self.type = self.kwargs['type']
+ self.setup(self.type)
+ return self.form
+
+ def form_valid(self, form):
+ messages.info(self.request, _("You have successfully updated your resource."))
+ return super(ResourceEditView, self).form_valid(form)
+
+ def get_success_url(self):
+ return reverse_lazy('telemeta-resource-detail', kwargs={'type':self.kwargs['type'], 'public_id':self.kwargs['public_id']})
+
+
+class ResourceAddView(ResourceMixin, CreateView):
+
+ template_name = 'telemeta/resource_add.html'
+
+ def get_queryset(self):
+ self.type = self.kwargs['type']
+ self.setup(self.type)
+ return self
+
+ def get_success_url(self):
+ return reverse_lazy('telemeta-resource-list', kwargs={'type':self.kwargs['type']})
+
+
+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)
+
+ def get_success_url(self):
+ return reverse_lazy('telemeta-resource-list', kwargs={'type':self.kwargs['type']})
+ # return reverse_lazy('telemeta-resource-detail', kwargs={'type':self.kwargs['type'], 'public_id':self.kwargs['public_id']})
+