# HG changeset patch # User cavaliet # Date 1368701289 -7200 # Node ID d0447a83ca2b738d33ce14c442b35370cac82e9e # Parent 08d053be244093874f655844fe0f6fe84109bad7 projet list view and resource list view. diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/static/metadatacomposer/js/resource_pagination.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/metadatacomposer/static/metadatacomposer/js/resource_pagination.js Thu May 16 12:48:09 2013 +0200 @@ -0,0 +1,21 @@ +function init_content_pagination_events(){ + // Load pagination for contents + $(document).on('click', 'a.content_pagination', function(e){ + e.preventDefault();e.stopPropagation(); + var url = $(this).attr('href'); + console.log("coucou url = " + url); + $.ajax({ + url: url, + cache: false, + type: 'GET', + success: function(data, status, request) { + $("#content_list_container").html(data); + init_content_pagination_events(); + }, + error: function(jqXHR, textStatus, errorThrown) { + resp = $.parseJSON(jqXHR.responseText); + alert(resp.message); + } + }); + }); +} \ No newline at end of file diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/templates/metadatacomposer_home.html --- a/src/metadatacomposer/templates/metadatacomposer_home.html Wed May 15 17:21:21 2013 +0200 +++ b/src/metadatacomposer/templates/metadatacomposer_home.html Thu May 16 12:48:09 2013 +0200 @@ -29,19 +29,21 @@
+ {% block containers %} +

Derniers projets

@@ -102,14 +104,18 @@ {% endfor %}
+ + {% endblock %}
{% endblock %} + {% block modal_divs %} + {% endblock %} {% block js_import %} - - + + {% endblock %} {% endblock %} diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/templates/metadatacomposer_project_list.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/metadatacomposer/templates/metadatacomposer_project_list.html Thu May 16 12:48:09 2013 +0200 @@ -0,0 +1,86 @@ +{% extends "metadatacomposer_home.html" %} +{% load static %} +{% load i18n %} +{% load analytics %} +{% load thumbnail %} +{% load front_tags %} + +{% block title %}{% trans "Project list" %}{% endblock %} + +{% block containers %} +
+
+

Liste des projets

+ +
+ + + + + + + + + + + + + + {% for p in results.object_list %} + + + + + + + + + + {% endfor %} + +
AperçuTitreMédia associéModificationURLEmbedActions
{% thumbnail p.image "60x60" crop="center" format="PNG" as im %}{% empty %}{% endthumbnail %}{{ p.title }}{% with c=p.contents.all|first %}{{ c.title }}{% endwith %}{{ p.modification_date|date:"Y/m/d" }} +
+ + +
+
+
+ + +
+
+ + + + + + + + + +
+
+ +
+{% endblock %} diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/templates/metadatacomposer_resource_list.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/metadatacomposer/templates/metadatacomposer_resource_list.html Thu May 16 12:48:09 2013 +0200 @@ -0,0 +1,145 @@ +{% extends "metadatacomposer_home.html" %} +{% load static %} +{% load i18n %} +{% load analytics %} +{% load thumbnail %} +{% load front_tags %} + +{% block title %}{% trans "Project list" %}{% endblock %} + +{% block containers %} +
+ + +
+ + +
+ +
+
+
+{% endblock %} +{% block modal_divs %} + + + +{% endblock %} +{% block js_import %} + + + + + + + + +{% endblock %} diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/templates/partial/resource_content_list.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/metadatacomposer/templates/partial/resource_content_list.html Thu May 16 12:48:09 2013 +0200 @@ -0,0 +1,61 @@ +{% load i18n %} +{% load front_tags %} + + + + + + + + + + + + {% for res in content_results %} + + + + + + + + {% endfor %} + +
AperçuTitreProjets associésDate de modificationActions
{{ res.content.title }} + + {{ res.content.update_date|date:"Y/m/d" }} + + + + +
+ \ No newline at end of file diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/urls.py --- a/src/metadatacomposer/urls.py Wed May 15 17:21:21 2013 +0200 +++ b/src/metadatacomposer/urls.py Thu May 16 12:48:09 2013 +0200 @@ -1,8 +1,12 @@ from django.conf.urls.defaults import patterns, url -from metadatacomposer.views import MetadataComposerHome +from metadatacomposer.views import MetadataComposerHome, MetadataComposerProjectList,\ + MetadataComposerResourceList, MetadataComposerContentPagination urlpatterns = patterns('', url(r'^jsi18n/(?P\S+?)/$', 'django.views.i18n.javascript_catalog', name='jsi18n'), + url(r'^(?P.*)/projectlist/$', MetadataComposerProjectList.as_view(), name="composer_project_list"), + url(r'^(?P.*)/resourcelist/$', MetadataComposerResourceList.as_view(), name="composer_resource_list"), + url(r'^(?P.*)/contentpage/$', MetadataComposerContentPagination.as_view(), name="composer_content_page"), url(r'^(?P.*)/$', MetadataComposerHome.as_view(), name="composer_home"), url(r'^$', MetadataComposerHome.as_view(), name="composer_home"), ) diff -r 08d053be2440 -r d0447a83ca2b src/metadatacomposer/views.py --- a/src/metadatacomposer/views.py Wed May 15 17:21:21 2013 +0200 +++ b/src/metadatacomposer/views.py Thu May 16 12:48:09 2013 +0200 @@ -11,7 +11,7 @@ #import logging #import re -class MashupContextView(View): +class MetadataComposerContextView(View): branding = "iri" @@ -20,9 +20,10 @@ context["branding"] = self.branding context["top_header_partial"] = "partial/%s_composer_header.html" % self.branding return context - + -class MetadataComposerHome(TemplateResponseMixin, MashupContextView): + +class MetadataComposerHome(TemplateResponseMixin, MetadataComposerContextView): def get_template_names(self): return "metadatacomposer_home.html" @@ -40,5 +41,103 @@ context = self.get_context_dict(request) context.update({"projects":projects, "contents": contents}) return self.render_to_response(context) + + + +class MetadataComposerProjectList(TemplateResponseMixin, MetadataComposerContextView): + def get_template_names(self): + return "metadatacomposer_project_list.html" + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(MetadataComposerProjectList, self).dispatch(*args, **kwargs) + + def get(self, request, branding="iri", **kwargs): + self.branding = branding + page = request.GET.get("page") or 1 + + projects = Project.safe_objects.prefetch_related("contents").order_by('-modification_date').filter(owner=request.user) + nb = getattr(settings, 'METADATACOMPOSER_ELEMENTS_PER_PAGE', 9) + if page=="x": + nb = projects.count() + + paginator = Paginator(projects, nb) + try: + results = paginator.page(page) + except (EmptyPage, InvalidPage): + results = paginator.page(paginator.num_pages) + + context = self.get_context_dict(request) + context.update({"results":results}) + return self.render_to_response(context) + + + +class MetadataComposerResourceList(TemplateResponseMixin, MetadataComposerContextView): + + def get_template_names(self): + return "metadatacomposer_resource_list.html" + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(MetadataComposerResourceList, self).dispatch(*args, **kwargs) + + def get(self, request, branding="iri", **kwargs): + self.branding = branding + + # We get the first page of contents + content_results = get_contents_and_projects(1, request.user) + # We get the first page of images + + context = self.get_context_dict(request) + context.update({"content_results":content_results}) + return self.render_to_response(context) + + + +class MetadataComposerContentPagination(TemplateResponseMixin, MetadataComposerContextView): + + def get_template_names(self): + return "partial/resource_content_list.html" + + @method_decorator(login_required) + def dispatch(self, *args, **kwargs): + return super(MetadataComposerContentPagination, self).dispatch(*args, **kwargs) + + def get(self, request, branding="iri", **kwargs): + self.branding = branding + page = request.GET.get("page") or 1 + + content_results = get_contents_and_projects(page, request.user) + + context = self.get_context_dict(request) + context.update({"content_results":content_results}) + return self.render_to_response(context) + + + +def get_contents_and_projects(page, user): + + # We get the current's page contents + contents = Content.safe_objects.order_by('-update_date') + + nb = getattr(settings, 'METADATACOMPOSER_ELEMENTS_PER_PAGE', 9) + if page=="x": + nb = contents.count() + + paginator = Paginator(contents, nb) + try: + results = paginator.page(page) + except (EmptyPage, InvalidPage): + results = paginator.page(paginator.num_pages) + + # We add the user's projects for each content + results_object_list = [] + for content in results.object_list: + projects = content.project_set.all().filter(owner=user) + results_object_list.append({"content":content, "projects":projects}) + results.object_list = results_object_list + + return results \ No newline at end of file