]> git.parisson.com Git - telemeta.git/commitdiff
add a JSON-RPC server, add MediaItemMarker to models, add simple methods and urls...
authoryomguy <yomguy@parisson.com>
Mon, 31 Jan 2011 16:17:39 +0000 (17:17 +0100)
committeryomguy <yomguy@parisson.com>
Mon, 31 Jan 2011 16:17:39 +0000 (17:17 +0100)
INSTALL
telemeta/models/media.py
telemeta/urls.py
telemeta/web/base.py

diff --git a/INSTALL b/INSTALL
index e3c4fc5f599d787186891380be4c7b4e9321acfb..9369bbb4b0cc2c013394ba24b439645cad0dbd27 100644 (file)
--- 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:
     
index 4e21a9b9efb0b9515d21322d67a66374d0c6afb0..cf7c4f83dd5d79ac9ce267d7f4d39bec09a41955 100644 (file)
@@ -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 + ')'
index 5cf4ffba5734199f87fb9e292269cbdfd164b328..a52536452ba33b8f58d8917e37a3531cdfc37e76 100644 (file)
@@ -35,8 +35,9 @@
 # Author: Olivier Guilyardi <olivier@samalyse.com>
 
 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<method>[a-zA-Z0-9.]+)$', jsonrpc_site.dispatch),  # for HTTP GET only, also omissible
 )
index 50c00dbe14d219e99ca5b3535ce931dd6a27bb68..e722f5a60174d41c074917347d27fe0ec8ee6e70 100644 (file)
@@ -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()
+