summaryrefslogtreecommitdiff
path: root/gstudio/xmlrpc
diff options
context:
space:
mode:
authorNeha shah <shan.akshata@gmail.com>2012-06-07 17:29:39 +0530
committerNeha shah <shan.akshata@gmail.com>2012-06-07 17:29:39 +0530
commita43739bb925f1c7b825ded7da41c728066e39c90 (patch)
treeaa7ac24b42aeb4e737b0193bdc11b27cf26e3d50 /gstudio/xmlrpc
parent700ee3fdfdeb7a069e44b4fd01d73c106628d310 (diff)
downloadgnowsys-a43739bb925f1c7b825ded7da41c728066e39c90.tar.gz
Init.py functions made convention compliant.Metaweblog functions take input at list.URLs in demo changed to default django-xmlrpc.Bug in Rss feed fixed.setup.py bug fixed
Diffstat (limited to 'gstudio/xmlrpc')
-rw-r--r--gstudio/xmlrpc/__init__.py49
-rw-r--r--gstudio/xmlrpc/metaweblog.py185
-rw-r--r--gstudio/xmlrpc/rpc/.gitignore16
-rw-r--r--gstudio/xmlrpc/rpc/LICENSE24
-rw-r--r--gstudio/xmlrpc/rpc/MANIFEST.in3
-rw-r--r--gstudio/xmlrpc/rpc/README.rst36
-rw-r--r--gstudio/xmlrpc/rpc/__init__.py44
-rw-r--r--gstudio/xmlrpc/rpc/decorators.py175
-rw-r--r--gstudio/xmlrpc/rpc/dispatcher.py76
-rw-r--r--gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mobin1030 -> 0 bytes
-rw-r--r--gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.po49
-rw-r--r--gstudio/xmlrpc/rpc/setup.py31
-rw-r--r--gstudio/xmlrpc/rpc/templates/xmlrpc_get.html26
-rw-r--r--gstudio/xmlrpc/rpc/views.py192
14 files changed, 134 insertions, 772 deletions
diff --git a/gstudio/xmlrpc/__init__.py b/gstudio/xmlrpc/__init__.py
index 318e6d9..9dd4ca2 100644
--- a/gstudio/xmlrpc/__init__.py
+++ b/gstudio/xmlrpc/__init__.py
@@ -82,53 +82,50 @@ GSTUDIO_XMLRPC_METAWEBLOG = [
'metaWeblog.get_nbh'),
('gstudio.xmlrpc.metaweblog.new_media_object',
'metaWeblog.newMediaObject'),
- ('gstudio.xmlrpc.metaweblog.getNodetype',
+ ('gstudio.xmlrpc.metaweblog.get_nodetype',
'metaWeblog.getNodetype'),
- ('gstudio.xmlrpc.metaweblog.nidExists',
+ ('gstudio.xmlrpc.metaweblog.nid_exists',
'metaWeblog.nidExists'),
- ('gstudio.xmlrpc.metaweblog.getinfoFromSSID',
+ ('gstudio.xmlrpc.metaweblog.get_info_fromSSID',
'metaWeblog.getinfoFromSSID'),
- ('gstudio.xmlrpc.metaweblog.getNeighbourhood',
+ ('gstudio.xmlrpc.metaweblog.get_neighbourhood',
'metaWeblog.getNeighbourhood'),
- ('gstudio.xmlrpc.metaweblog.getAll',
+ ('gstudio.xmlrpc.metaweblog.get_all',
'metaWeblog.getAll'),
- ('gstudio.xmlrpc.metaweblog.getDatatype',
+ ('gstudio.xmlrpc.metaweblog.get_datatype',
'metaWeblog.getDatatype'),
- ('gstudio.xmlrpc.metaweblog.getAttributevalues',
+ ('gstudio.xmlrpc.metaweblog.get_attributevalues',
'metaWeblog.getAttributevalues'),
- ('gstudio.xmlrpc.metaweblog.getSubjecttypes',
+ ('gstudio.xmlrpc.metaweblog.get_subjecttypes',
'metaWeblog.getSubjecttypes'),
- ('gstudio.xmlrpc.metaweblog.getAttributeType',
+ ('gstudio.xmlrpc.metaweblog.get_attributeType',
'metaWeblog.getAttributeType'),
- ('gstudio.xmlrpc.metaweblog.getRoles',
+ ('gstudio.xmlrpc.metaweblog.get_roles',
'metaWeblog.getRoles'),
- ('gstudio.xmlrpc.metaweblog.getSubtypes',
+ ('gstudio.xmlrpc.metaweblog.get_subtypes',
'metaWeblog.getSubtypes'),
- ('gstudio.xmlrpc.metaweblog.getAllSubtypes',
+ ('gstudio.xmlrpc.metaweblog.get_all_subtypes',
'metaWeblog.getAllSubtypes'),
- ('gstudio.xmlrpc.metaweblog.getRestrictions',
+ ('gstudio.xmlrpc.metaweblog.get_restrictions',
'metaWeblog.getRestrictions'),
- ('gstudio.xmlrpc.metaweblog.getlatestSSID',
+ ('gstudio.xmlrpc.metaweblog.get_latest_SSID',
'metaWeblog.getlatestSSID'),
- ('gstudio.xmlrpc.metaweblog.getAllSnapshots',
+ ('gstudio.xmlrpc.metaweblog.get_all_snapshots',
'metaWeblog.getAllSnapshots'),
- ('gstudio.xmlrpc.metaweblog.setAttributetype',
+ ('gstudio.xmlrpc.metaweblog.set_attributetype',
'metaWeblog.setAttributetype'),
- ('gstudio.xmlrpc.metaweblog.setRelationtype',
+ ('gstudio.xmlrpc.metaweblog.set_relationtype',
'metaWeblog.setRelationtype'),
- ('gstudio.xmlrpc.metaweblog.setObjecttype',
+ ('gstudio.xmlrpc.metaweblog.set_objecttype',
'metaWeblog.setObjecttype'),
- ('gstudio.xmlrpc.metaweblog.setObject',
+ ('gstudio.xmlrpc.metaweblog.set_object',
'metaWeblog.setObject'),
- ('gstudio.xmlrpc.metaweblog.setAttribute',
+ ('gstudio.xmlrpc.metaweblog.set_attribute',
'metaWeblog.setAttribute'),
- ('gstudio.xmlrpc.metaweblog.setRelation',
+ ('gstudio.xmlrpc.metaweblog.set_relation',
'metaWeblog.setRelation'),
- ('gstudio.xmlrpc.metaweblog.getGbobjectNeighbourhood',
- 'metaWeblog.getGbobjectNeighbourhood')
-
-
-
+ ('gstudio.xmlrpc.metaweblog.get_gbobject_neighbourhood',
+ 'metaWeblog.getGbobjectNeighbourhood')
]
diff --git a/gstudio/xmlrpc/metaweblog.py b/gstudio/xmlrpc/metaweblog.py
index 4dd1fe1..6990ca1 100644
--- a/gstudio/xmlrpc/metaweblog.py
+++ b/gstudio/xmlrpc/metaweblog.py
@@ -381,27 +381,38 @@ def new_media_object(blog_id, username, password, media):
return {'url': default_storage.url(path)}
# Get functions start from here
-@xmlrpc_func(returns='string', args='int')
-def getNodetype(ssid):
- """Returns the nodetype of given nid """
+@xmlrpc_func(returns='string', args=['int'])
+def get_nodetype(nid):
+ """Returns the nodetype of given nid
+ => metaWeblog.getNodetype(nid)"""
try :
- g = Nodetype.objects.get(id=ssid)
- return (g.ref._meta.module_name)
- except Nodetype.DoesNotExist :
- return "Node with the given nid does not exist"
+ p = NID.objects.get(id = nid)
+ try :
+ g = Nodetype.objects.get(id=nid)
+ return (g.ref._meta.module_name)
+ except Nodetype.DoesNotExist :
+ return "Not of Type Nodetype "
+ except NID.DoesNotExist :
+ return "Node Does Not Exist"
-@xmlrpc_func(returns='int', args='string')
-def nidExists(nid):
- """Returns 1 if a node with given id exists, else returns a 0 """
- try:
- p = Nodetype.objects.get(title = nid)
- return 1
- except Nodetype.DoesNotExist:
- return 0
-
-@xmlrpc_func(returns='struct',args=['string'])
-def getinfoFromSSID(ssid_list) :
- """Given a list of ssids, it returns entire information of each ssid inside a dictionary with all the dictionaries contained within a list """
+@xmlrpc_func(returns='int', args=['string'])
+def nid_exists(nid):
+ """Returns 1 if a node with given id exists, else returns a 0
+ => metaWeblog.nidExists(nodetypetitle)"""
+ try :
+ p = NID.objects.get(title = nid)
+ try:
+ p = Nodetype.objects.get(title = nid)
+ return 1
+ except Nodetype.DoesNotExist:
+ return 0
+ except NID.DoesNotExist :
+ return "Node Does Not Exist"
+
+@xmlrpc_func(returns='struct',args=['struct'])
+def get_info_fromSSID(ssid_list) :
+ """Given a list of nids, it returns entire information of each ssid inside a dictionary with all the dictionaries contained within a list
+ => metaWeblog.getinfoFromSSID(nidlist)"""
lst = []
for ssid in ssid_list :
try :
@@ -411,13 +422,15 @@ def getinfoFromSSID(ssid_list) :
nbh = p.ref.get_nbh
lst.append(str(nbh))
except Nodetype.DoesNotExist :
- lst.append("Not of type Nodetype")
+ lst.append('Not of type Nodetype')
except NID.DoesNotExist :
- lst.append("Node Does Not Exist")
+ lst.append('Node Does Not Exist' )
return lst
-@xmlrpc_func(returns='struct', args=['string','string'])
-def getNeighbourhood(ssid_list, get_what):
+@xmlrpc_func(returns='struct', args=['struct','string'])
+def get_neighbourhood(ssid_list, get_what):
+ """ Given a list of nids,it returns the neighbourhood(nbh/rendered) of the Nodetype
+ => metaWeblog.getNeighbourhood(nidlist,nbh/rendered_nbh)"""
d = {}
for ssid in ssid_list:
try:
@@ -436,8 +449,10 @@ def getNeighbourhood(ssid_list, get_what):
d[str(ssid)] = "Node Does Not Exist"
return d
-@xmlrpc_func(returns='struct', args=['string','string'])
-def getGbobjectNeighbourhood(ssid_list, get_what):
+@xmlrpc_func(returns='struct', args=['struct','string'])
+def get_gbobject_neighbourhood(ssid_list, get_what):
+ """ Given a list of nids,it returns the neighbourhood(nbh/rendered) of the Gbobject
+ => metaWeblog.getGbobjectNeighbourhood(nidlist,nbh/rendered_nbh)"""
d = {}
for ssid in ssid_list:
try:
@@ -458,10 +473,11 @@ def getGbobjectNeighbourhood(ssid_list, get_what):
-@xmlrpc_func(returns='struct', args=['string'])
+@xmlrpc_func(returns='struct', args=['struct'])
-def getAttributeType(subjecttypelist):
- """given the list of subjecttype inids the method returns all the attributetypes attached. """
+def get_attributeType(subjecttypelist):
+ """given the list of subjecttype inids the method returns all the attributetypes attached.
+ => metaWeblog.getAttributeType(subjecttypeidlist)"""
d = {}
for s in subjecttypelist :
try :
@@ -479,10 +495,11 @@ def getAttributeType(subjecttypelist):
return d
# Get all function for getting all nodetypes
-@xmlrpc_func(returns='struct', args='string')
+@xmlrpc_func(returns='struct', args=['string'])
-def getAll(nodetype):
- """Given a class name it returns all the nids corresponding to their class name."""
+def get_all(nodetype):
+ """Given a class name it returns all the nids corresponding to their class name.
+ => metaWeblog.getAll(classname)"""
d = {}
try :
p = eval(nodetype)
@@ -494,10 +511,11 @@ def getAll(nodetype):
return d
-@xmlrpc_func(returns='struct', args=['string'])
+@xmlrpc_func(returns='struct', args=['struct'])
-def getDatatype(attrtype_ssid_list) :
- """Given a list of attributessids, it returns its datatypes """
+def get_datatype(attrtype_ssid_list) :
+ """Given a list of attributessids, it returns its datatypes.
+ => metaWeblog.getDatatype(attrtypenidlist)"""
d = {}
for l in attrtype_ssid_list :
try :
@@ -515,8 +533,9 @@ def getDatatype(attrtype_ssid_list) :
@xmlrpc_func(returns='struct', args=['string'])
-def getAttributevalues(Attrssidlist) :
- """Given a list of attributessid, it returns their values """
+def get_attributevalues(Attrssidlist) :
+ """Given a list of attributessid, it returns their values
+ => metaWeblog.getAttributevalues(attrnidlist)"""
d = {}
for l in Attrssidlist :
try :
@@ -531,9 +550,10 @@ def getAttributevalues(Attrssidlist) :
d[str(l)] = "Node Does Not Exist"
return d
-@xmlrpc_func(returns='struct', args='string')
-def getSubjecttypes( AttributeTypeNid ):
- """Given an attributetypenid, it returns the subjecttype participating in the attributetype """
+@xmlrpc_func(returns='struct', args=['string'])
+def get_subjecttypes( AttributeTypeNid ):
+ """Given an attributetypenid, it returns the subjecttype participating in the attributetype.
+ => metaWeblog.getSubjecttypes(attributetypenid)"""
try :
d = {}
t = NID.objects.get(id = AttributeTypeNid)
@@ -549,10 +569,11 @@ def getSubjecttypes( AttributeTypeNid ):
return "Node does not exist"
return d
-@xmlrpc_func(returns='struct', args='string')
+@xmlrpc_func(returns='struct', args=['string'])
-def getRoles(relationtypenid) :
- """given a relationtype nid this method returns the roles participating in the relationtype """
+def get_roles(relationtypenid) :
+ """given a relationtype nid this method returns the roles participating in the relationtype.
+ => metaWeblog.getRoles(relationtypenid)"""
try :
t = NID.objects.get(id = relationtypenid)
k = t.ref._meta.module_name
@@ -572,10 +593,11 @@ def getRoles(relationtypenid) :
return "Node Does Not Exist "
return d
-@xmlrpc_func(returns='struct', args='string')
+@xmlrpc_func(returns='struct', args=['string'])
-def getSubtypes(nodeid) :
- """Returns only the immediate subtype of the node specified"""
+def get_subtypes(nodeid) :
+ """Returns only the immediate subtype of the node specified.
+ => metaWeblog.getSubtypes(Nodetypeid)"""
try :
y = NID.objects.get(id = nodeid)
try :
@@ -590,10 +612,11 @@ def getSubtypes(nodeid) :
return " Node Does not exist"
return l
-@xmlrpc_func(returns='struct', args='string')
+@xmlrpc_func(returns='struct', args=['string'])
-def getAllSubtypes(nodeid) :
- """Returns all the 'subtypes' of the node specified"""
+def get_all_subtypes(nodeid) :
+ """Returns all the 'subtypes' of the node specified
+ => metaWeblog.getAllSubtypes(Nodetypenid)"""
try :
l = []
p = NID.objects.get(id = nodeid)
@@ -608,10 +631,11 @@ def getAllSubtypes(nodeid) :
return "Node Does not Exist"
return l
-@xmlrpc_func(returns=['struct'], args=['string'])
+@xmlrpc_func(returns=['struct'], args=['struct'])
-def getRestrictions(ATlist) :
- """Given a list of attributetype ssids, this method returns all the restrictions that the attributetypes have """
+def get_restrictions(ATlist) :
+ """Given a list of attributetype nids, this method returns all the restrictions that the attributetypes have.
+ => metaWeblog.getRestrictions(Attributetypenids)"""
d = {}
ft = []
for a in ATlist :
@@ -632,10 +656,11 @@ def getRestrictions(ATlist) :
d[str(a)] = "Node Does Not Exist"
return d
-@xmlrpc_func(returns='int', args='string')
+@xmlrpc_func(returns='int', args=['string'])
-def getlatestSSID(nid) :
- """Given the id, this method will return the latest ssid of the given id """
+def get_latest_SSID(nid) :
+ """Given the nid, this method will return the latest ssid of the given id
+ => metaWeblog.getlatestSSID(nid)"""
try :
p = NID.objects.get(id = nid)
n = p.get_ssid
@@ -648,9 +673,10 @@ def getlatestSSID(nid) :
except NID.DoesNotExist:
return "Node Does Not exist"
-@xmlrpc_func(returns='struct', args='int')
-def getAllSnapshots(nid) :
- """Given the id, this method will return all the ssids of the given id """
+@xmlrpc_func(returns='struct', args=['int'])
+def get_all_snapshots(nid) :
+ """Given the id, this method will return all the ssids of the given id.
+ => metaWeblog.getAllSnapshots(nid)"""
try :
p = NID.objects.get(id = nid)
n = p.get_ssid
@@ -660,8 +686,9 @@ def getAllSnapshots(nid) :
# Set functions begin from here
@xmlrpc_func(returns='string', args=['struct','string'])
-def setAttributetype(d,objid) :
-
+def set_attributetype(d,objid) :
+ """ Given a dictionary of title,slug,applicable_nodetype,objectid,it creates an Attributetype for that Objecttypeid
+ => metaWeblog.setAttributetype(d['title' = '',slug = '',applicable_nodetype = ''],objecttypeid)"""
try :
p = NID.objects.get(id = objid)
t = p.ref._meta.module_name
@@ -676,7 +703,7 @@ def setAttributetype(d,objid) :
else :
r = r + 1
if r == y :
- w = Attributetype(title = d['title'],applicable_nodetypes = d['nodetype'],subjecttype_id = objid,slug = d['slug'])
+ w = Attributetype(title = d['title'],applicable_nodetypes = d['applicable_nodetype'],subjecttype_id = objid,slug = d['slug'])
w.save()
return w.id
else :
@@ -688,7 +715,9 @@ def setAttributetype(d,objid) :
@xmlrpc_func(returns='int', args=['struct','string'])
-def setRelationtype(d,uid) :
+def set_relationtype(d,uid) :
+ """ Given a objecttypeid and a dictionary of title,slug,inverse,right_subjecttype_id,it creates an Relationtype for that Objecttype
+ => metaWeblog.setRelationtype(d['title' = '', slug = '', right_subjecttype_id = '', inverse = ''],objecttypeid)"""
try :
k = NID.objects.get(id = uid)
@@ -715,8 +744,9 @@ def setRelationtype(d,uid) :
@xmlrpc_func(returns='int', args=['struct','string'])
-def setObjecttype(d) :
-
+def set_objecttype(d) :
+ """ Given a dictionary of title,slug,it creates a Objecttype
+ => metaWeblog.setObjecttype(d['title' = '', slug = ''],objecttypeid)"""
k = Objecttype.objects.all()
u = len(k)
r = 0
@@ -735,7 +765,9 @@ def setObjecttype(d) :
@xmlrpc_func(returns='int', args=['struct','string'])
-def setObject(d,o) :
+def set_object(d,o) :
+ """ Given a objecttypeid and a dictionary of title,slug,it creates an Object for that objecttypeid
+ => metaWeblog.setAttributetype(d['title' = '',slug = ''],objecttypeid)"""
try :
k = NID.objects.get(id = o)
@@ -765,28 +797,31 @@ def setObject(d,o) :
@xmlrpc_func(returns='int', args=['struct','string'])
-def setAttribute(d,objid) :
+def set_attribute(d,objid) :
+ """ Given a objecttypeid and dictionary of attributetypetitle,subject_id,svalue,it creates an Attribute for the Attributetype of that objecttypeid
+ => metaWeblog.setAttributetype(d['attributetypetitle' = '',subject_id = '',svalue = ''],objecttypeid)"""
try :
k = NID.objects.get(id = objid)
t = k.ref._meta.module_name
if t == 'objecttype' or t == 'metatype' :
- p = Attributetype.objects.filter(subjecttype_id = objid)
- s = []
- for i in p :
- if (str(i.title) == d['attributetype']) :
- s = Attribute(attributetype_id = i.id,subject_id = d['subject_id'],svalue = d['svalue'])
- s.save()
- return s.id
+ p = Attributetype.objects.filter(subjecttype_id = objid)
+ s = []
+ for i in p :
+ if (str(i.title) == d['attributetypetitle']) :
+ s = Attribute(attributetype_id = i.id,subject_id = d['subject_id'],svalue = d['svalue'])
+ s.save()
+ return s.id
else :
return " The objectid entered is not a objecttype or metatype"
except NID.DoesNotExist:
return "Node does not Exist"
-
@xmlrpc_func(returns='int', args=['struct','string','string'])
-def setRelation(d,obj1,obj2) :
+def set_relation(d,obj1,obj2) :
+ """ Given objecttype1id and objecttype2id between whose relation is to be established and dictionary of relationtypename,left_subject_id,right_subject_id,it creates a relation between objects of the two objecttype specfied
+ => metaWeblog.setRelation(d['relationtypename' = '',left_subject_id = '',right_subject_id = ''],objecttypeid1,objecttypeid2)"""
try :
p = Relationtype.objects.filter(left_subjecttype_id = obj1,right_subjecttype_id = obj2)
s = []
@@ -798,6 +833,8 @@ def setRelation(d,obj1,obj2) :
except Relationtype.DoesNotExist :
return "Relationtype Does Not Exist"
+
+
diff --git a/gstudio/xmlrpc/rpc/.gitignore b/gstudio/xmlrpc/rpc/.gitignore
deleted file mode 100644
index 7b4dcf6..0000000
--- a/gstudio/xmlrpc/rpc/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-*~
-*.pyc
-TODO.txt
-README.html
-bin
-lib
-dist
-eggs
-parts
-build
-include
-downloads
-src_eggs
-develop-eggs
-.installed.cfg
-django_xmlrpc.egg-info/ \ No newline at end of file
diff --git a/gstudio/xmlrpc/rpc/LICENSE b/gstudio/xmlrpc/rpc/LICENSE
deleted file mode 100644
index 8efdc93..0000000
--- a/gstudio/xmlrpc/rpc/LICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright (c) 2007-2008, Graham Binns
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of this application nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY GRAHAM BINNS ''AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL GRAHAM BINNS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/gstudio/xmlrpc/rpc/MANIFEST.in b/gstudio/xmlrpc/rpc/MANIFEST.in
deleted file mode 100644
index 2f4671b..0000000
--- a/gstudio/xmlrpc/rpc/MANIFEST.in
+++ /dev/null
@@ -1,3 +0,0 @@
-include README.rst
-recursive-include django_xmlrpc/locale *
-recursive-include django_xmlrpc/templates *.html
diff --git a/gstudio/xmlrpc/rpc/README.rst b/gstudio/xmlrpc/rpc/README.rst
deleted file mode 100644
index bcf4ac0..0000000
--- a/gstudio/xmlrpc/rpc/README.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-==============
-Django XML-RPC
-==============
-
-django_xmlrpc offers a means by which a Django developer can expose their views (or indeed any other function) using XML-RPC.
-
-This is a fork of the version hosted at : https://code.launchpad.net/~aartemenko/django-xmlrpc/svetlyak40wt compatible with Django > 1.1.
-
-.. contents::
-
-Installation
-============
-
-You could retrieve the last sources from http://github.com/Fantomas42/django-xmlrpc and run the installation script ::
-
- $> python setup.py install
-
-or use pip ::
-
- $> pip install -e git://github.com/Fantomas42/django-xmlrpc.git#egg=django-xmlrpc
-
-Usage
-=====
-
-Register **django_xmlrpc** in your INSTALLED_APPS section of your project' settings.
-
-Then register methods you want to handle like this in your project' settings. ::
-
- >>> XMLRPC_METHODS = (('path.to.your.method', 'Method name'),
- ... ('path.to.your.othermethod', 'Other Method name'),)
-
-Finally we need to register the url of the XML-RPC server.
-Insert something like this in your project's urls.py: ::
-
- >>> url(r'^xmlrpc/$', 'django_xmlrpc.views.handle_xmlrpc', name='xmlrpc'),
-
diff --git a/gstudio/xmlrpc/rpc/__init__.py b/gstudio/xmlrpc/rpc/__init__.py
deleted file mode 100644
index 1d58f71..0000000
--- a/gstudio/xmlrpc/rpc/__init__.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""__init__ module for the django_xmlrpc package
-
-Authors::
- Graham Binns
- Julien Fache
-
-Credit must go to Brendan W. McAdams <brendan.mcadams@thewintergrp.com>, who
-posted the original SimpleXMLRPCDispatcher to the Django wiki:
-http://code.djangoproject.com/wiki/XML-RPC
-
-New BSD License
-===============
-Copyright (c) 2007, Graham Binns http://launchpad.net/~codedragon
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-VERSION = (0, 1, 1)
-__version__ = '.'.join(map(str, VERSION))
-
-from views import xmlrpcdispatcher
diff --git a/gstudio/xmlrpc/rpc/decorators.py b/gstudio/xmlrpc/rpc/decorators.py
deleted file mode 100644
index 4218a4f..0000000
--- a/gstudio/xmlrpc/rpc/decorators.py
+++ /dev/null
@@ -1,175 +0,0 @@
-"""Offers decorators to make the use of django_xmlrpc a great deal simpler
-
-Authors::
- Graham Binns,
- Reza Mohammadi
-
-Credit must go to Brendan W. McAdams <brendan.mcadams@thewintergrp.com>, who
-posted the original SimpleXMLRPCDispatcher to the Django wiki:
-http://code.djangoproject.com/wiki/XML-RPC
-
-New BSD License
-===============
-Copyright (c) 2007, Graham Binns http://launchpad.net/~codedragon
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-from xmlrpclib import Fault
-from django.contrib.auth import authenticate
-from django.utils.translation import gettext as _
-
-
-# Some constants for your pleasure
-#XXX: Any standardization?
-AUTHENTICATION_FAILED_CODE = 81
-PERMISSION_DENIED_CODE = 82
-
-
-class AuthenticationFailedException(Fault):
- """An XML-RPC fault to be raised when a permission_required authentication
- check fails
-
- Author
- """
- def __init__(self):
- Fault.__init__(self, AUTHENTICATION_FAILED_CODE,
- _('Username and/or password is incorrect'))
-
-
-class PermissionDeniedException(Fault):
- """An XML-RPC fault to be raised when a permission_required permission
- check fails
- """
- def __init__(self):
- Fault.__init__(self, PERMISSION_DENIED_CODE, _('Permission denied'))
-
-
-def xmlrpc_method(returns='string', args=None, name=None):
- """Adds a signature to an XML-RPC function and register
- it with the dispatcher.
-
- returns
- The return type of the function. This can either be a string
- description (e.g. 'string') or a type (e.g. str, bool) etc.
-
- args
- A list of the types of the arguments that the function accepts. These
- can be strings or types or a mixture of the two e.g.
- [str, bool, 'string']
- """
- # Args should be a list
- if args is None:
- args = []
-
- def _xmlrpc_func(func):
- """Inner function for XML-RPC method decoration. Adds a signature to
- the method passed to it.
-
- func
- The function to add the signature to
- """
- # If name is not None, register the method with the dispatcher.
- from django_xmlrpc.views import xmlrpcdispatcher
- if name is not None:
- xmlrpcdispatcher.register_function(func, name)
-
- # Add a signature to the function
- func._xmlrpc_signature = {
- 'returns': returns,
- 'args': args
- }
- return func
-
- return _xmlrpc_func
-
-xmlrpc_func = xmlrpc_method
-
-
-# Don't use this decorator when your service is going to be
-# available in an unencrpted/untrusted network.
-# Configure HTTPS transport for your web server.
-def permission_required(perm=None):
- """Decorator for authentication. Uses Django's built in authentication
- framework to provide authenticated-only and permission-related access
- to XML-RPC methods
-
- perm
- The permission (as a string) that the user must hold to be able to
- call the function that is decorated with permission_required.
- """
- def _dec(func):
- """An inner decorator. Adds the lookup code for the permission passed
- in the outer method to the function passed to it.
-
- func
- The function to add the permission check to
- """
- def __authenticated_call(username, password, *args):
- """Inner inner decorator. Adds username and password parameters to
- a given XML-RPC function for authentication and permission
- checking purposes and modifies the method signature appropriately
-
- username
- The username used for authentication
-
- password
- The password used for authentication
- """
- try:
- user = authenticate(username=username, password=password)
- if not user:
- raise AuthenticationFailedException
- if perm and not user.has_perm(perm):
- raise PermissionDeniedException
- except AuthenticationFailedException:
- raise
- except PermissionDeniedException:
- raise
- except:
- raise AuthenticationFailedException
- return func(user, *args)
-
- # Update the function's XML-RPC signature, if the method has one
- if hasattr(func, '_xmlrpc_signature'):
- sig = func._xmlrpc_signature
-
- # We just stick two string args on the front of sign['args'] to
- # represent username and password
- sig['args'] = (['string'] * 2) + sig['args']
- __authenticated_call._xmlrpc_signature = sig
-
- # Update the function's docstring
- if func.__doc__:
- __authenticated_call.__doc__ = func.__doc__ + \
- "\nNote: Authentication is required."""
- if perm:
- __authenticated_call.__doc__ += ' this function requires ' \
- + '"%s" permission.' % perm
-
- return __authenticated_call
-
- return _dec
diff --git a/gstudio/xmlrpc/rpc/dispatcher.py b/gstudio/xmlrpc/rpc/dispatcher.py
deleted file mode 100644
index f401457..0000000
--- a/gstudio/xmlrpc/rpc/dispatcher.py
+++ /dev/null
@@ -1,76 +0,0 @@
-"""Offers a simple XML-RPC dispatcher for django_xmlrpc
-
-Author::
- Graham Binns
-
-Credit must go to Brendan W. McAdams <brendan.mcadams@thewintergrp.com>, who
-posted the original SimpleXMLRPCDispatcher to the Django wiki:
-http://code.djangoproject.com/wiki/XML-RPC
-
-New BSD License
-===============
-Copyright (c) 2007, Graham Binns http://launchpad.net/~codedragon
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-from inspect import getargspec
-from SimpleXMLRPCServer import SimpleXMLRPCDispatcher
-from django.conf import settings
-
-
-# If we need to debug, now we know
-DEBUG = hasattr(settings, 'XMLRPC_DEBUG') and settings.XMLRPC_DEBUG
-
-
-class DjangoXMLRPCDispatcher(SimpleXMLRPCDispatcher):
- """A simple XML-RPC dispatcher for Django.
-
- Subclassess SimpleXMLRPCServer.SimpleXMLRPCDispatcher for the purpose of
- overriding certain built-in methods (it's nicer than monkey-patching them,
- that's for sure).
- """
-
- def system_methodSignature(self, method):
- """Returns the signature details for a specified method
-
- method
- The name of the XML-RPC method to get the details for
- """
- # See if we can find the method in our funcs dict
- # TODO: Handle this better: We really should return something more
- # formal than an AttributeError
- func = self.funcs[method]
-
- try:
- sig = func._xmlrpc_signature
- except:
- sig = {
- 'returns': 'string',
- 'args': ['string' for arg in getargspec(func)[0]],
- }
-
- return [sig['returns']] + sig['args']
diff --git a/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mo b/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 06035ed..0000000
--- a/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.po b/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 091e086..0000000
--- a/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: django-xmlrpc\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-31 15:33+0200\n"
-"PO-Revision-Date: 2010-07-31 15:50+0100\n"
-"Last-Translator: Fantomas <Fantomas42@gmail.com>\n"
-"Language-Team: Fantomas42 <fantomas42@gmail.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: French\n"
-"X-Poedit-Country: FRANCE\n"
-"X-Poedit-SourceCharset: utf-8\n"
-
-#: decorators.py:60
-msgid "Username and/or password is incorrect"
-msgstr "Nom d'utilisateur et/ou mot de passe incorrect"
-
-#: decorators.py:68
-msgid "Permission denied"
-msgstr "Permission refusée"
-
-#: templates/xmlrpc_get.html:4
-#: templates/xmlrpc_get.html.py:7
-msgid "XML-RPC Service"
-msgstr "Service XML-RPC"
-
-#: templates/xmlrpc_get.html:9
-msgid "You need to invoke this service using an XML-RPC Client."
-msgstr "Vous devez invoquer ce service en utilisant un client XML-RPC."
-
-#: templates/xmlrpc_get.html:11
-msgid "The following methods are available :"
-msgstr "Les méthodes suivantes sont disponibles :"
-
-#: templates/xmlrpc_get.html:17
-msgid "Types of argument"
-msgstr "Types d'argument"
-
-#: templates/xmlrpc_get.html:19
-msgid "Type of return"
-msgstr "Type de retour"
-
diff --git a/gstudio/xmlrpc/rpc/setup.py b/gstudio/xmlrpc/rpc/setup.py
deleted file mode 100644
index 10b4b92..0000000
--- a/gstudio/xmlrpc/rpc/setup.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import os
-from setuptools import setup, find_packages
-
-setup(name = 'django-xmlrpc',
- version = '0.1.4',
-
- description = 'XML-RPC Server App for the Django framework.',
- long_description=open(os.path.join('README.rst')).read(),
- keywords = 'django, service, xmlrpc',
-
- author = 'Graham Binns',
- author_email = 'graham.binns@gmail.com',
- maintainer = 'Fantomas42',
- maintainer_email = 'fantomas42@gmail.com',
- url = 'http://github.com/Fantomas42/django-xmlrpc',
-
- packages = find_packages(),
- classifiers=[
- 'Framework :: Django',
- 'Development Status :: 5 - Production/Stable',
- 'Environment :: Web Environment',
- 'Programming Language :: Python',
- 'Intended Audience :: Developers',
- 'Operating System :: OS Independent',
- 'Topic :: Software Development :: Libraries :: Python Modules',],
-
- license = 'New BSD License',
- include_package_data = True,
- zip_safe=False
- )
-
diff --git a/gstudio/xmlrpc/rpc/templates/xmlrpc_get.html b/gstudio/xmlrpc/rpc/templates/xmlrpc_get.html
deleted file mode 100644
index 4c9fdfc..0000000
--- a/gstudio/xmlrpc/rpc/templates/xmlrpc_get.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "XML-RPC Service" %}{% endblock %}
-
-{% block content %}
-<h2>{% trans "XML-RPC Service" %}</h2>
-
-<p>{% trans "You need to invoke this service using an XML-RPC Client." %}</p>
-
-<h3>{% trans "The following methods are available :" %}</h3>
-
-{% for m in methods %}
-<div class="functions">
- <h4>{{ m.0 }}</h4>
- <div class="function_desc">
- <strong>{% trans "Types of argument" %}{{ m.1.args|length|pluralize }} :</strong> {{ m.1.args }}
- <br />
- <strong>{% trans "Type of return" %} :</strong> {{ m.1.returns }}
- <br />
- <pre class="function_doc">{{ m.2 }}</pre>
- </div>
-</div>
-{% endfor %}
-{% endblock %}
-
diff --git a/gstudio/xmlrpc/rpc/views.py b/gstudio/xmlrpc/rpc/views.py
deleted file mode 100644
index 1edfa37..0000000
--- a/gstudio/xmlrpc/rpc/views.py
+++ /dev/null
@@ -1,192 +0,0 @@
-"""Uses SimpleXMLRPCServer's SimpleXMLRPCDispatcher to serve XML-RPC requests
-
-Authors::
- Graham Binns
- Reza Mohammadi
- Julien Fache
-
-Credit must go to Brendan W. McAdams <brendan.mcadams@thewintergrp.com>, who
-posted the original SimpleXMLRPCDispatcher to the Django wiki:
-http://code.djangoproject.com/wiki/XML-RPC
-
-New BSD License
-===============
-Copyright (c) 2007, Graham Binns http://launchpad.net/~codedragon
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of the <ORGANIZATION> nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-"""
-import sys
-
-import django
-from django.conf import settings
-from django.template import RequestContext
-from django.shortcuts import render_to_response
-from django.core.exceptions import ImproperlyConfigured
-from django.http import HttpResponse, HttpResponseServerError
-from gstudio.xmlrpc.metaweblog import *
-from django.utils.datastructures import SortedDict
-try:
- from django.views.decorators.csrf import csrf_exempt
-except ImportError:
- from django.contrib.csrf.middleware import csrf_exempt
-
-from dispatcher import DjangoXMLRPCDispatcher
-from decorators import xmlrpc_func
-
-
-# We create a local DEBUG variable from the data in settings.
-DEBUG = hasattr(settings, 'XMLRPC_DEBUG') and settings.XMLRPC_DEBUG
-
-# Declare xmlrpcdispatcher correctly depending on our python version
-if sys.version_info[:3] >= (2, 5,):
- xmlrpcdispatcher = DjangoXMLRPCDispatcher(allow_none=True, encoding=None)
-else:
- xmlrpcdispatcher = DjangoXMLRPCDispatcher()
-
-
-def request_datas(request):
- if django.VERSION[1] > 3:
- return request.body
- return request.raw_post_data
-
-
-@xmlrpc_func(returns='string', args=['string'])
-def test_xmlrpc(text):
- """Simply returns the args passed to it as a string"""
- return "Here's a response! %s" % str(text)
-
-
-@csrf_exempt
-def handle_xmlrpc(request):
- """Handles XML-RPC requests. All XML-RPC calls should be forwarded here
-
- request
- The HttpRequest object that carries the XML-RPC call. If this is a
- GET request, nothing will happen (we only accept POST requests)
- """
- if request.method == "POST":
- if DEBUG:
- print request_datas(request)
- try:
- response = HttpResponse(content_type='text/xml')
- response.write(
- xmlrpcdispatcher._marshaled_dispatch(request_datas(request)))
- if DEBUG:
- print response
- return response
- except:
- return HttpResponseServerError()
- else:
- methods = xmlrpcdispatcher.system_listMethods()
- method_list = []
-
- for method in methods:
- sig_ = xmlrpcdispatcher.system_methodSignature(method)
- sig = {
- 'returns': sig_[0],
- 'args': ", ".join(sig_[1:]),
- }
-
- # this just reads your docblock, so fill it in!
- method_help = xmlrpcdispatcher.system_methodHelp(method)
-
- method_list.append((method, sig, method_help))
-
- if hasattr(settings, 'XMLRPC_GET_TEMPLATE'):
- # This behaviour is deprecated
- if settings.DEBUG:
- print "Use of settings.XMLRPC_GET_TEMPLATE is deprecated " \
- + "Please update your code to use django_xmlrpc/templates"
- template = settings.XMLRPC_GET_TEMPLATE
- else:
- template = 'xmlrpc_get.html'
- return render_to_response(template, {'methods': method_list},
- context_instance=RequestContext(request))
-
-
-# Load up any methods that have been registered with the server in settings
-if hasattr(settings, 'XMLRPC_METHODS'):
- for path, name in settings.XMLRPC_METHODS:
- # if "path" is actually a function, just add it without fuss
- if callable(path):
- xmlrpcdispatcher.register_function(path, name)
- continue
-
- # Otherwise we try and find something that we can call
- i = path.rfind('.')
- module, attr = path[:i], path[i + 1:]
-
- try:
- mod = __import__(module, globals(), locals(), [attr])
- except ImportError, ex:
- raise ImproperlyConfigured("Error registering XML-RPC method: " \
- + "module %s can't be imported" % module)
-
- try:
- func = getattr(mod, attr)
- except AttributeError:
- raise ImproperlyConfigured('Error registering XML-RPC method: ' \
- + 'module %s doesn\'t define a method "%s"' % (module, attr))
-
- if not callable(func):
- raise ImproperlyConfigured('Error registering XML-RPC method: ' \
- + '"%s" is not callable in module %s' % (attr, module))
-
- #xmlrpcdispatcher.register_function(func, name)
- xmlrpcdispatcher.register_function(getNodetype,'getNodetype')
- xmlrpcdispatcher.register_function(nidExists,'nidExists')
- xmlrpcdispatcher.register_function(getinfoFromSSID,'getinfoFromSSID')
- xmlrpcdispatcher.register_function(getNeighbourhood,'getNeighbourhood')
- xmlrpcdispatcher.register_function(get_nbh,'get_nbh')
- xmlrpcdispatcher.register_function(getAll,'getAll')
- xmlrpcdispatcher.register_function(getDatatype,'getDatatype')
- xmlrpcdispatcher.register_function(getAttributevalues,'getAttributevalues')
- xmlrpcdispatcher.register_function(getSubjecttypes,'getSubjecttypes')
- xmlrpcdispatcher.register_function(getAttributeType,'getAttributeType')
- xmlrpcdispatcher.register_function(getRoles,'getRoles')
- xmlrpcdispatcher.register_function(getSubtypes,'getSubtypes')
- xmlrpcdispatcher.register_function(getAllSubtypes,'getAllSubtypes')
- xmlrpcdispatcher.register_function(getRestrictions,'getRestrictions')
- xmlrpcdispatcher.register_function(getlatestSSID,'getlatestSSID')
- xmlrpcdispatcher.register_function(getAllSnapshots,'getAllSnapshots')
- xmlrpcdispatcher.register_function(setAttributetype,'setAttributetype')
- xmlrpcdispatcher.register_function(setRelationtype,'setRelationtype')
- xmlrpcdispatcher.register_function(setObjecttype,'setObjecttype')
- xmlrpcdispatcher.register_function(setObject,'setObject')
- xmlrpcdispatcher.register_function(setAttribute,'setAttribute')
- xmlrpcdispatcher.register_function(setRelation,'setRelation')
- xmlrpcdispatcher.register_function(getGbobjectNeighbourhood,'getGbobjectNeighbourhood')
-
-
-
-
-
-
-# Finally, register the introspection and multicall methods with the XML-RPC
-# namespace
-xmlrpcdispatcher.register_introspection_functions()
-xmlrpcdispatcher.register_multicall_functions()