diff options
author | Neha shah <shan.akshata@gmail.com> | 2012-06-07 17:29:39 +0530 |
---|---|---|
committer | Neha shah <shan.akshata@gmail.com> | 2012-06-07 17:29:39 +0530 |
commit | a43739bb925f1c7b825ded7da41c728066e39c90 (patch) | |
tree | aa7ac24b42aeb4e737b0193bdc11b27cf26e3d50 /gstudio/xmlrpc/rpc | |
parent | 700ee3fdfdeb7a069e44b4fd01d73c106628d310 (diff) | |
download | gnowsys-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/rpc')
-rw-r--r-- | gstudio/xmlrpc/rpc/.gitignore | 16 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/LICENSE | 24 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/MANIFEST.in | 3 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/README.rst | 36 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/__init__.py | 44 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/decorators.py | 175 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/dispatcher.py | 76 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mo | bin | 1030 -> 0 bytes | |||
-rw-r--r-- | gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.po | 49 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/setup.py | 31 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/templates/xmlrpc_get.html | 26 | ||||
-rw-r--r-- | gstudio/xmlrpc/rpc/views.py | 192 |
12 files changed, 0 insertions, 672 deletions
diff --git a/gstudio/xmlrpc/rpc/.gitignore b/gstudio/xmlrpc/rpc/.gitignore deleted file mode 100644 index 7b4dcf61..00000000 --- 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 8efdc935..00000000 --- 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 2f4671ba..00000000 --- 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 bcf4ac0a..00000000 --- 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 1d58f713..00000000 --- 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 4218a4fd..00000000 --- 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 f4014578..00000000 --- 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 Binary files differdeleted file mode 100644 index 06035ed2..00000000 --- a/gstudio/xmlrpc/rpc/locale/fr/LC_MESSAGES/django.mo +++ /dev/null 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 091e086f..00000000 --- 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 10b4b920..00000000 --- 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 4c9fdfc6..00000000 --- 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 1edfa37e..00000000 --- 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() |