Пример #1
0
    def test_deserialize_empty(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(Tag, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        result = widget.deserialize(field, null)
        self.assertEqual(result, [])
Пример #2
0
    def test_deserialize(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(Tag, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        result = widget.deserialize(field, ['1', '2'])
        self.assertEqual(result, [{'id': '1'}, {'id': '2'}])
Пример #3
0
    def test_serialize_wrong_mapping(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(
            EmploymentStatus, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        objs = [
            {'bad_column': '101'},
            {'bad_column': '102'}]

        with self.assertRaises(KeyError):
            widget.serialize(field, objs)
Пример #4
0
    def test_serialize_empty(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(Tag, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        widget.serialize(field, null)
        self.assertEqual(renderer.kw['values'], _convert_values(widget.values))
        self.assertEqual(renderer.kw['cstruct'], [])

        first_value = renderer.kw['values'][0]
        self.assertEqual('0', first_value[0])
        self.assertEqual('Tag A', first_value[1])
Пример #5
0
def roles_schema_node(name):
    return colander.SequenceSchema(
        GeoFormManyToManySchemaNode(Role),
        name=name,
        widget=RelationCheckBoxListWidget(
            Role,
            "id",
            "name",
            order_by="name",
            edit_url=lambda request, value: request.route_url(
                "c2cgeoform_item", table="roles", id=value),
        ),
        validator=manytomany_validator,
        missing=colander.drop,
    )
Пример #6
0
    def test_serialize_wrong_mapping(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(EmploymentStatus, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        objs = [{'bad_column': '101'}, {'bad_column': '102'}]

        with self.assertRaises(KeyError):
            widget.serialize(field, objs)
Пример #7
0
def roles_schema_node(prop: InstrumentedAttribute) -> colander.SequenceSchema:
    """Get the schema of all the items."""
    return colander.SequenceSchema(
        GeoFormManyToManySchemaNode(Role),
        name=prop.key,
        title=prop.info["colanderalchemy"]["title"],
        description=prop.info["colanderalchemy"].get("description"),
        widget=RelationCheckBoxListWidget(
            Role,
            "id",
            "name",
            order_by="name",
            edit_url=lambda request, value: request.route_url(
                "c2cgeoform_item", table="roles", id=value),
        ),
        validator=manytomany_validator,
        missing=colander.drop,
    )
Пример #8
0
    def create_widget(node, kw):
        del node

        return RelationCheckBoxListWidget(
            select([
                Functionality.id,
                concat(Functionality.name, "=",
                       Functionality.value).label("label"),
            ]).where(
                Functionality.name.in_([
                    f["name"] for f in available_functionalities_for(
                        kw["request"].registry.settings, model)
                ])).alias("functionality_labels"),
            "id",
            "label",
            order_by="label",
            edit_url=lambda request, value: request.route_url(
                "c2cgeoform_item", table="functionalities", id=value),
        )
Пример #9
0
    def test_serialize_empty(self):
        from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
        widget = RelationCheckBoxListWidget(Tag, 'id', 'name')
        renderer = DummyRenderer()

        field = _get_field('tags', renderer)
        widget.populate(DBSession, None)
        widget.serialize(field, null)
        self.assertEqual(renderer.kw['values'], _convert_values(widget.values))
        self.assertEqual(renderer.kw['cstruct'], [])

        first_value = renderer.kw['values'][0]
        self.assertEqual('0', first_value[0])
        self.assertEqual('Tag A', first_value[1])
Пример #10
0
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import GeoFormManyToManySchemaNode, manytomany_validator
import colander

from c2cgeoportal_admin import _
from c2cgeoportal_commons.models.main import RestrictionArea

restrictionareas_schema_node = colander.SequenceSchema(
    GeoFormManyToManySchemaNode(RestrictionArea),
    name="restrictionareas",
    title=_("Restriction areas"),
    widget=RelationCheckBoxListWidget(
        RestrictionArea,
        "id",
        "name",
        order_by="name",
        edit_url=lambda request, value: request.route_url(
            "c2cgeoform_item", table="restriction_areas", id=value),
    ),
    validator=manytomany_validator,
    missing=colander.drop,
)
Пример #11
0
from c2cgeoform.views.abstract_views import AbstractViews, ListField

from ..models.c2cgeoform_demo import Excavation, Situation

_list_field = partial(ListField, Excavation)

base_schema = GeoFormSchemaNode(Excavation)
base_schema.add_before(
    'contact_persons',
    colander.SequenceSchema(
        GeoFormManyToManySchemaNode(Situation),
        name='situations',
        title='Situations',
        widget=RelationCheckBoxListWidget(
            Situation,
            'id',
            'name',
            order_by='name'
        ),
        validator=manytomany_validator
    )
)
base_schema.add_unique_validator(Excavation.reference_number, Excavation.hash)


@view_defaults(match_param='table=excavations')
class ExcavationViews(AbstractViews):

    _model = Excavation
    _base_schema = base_schema
    _id_field = 'hash'
Пример #12
0
import colander
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import (
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoportal_commons.models.main import RestrictionArea
from c2cgeoportal_admin import _

restrictionareas_schema_node = colander.SequenceSchema(
    GeoFormManyToManySchemaNode(RestrictionArea),
    name='restrictionareas',
    title=_('Restriction areas'),
    widget=RelationCheckBoxListWidget(
        RestrictionArea,
        'id',
        'name',
        order_by='name',
        edit_url=lambda request, value: request.route_url(
            'c2cgeoform_item',
            table='restriction_areas',
            id=value,
        )
    ),
    validator=manytomany_validator,
    missing=colander.drop
)
Пример #13
0
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import GeoFormManyToManySchemaNode, manytomany_validator
import colander

from c2cgeoportal_admin import _
from c2cgeoportal_commons.models.main import Interface

interfaces_schema_node = colander.SequenceSchema(
    GeoFormManyToManySchemaNode(Interface),
    name="interfaces",
    title=_("Interfaces"),
    widget=RelationCheckBoxListWidget(
        Interface,
        "id",
        "name",
        order_by="name",
        edit_url=lambda request, value: request.route_url(
            "c2cgeoform_item", table="interfaces", id=value),
    ),
    validator=manytomany_validator,
    missing=colander.drop,
)
Пример #14
0
# The views and conclusions contained in the software and documentation are those
# of the authors and should not be interpreted as representing official policies,
# either expressed or implied, of the FreeBSD Project.


import colander
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import GeoFormManyToManySchemaNode, manytomany_validator
from sqlalchemy import select
from sqlalchemy.sql.functions import concat

from c2cgeoportal_commons.models.main import Functionality

functionalities_schema_node = colander.SequenceSchema(
    GeoFormManyToManySchemaNode(Functionality),
    name="functionalities",
    widget=RelationCheckBoxListWidget(
        select([Functionality.id, concat(Functionality.name, "=", Functionality.value).label("label")]).alias(
            "functionality_labels"
        ),
        "id",
        "label",
        order_by="label",
        edit_url=lambda request, value: request.route_url(
            "c2cgeoform_item", table="functionalities", id=value
        ),
    ),
    validator=manytomany_validator,
    missing=colander.drop,
)
Пример #15
0
import colander
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import (
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoportal_commons.models.main import Interface
from c2cgeoportal_admin import _

interfaces_schema_node = colander.SequenceSchema(
    GeoFormManyToManySchemaNode(Interface),
    name='interfaces',
    title=_('Interfaces'),
    widget=RelationCheckBoxListWidget(
        Interface,
        'id',
        'name',
        order_by='name',
        edit_url=lambda request, value: request.route_url(
            'c2cgeoform_item',
            table='interfaces',
            id=value
        )
    ),
    validator=manytomany_validator,
    missing=colander.drop
)