Skip to main content

Django app for simple create json-rpc like webservices

Project description

Este paquete genera una muy simple interfaz (parecida a json-rpc) de comunicación con su aplicación.

SETUP

  1. Install django-summernote to your python environment.

pip install django-summernote
  1. Add django_summernote to INSTALLED_APP in settings.py.

INSTALLED_APPS += ('simple_webservice', )
  1. Add django_summernote.urls to urls.py.

urlpatterns = patterns('',
    ...
    url(r'^ws/', include('simple_webservice.urls', namespace='ws')),
    ...
)
  1. Add webservice_autodiscover() an the top os urls.py

from simple_webservice import webservice_autodiscover
webservice_autodiscover()

urlpatterns = patterns('',
    ...
)

USAGE

  1. create a file webservices.py inside the app with the webservices

  2. Inside the file copy and paste ne next line

import simple_webservice as ws
  1. Puedes agregar las operaciones comunes de sobre los modelos que quieres exponer como tus webservices, y puedes restringir el acceso a esos servicios por ejemplo, si deseamos darle permiso de lectura al modelo User del sistema de autenticacion de django para que cualquier persona pueda consultar a dichos registros pero solo usuarios logueados puedan modificarlos podemos escibir algo como:

        from django.contrib import auth
    
        import simple_webservice as ws
    
        ws.register_model(auth.models.User, select=True)
        ws.register_model(auth.models.User, select=True, login=True)
    
    
    Pueden darse tambien varios permisos para operaciones en una misma linea
    pero manteniendo los modificadores de acceso iguales. Por ejemplo si
    quisieramos darle todos los permisos para todas las operaciones pero
    sin estarlo logeado al modelo Grupos, podriamos hacer
    
    .. code-block:: python
    
        ws.register_model(auth.models.Group, select=True, insert=True,
                          update=True, delete=True, login=True)
  2. Otra alternativa es crear webservices mas específicos que representen mas la logica de su aplicación. Supongamos que tenemos el siguiente modelo en su aplicacion foo

    class Faa(models.Model):
    
        some_date = models.DateTimeField()

    Y deseamos hacer un metodo que siempre devuelva los objetos que superen un cierto dia en some_date. Podemos crear un webservice con la siguiente forma.

    from foo.models import Faa
    
    @ws.register_call(login=True)
    def example_webservice(filter_date, *kwargs):
        # the date need to como alwys in iso format
        filter_date = ws.parse_data(
            {"some_date": filter_date}, Faa
        )["some_date"]
    
        query = Faa.objects.filter(some_date__gte=filter_date)
        return ws.query_to_dict(query)

Como realizar las consultas

Para realizar las consultas usted dispone de una api uniforme que recive y emite el formato JSON.

Estas llamadas siempre se encuentran diponible en la url de su aplicación en el path ws/call/. Por ejemplo si usted esta corriendo su servidor de desarrollo en localhost y el pueto 8000 las llamadas se recibiran en

http://localhost:8000/ws/call/

La forma de TODA llamada se parece siempre tiene la siguiente estructura:

{
    "id": <null|string|int|bool>,
    "name": "name_of_webservice_to_execute",
    "args": { "arguments of the call" },
    "session": "session id if you are logged in ot null"
}

El id solo sirve para identificar llamadas con respuestas

Las respuestas siempre tienen la forma:

{
  'id': None,
  "stacktrace": "",
  "error": false,
  "response": {"respuesta de la llamada"},
  "error_msg": ""
}

Las llamadas principales son:

  • ping Retorna siempre true su objetivo es solo saber si el servicio funcion.

    Llamada

    {
        "id": null,
        "name": "ping",
        "args": {},
        "session": null
    }

    Respuesta

    {
      'id': None,
      "stacktrace": "",
      "error": false,
      "response": {"ping": true},
      "error_msg": ""
    }

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-simple-webservice-0.1.1.tar.gz (11.4 kB view details)

Uploaded Source

File details

Details for the file django-simple-webservice-0.1.1.tar.gz.

File metadata

File hashes

Hashes for django-simple-webservice-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9fc30a7146778bd2825eac949fc1000ffbff3646dbea390be9a5c022f3f2c807
MD5 b329c2ededffbca7d30760207885de40
BLAKE2b-256 f0e49bf0350a18497b012511baa33a142db4136d5c9705d357e174fd864d72e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page