From: yomguy Date: Mon, 31 Jan 2011 16:17:39 +0000 (+0100) Subject: add a JSON-RPC server, add MediaItemMarker to models, add simple methods and urls... X-Git-Tag: 1.1~473 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=2f3bc9398633756776bd66655e2bc89eb5150549;p=telemeta.git add a JSON-RPC server, add MediaItemMarker to models, add simple methods and urls to manipulate markers --- diff --git a/INSTALL b/INSTALL index e3c4fc5f..9369bbb4 100644 --- a/INSTALL +++ b/INSTALL @@ -61,6 +61,16 @@ Read the README and INSTALL file, install dependencies and then:: sudo python setup.py install +Install JSON-RPC server +------------------------ + +In order to use markers on the player, you will need a JSONN-RPC server for django:: + + git clone git://github.com/samuraisam/django-json-rpc.git + cd django-json-rpc + python setup.py install + + Install Telemeta ------------------ @@ -116,7 +126,7 @@ Modifiy the following variables: ADMINS = telemeta requires that you indicate an administrator here DATABASES = your database setting dict (don't forget to create the database if needed) MEDIA_ROOT = absolute path to the media directory you just created - INSTALLED_APPS = add 'telemeta' to the tuple + INSTALLED_APPS = add 'telemeta' and 'jsonrpc' to the tuple Add the following variables: diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 4e21a9b9..cf7c4f83 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -359,3 +359,18 @@ class PlaylistResource(ModelCore): class MediaInvalidCodeError(Exception): pass +class MediaItemMarker(ModelCore): + "2D marker object : text value vs. time" + + element_type = 'marker' + item_id = CharField(_('item_id'), required=True) + public_id = CharField(_('public_id'), required=True) + time = CharField(_('time'), required=True) + description = TextField(_('description')) + author = CharField(_('author')) + + class Meta(MetaCore): + db_table = 'media_markers' + + def __unicode__(self): + return self.time + ' : ' + self.description + '(' + self.author + ')' diff --git a/telemeta/urls.py b/telemeta/urls.py index 5cf4ffba..a5253645 100644 --- a/telemeta/urls.py +++ b/telemeta/urls.py @@ -35,8 +35,9 @@ # Author: Olivier Guilyardi from django.conf.urls.defaults import * -from telemeta.models import MediaItem, MediaCollection +from telemeta.models import MediaItem, MediaCollection, MediaItemMarker from telemeta.web.base import WebView +from jsonrpc import jsonrpc_site import os.path import telemeta.config @@ -176,4 +177,9 @@ urlpatterns = patterns('', url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'}, name="telemeta-login"), url(r'^logout/$', web_view.logout, name="telemeta-logout"), + + # JSON RPC + url(r'^json/browse/', 'jsonrpc.views.browse', name="jsonrpc_browser"), # for the graphical browser/web console only, omissible + url(r'^json/$', jsonrpc_site.dispatch, name='jsonrpc_mountpoint'), + url(r'^json/(?P[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch), # for HTTP GET only, also omissible ) diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 50c00dbe..e722f5a6 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -38,6 +38,8 @@ import sys import datetime import timeside +from jsonrpc import jsonrpc_method + from django.template import RequestContext, loader from django import template from django.http import HttpResponse @@ -50,7 +52,7 @@ from django.contrib.auth.decorators import login_required from django.core.context_processors import csrf from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup -from telemeta.models import dublincore, Enumeration +from telemeta.models import dublincore, Enumeration, MediaItemMarker import telemeta.interop.oai as oai from telemeta.interop.oaidatasource import TelemetaOAIDataSource from django.core.exceptions import ObjectDoesNotExist @@ -60,6 +62,7 @@ from telemeta.util.logger import Logger from telemeta.cache import TelemetaCache import telemeta.web.pages as pages + def render(request, template, data = None, mimetype = None): return render_to_response(template, data, context_instance=RequestContext(request), mimetype=mimetype) @@ -527,3 +530,22 @@ class WebView(object): def logout(self, request): auth.logout(request) return redirect('telemeta-home') + + @jsonrpc_method('telemeta.add_marker') + def add_marker(request, item_id, public_id, time, description): + # FIXME: get current logged author + author = 'test' +# item = MediaItem.objects.get(public_id=item_id) + m = MediaItemMarker(item_id=item_id) + m.public_id = public_id + m.time = time + m.description = description + m.author= author + m.save() +# return m.__dict__ + + @jsonrpc_method('telemeta.del_marker') + def del_marker(request, public_id): + m = MediaItemMarker.objects.get(public_id=public_id) + m.delete() +