# HG changeset patch # User cavaliet # Date 1312883472 -7200 # Node ID 854f0305d86660fa9d645fed23304da02f41168a # Parent 8c90de3216f9e56c09243db63cfae2bed220cbcf First step of group management : tab, template, quick search, css. diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/groups.html Tue Aug 09 11:51:12 2011 +0200 @@ -0,0 +1,109 @@ +{% extends "ldt/ldt_utils/workspace.html" %} +{% load i18n %} + + +{% block js_declaration %} +{{block.super}} + +{% endblock %} + +{% block content %} +
+ {% if groups and groups.all|length > 0 %} +
+
+
{% trans "My groups" %}
+
+
+
+ {% trans "Click on the line to see the group's projects" %} +
+ + + + {% for group in groups.all %} + + + + {% endfor %} + +
{{ group.name }}
+
+
+
+
+
{% trans "The group's projects" %}
+ +
+
+ {% include "ldt/ldt_utils/partial/projectslist.html" %} +
+
+ {% else %} +

{% trans "You do not belong to any group." %}

+ {% endif %} +
+{% endblock %} + diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html Tue Aug 09 11:51:12 2011 +0200 @@ -24,9 +24,9 @@ {% ifequal project.state 2 %} - {{ project.title }} + {% if show_username %}{{ project.owner.user.username }} : {% endif %}{{ project.title }} {% else %} - {{ project.title }} + {% if show_username %}{{ project.owner.user.username }} : {% endif %}{{ project.title }} {% endifequal %} diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/ldt_utils/urls.py --- a/src/ldt/ldt/ldt_utils/urls.py Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/urls.py Tue Aug 09 11:51:12 2011 +0200 @@ -9,6 +9,8 @@ url(r'^searchInit/(?P.*)/(?P.*)$', 'views.searchInit'), url(r'^searchForm/$', 'views.searchForm'), url(r'^published/$', 'views.published_project'), + url(r'^groups/$', 'views.groups'), + url(r'^get_group_projects/$', 'views.get_group_projects'), url(r'^search/$', 'views.searchIndex'), url(r'^search/(?P.*)/(?P.*)$', 'views.searchIndexGet'), url(r'^searchLdt/(?P.*)/(?P.*)$', 'views.searchLdt'), @@ -25,6 +27,7 @@ url(r'^rdf/id/(?P.*)$', 'views.project_annotations_rdf'), url(r'^/?$', "views.workspace", name="root-view"), url(r'^filterprojects/_(?P[\w\%\_\-\+]*?)/(?Ptrue|false)/(?P\d)$', "views.projectsfilter",), + url(r'^filterprojects/_(?P[\w\%\_\-\+]*?)/(?Ptrue|false)/(?P\d)/(?P.*)$', "views.projectsfilter",), url(r'^filtercontents/_(?P[\w\%\_\-\+]*?)/$', "views.contentsfilter",), (r'^embedpopup/?$', "views.popup_embed"), url(r'^segment/(?P.*)/(?P.*)/(?P.*)/(?P.*)/(?P.*)/$', 'views.index_segment'), diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/ldt_utils/views.py --- a/src/ldt/ldt/ldt_utils/views.py Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/views.py Tue Aug 09 11:51:12 2011 +0200 @@ -1,5 +1,6 @@ from django.conf import settings from django.contrib.auth.decorators import login_required +from django.contrib.auth.models import User, Group from django.core.urlresolvers import reverse from django.db.models import Q from django.forms.models import model_to_dict @@ -34,6 +35,43 @@ import subprocess import re import datetime + +from django.db.backends.postgresql_psycopg2.base import psycopg2 + + +def import_rs(request): + # Connexion + conn = psycopg2.connect(database="test_import_rs", user="admin", password="admin") + cur = conn.cursor() + # Get all "regarssignes" contents + cur.execute("SELECT * from ldt_content") + rows = cur.fetchall() + s = "Show me the databases:\n" + for row in rows: + s += "\n " + str(row) + # (id-0, u'iri_id'-1, u'iri_url'-2, u'videopath'-3, datetime creation_date-4, datetime update_date-5, u'title'-6, description-7, eternal_id-8) + # (1, u'laurentcantet_entrelesmurs', u'laurentcantet_entrelesmurs/laurentcantet_entrelesmurs.iri', u'rtmp://media.iri.centrepompidou.fr/ddc_player/video/regardssignes/', datetime.datetime(2010, 2, 17, 5, 24, 13, 69794, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=60, name=None)), datetime.datetime(2010, 2, 17, 5, 24, 13, 91656, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=60, name=None)), u'Entre Les Murs', None, None) + # Get duration from the iri file + prePath = u"/Users/tc/dev/eclipse_workspace/regardssignes_svn/web/static/media/ldt/" + doc = lxml.etree.parse(prePath + row[2]) + res = doc.xpath("/iri/body/medias/media[@id='video']/video") + if len(res) > 0: + try: + dur = int(res[0].get(u'dur', 0) or 0) + except: + dur = 3600000 + else: + dur = 3600000 + # Build platform media and platform content from "regarssignes" contents + media = Media.objects.create(external_id=row[8], creation_date=row[4], update_date=row[5], videopath=row[3], duration=dur, + description=row[7], title=row[6], src=(row[1]+u".flv"), mimetype_field="('video/x-flv', None)") + media.save() + + content = Content.objects.create(iri_id=row[1], iriurl=row[2], creation_date=row[4], update_date=row[5], title=row[6], description=row[7], + content_creation_date=row[4], duration=dur, media_obj=media) + content.save() + + return HttpResponse(s, mimetype="text/plain") @@ -52,7 +90,22 @@ return render_to_response("ldt/ldt_utils/workspace.html", {'contents': content_list, 'projects': project_list, 'is_gecko': is_gecko}, - context_instance=RequestContext(request)) + context_instance=RequestContext(request)) + + +@login_required +def groups(request): + + # get list of all published projects + group_list = request.user.groups #@UndefinedVariable + + is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); + + # render list + return render_to_response("ldt/ldt_utils/groups.html", + {'groups': group_list, + 'is_gecko': is_gecko}, + context_instance=RequestContext(request)) @login_required @@ -112,7 +165,7 @@ @login_required -def projectsfilter(request, filter, is_owner=False, status=0): +def projectsfilter(request, filter, is_owner=False, status=0, id_group=None): is_owner = boolean_convert(is_owner) status = int(status) @@ -133,10 +186,19 @@ if len(filter) > 0 and filter[0] == '_': filter = filter[1:] query &= Q(title__icontains=filter) - - project_list = Project.objects.filter(query) #@UndefinedVariable is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); + show_username = False + + if id_group > 0: + # Get group, user and project_list + grp = Group.objects.get(id=id_group) #@UndefinedVariable + users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable + query &= Q(owner__user__in=users) #@UndefinedVariable + project_list = Project.objects.filter(query).extra(select={'lower_title': 'lower(title)'}).order_by('owner__user__username','lower_title') #@UndefinedVariable + show_username = True + else : + project_list = Project.objects.filter(query) #@UndefinedVariable # Template depends on the projects's status if status == 2 : @@ -145,7 +207,7 @@ url_templ = "ldt/ldt_utils/partial/projectslist.html" return render_to_response(url_templ, - {'projects': project_list, 'is_gecko': is_gecko}, + {'projects': project_list, 'show_username':show_username, 'is_gecko': is_gecko}, context_instance=RequestContext(request)) @@ -1040,4 +1102,21 @@ else: return HttpResponse("", mimetype="text/plain") except Exception as inst: - return HttpResponse(str(inst), mimetype="text/plain") \ No newline at end of file + return HttpResponse(str(inst), mimetype="text/plain") + + +@login_required +def get_group_projects(request): + + # Get group, user and project_list + grp = Group.objects.get(id=request.POST["id_group"]) #@UndefinedVariable + users = User.objects.filter(groups__in=[grp]) #@UndefinedVariable + project_list = Project.objects.filter(owner__user__in=users).extra(select={'lower_title': 'lower(title)'}).order_by('owner__user__username','lower_title') #@UndefinedVariable + + is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1); + + # render list + return render_to_response("ldt/ldt_utils/partial/projectslist.html", + {'projects': project_list, 'show_username':True, + 'is_gecko': is_gecko}, + context_instance=RequestContext(request)) \ No newline at end of file diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/static/ldt/css/style.css --- a/src/ldt/ldt/static/ldt/css/style.css Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/static/ldt/css/style.css Tue Aug 09 11:51:12 2011 +0200 @@ -195,6 +195,7 @@ } #inner_content { + min-height: 600px; padding: 40px 0px 50px 0px; } diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/static/ldt/css/workspace.css --- a/src/ldt/ldt/static/ldt/css/workspace.css Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/static/ldt/css/workspace.css Tue Aug 09 11:51:12 2011 +0200 @@ -82,6 +82,12 @@ tr.projectscontentsevenline { background: white; } +tr.update_group_projects:hover { + background: lightblue; +} +td.align_right { + text-align: right; +} /* make the TH elements pretty */ @@ -93,6 +99,9 @@ padding: 1px 2px; text-align: left; } +.groupsheader { + text-transform:none; +} #contentsheader { @@ -146,6 +155,7 @@ } .titlediv { + min-height: 46px; vertical-align: middle; } @@ -186,3 +196,7 @@ margin-right: 20px; margin-top: 20px; } + +.next_icon { + display: none; +} diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/static/ldt/js/projectscontents.js --- a/src/ldt/ldt/static/ldt/js/projectscontents.js Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/static/ldt/js/projectscontents.js Tue Aug 09 11:51:12 2011 +0200 @@ -132,6 +132,7 @@ target.nextAll(".searchclear").hide(); var filterVal = "_" + escape(target.realVal()); url = url.replace('__FILTER__',filterVal); + url = url.replace('__ID_GROUP__',$('#id_group').val()); $.ajax({ url: url, cache: false, diff -r 8c90de3216f9 -r 854f0305d866 src/ldt/ldt/templates/ldt/ldt_base.html --- a/src/ldt/ldt/templates/ldt/ldt_base.html Thu Aug 04 13:08:04 2011 +0200 +++ b/src/ldt/ldt/templates/ldt/ldt_base.html Tue Aug 09 11:51:12 2011 +0200 @@ -108,6 +108,7 @@
{% if user.is_authenticated %} {% url ldt.ldt_utils.views.workspace as workspace_url %} + {% url ldt.ldt_utils.views.groups as groups_url %} {% url ldt.ldt_utils.views.published_project as published_project_url %} {% url ldt.ldt_utils.views.list_ldt as space_url %} {% url ldt.ldt_utils.views.list_content as content_url %} @@ -115,6 +116,7 @@ {% url ldt.ldt_utils.views.searchForm as search_url %}