Skip to main content

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": ""
    }

Release files for django-simple-webservice 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-simple-webservice 0.1.1
File Size Uploaded
django-simple-webservice-0.1.1.tar.gz 11.4 kB Details

Release files / django-simple-webservice-0.1.1.tar.gz

Download URL django-simple-webservice-0.1.1.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9fc30a7146778bd2825eac949fc1000ffbff3646dbea390be9a5c022f3f2c807
BLAKE2b-256 checksum
How to use checksums
f0e49bf0350a18497b012511baa33a142db4136d5c9705d357e174fd864d72e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page