Exemplo n.º 1
0
from anyblok_pyramid import current_blok

from anyblok_pyramid_rest_api.crud_resource import (CrudResource)

from anyblok_pyramid_rest_api.validator import model_schema_validator

from .schema import (
    CustomerSchema,
    AddressSchema,
)


@resource(collection_path='/customers/v5',
          path='/customers/v5/{id}',
          validators=(model_schema_validator, ),
          installed_blok=current_blok())
class CustomerResourceV5(CrudResource):
    model = 'Model.Customer'

    @classmethod
    def apischema_properties(cls, metaProperties):
        metaProperties.update({
            'deserialization_model_schema': CustomerSchema,
            'serialization_model_schema': CustomerSchema,
        })


@resource(collection_path='/addresses/v5',
          path='/addresses/v5/{id}',
          validators=(model_schema_validator, ),
          installed_blok=current_blok())
Exemplo n.º 2
0
# -*- coding: utf-8 -*-
# This file is a part of the AnyBlok project
#
#    Copyright (C) 2017 Jean-Sebastien SUZANNE <*****@*****.**>
#
# This Source Code Form is subject to the terms of the Mozilla Public License,
# v. 2.0. If a copy of the MPL was not distributed with this file,You can
# obtain one at http://mozilla.org/MPL/2.0/.
from pyramid.view import view_defaults, view_config
from anyblok_pyramid import current_blok


@view_defaults(installed_blok=current_blok(),
               request_method="POST",
               renderer="json")
class Button():
    def __init__(self, request):
        self.request = request
        self.registry = request.anyblok.registry

    @view_config(route_name="furetui_button")
    def furetui_space(self):
        buttonId = self.request.matchdict['buttonId']
        params = self.request.json_body
        Model = self.registry.get(params['model'])
        if 'dataIds' in params:
            dataIds = params.pop('dataIds')
            pks = [eval(x, {}, {}) for x in dataIds]
            params['entries'] = Model.from_multi_primary_keys(*pks)

        return getattr(Model, buttonId)(**params)
Exemplo n.º 3
0
from pyramid_rpc.jsonrpc import jsonrpc_method
from pyramid.view import view_defaults
from anyblok_pyramid import current_blok


@view_defaults(installed_blok=current_blok())
class View:

    def __init__(self, request):
        self.request = request
        self.registry = request.anyblok.registry

    @jsonrpc_method(endpoint='web_client_view')
    def get_entries(self, model=None, primary_keys=None, fields=None,
                    comefromfield=False):
        Model = self.registry.get(model)
        entries = None
        if comefromfield:
            if primary_keys:
                entries = Model.from_multi_primary_keys(*primary_keys)
        else:
            entries = Model.query().all()

        if not fields or not entries:
            return []

        return entries.to_dict(*fields)

    @jsonrpc_method(endpoint='web_client_view')
    def get_entry(self, model=None, primary_keys=None, fields=None):
        Model = self.registry.get(model)
from pyramid.view import view_config
from anyblok_pyramid import current_blok

# TODO: return proper HTML responses:
# http://www.js-attitude.fr/2013/06/05/
# meilleures-pratiques-pour-vos-urls-verbes-http-et-apis/


@view_config(route_name='todo-list',
             installed_blok=current_blok(),
             renderer='json')
def todo_list(request):
    registry = request.anyblok.registry
    return [{
        'done': todo.done,
        'task': todo.task,
        'id': todo.id
    } for todo in registry.Todo.query().all()]


@view_config(route_name='todo-add',
             installed_blok=current_blok(),
             renderer='json')
def add_todo(request):
    registry = request.anyblok.registry
    task = request.json_body.get('task', '')
    done = request.json_body.get('done', False)
    if not task:
        return "Task should be define"
    registry.Todo.insert(task=task, done=done)
Exemplo n.º 5
0
from pyramid.view import view_config
from pyramid.response import Response
from anyblok_pyramid import current_blok


@view_config(route_name='hello', installed_blok=current_blok())
def say_hello(request):
    return Response('Hello %(name)s !!!' % request.matchdict)
Exemplo n.º 6
0
from pyramid.view import view_config
from anyblok_pyramid import current_blok

# TODO: return proper HTML responses:
# http://www.js-attitude.fr/2013/06/05/
# meilleures-pratiques-pour-vos-urls-verbes-http-et-apis/


@view_config(
    route_name='todo-list',
    installed_blok=current_blok(),
    renderer='json'
)
def todo_list(request):
    registry = request.anyblok.registry
    return [
        {'done': todo.done, 'task': todo.task, 'id': todo.id} for todo in
        registry.Todo.query().all()
    ]


@view_config(
    route_name='todo-add',
    installed_blok=current_blok(),
    renderer='json'
)
def add_todo(request):
    registry = request.anyblok.registry
    task = request.json_body.get('task', '')
    done = request.json_body.get('done', False)
    if not task:
Exemplo n.º 7
0
import pyramid.httpexceptions as exc
from pyramid.view import view_config, view_defaults
from anyblok_pyramid import current_blok


@view_defaults(renderer='json', installed_blok=current_blok())
class Space:

    def __init__(self, request):
        self.request = request
        self.registry = request.anyblok.registry

    def define_menus_for(self, user, parents, menus):
        for menu in menus:
            if menu.groups and not user.has_groups(menu.groups):
                continue

            val = {
                'id': menu.id,
                'label': menu.label,
                'action': menu.action and menu.action.id or None,
                'children': [],
            }
            if menu.children:
                self.define_menus_for(user, val['children'], menu.children)

            parents.append(val)

    @view_config(route_name='client_space_description')
    def client_space_description(self):
        params = dict(self.request.params)