Exemple #1
0
    def test_custom_validator_triggered_at_serialization(self):
        schema_node = GeoFormSchemaNode(FieldsCollection)

        def side_effect(node, value):
            raise colander.Invalid(schema_node['text'], msg='test ERROR !')

        schema_node['text'].validator = side_effect
        try:
            schema_node.deserialize({'text': 'foo'})
            assert False
        except colander.Invalid as e:
            assert 'test ERROR !' == e.children[0].msg
class ConcreteViews(AbstractViews):

    _model = Person
    _id_field = 'id'
    _list_fields = [
        _list_field('name', label='Name'),
        _list_field('first_name')]
    _base_schema = GeoFormSchemaNode(Person, title='Person')
Exemple #3
0
def dimensions_schema_node(
        prop: InstrumentedAttribute) -> colander.SequenceSchema:
    """Get the scheme of the dimensions."""
    return colander.SequenceSchema(
        GeoFormSchemaNode(Dimension,
                          name="dimension",
                          widget=MappingWidget(template="dimension")),
        name=prop.key,
        title=prop.info["colanderalchemy"]["title"],
        description=prop.info["colanderalchemy"]["description"],
        widget=SequenceWidget(category="structural", template="dimensions"),
    )
Exemple #4
0
 def test_constraint_on_column_at_sql_alchemy_side_throw_colander_invalid(
         self):
     schema_node = GeoFormSchemaNode(FieldsCollection)
     schema_node.deserialize({'text': 'foo'})
     try:
         schema_node.deserialize({'text': 'more than five char'})
         assert False
     except colander.Invalid as e:
         assert 'Longer than maximum length' in e.children[0].msg
Exemple #5
0
 def test_adding_validator_does_not_overrides_sqlalchemy_ones(
         self, unique_validator_mock):
     schema_node = GeoFormSchemaNode(FieldsCollection)
     schema_node.add_unique_validator(FieldsCollection.text,
                                      FieldsCollection.id)
     try:
         schema_node.deserialize({'text': 'more than five char'})
         assert False
     except colander.Invalid as e:
         assert 'Longer than maximum length' in e.children[0].msg[0]
         unique_validator_mock.assert_has_calls([
             mock.call(mock.ANY, mock.ANY, mock.ANY, mock.ANY,
                       'more than five char')
         ])
Exemple #6
0
    def test_adding_validator_does_not_overrides_custom_ones(
            self, unique_validator_mock):
        schema_node = GeoFormSchemaNode(FieldsCollection)

        def side_effect(node, value):
            raise colander.Invalid(schema_node['text'], msg='test ERROR !')

        schema_node['text'].validator = side_effect
        schema_node.add_unique_validator(FieldsCollection.text,
                                         FieldsCollection.id)
        try:
            schema_node.deserialize({'text': 'foo'})
            assert False
        except colander.Invalid as e:
            assert 'test ERROR !' == e.children[0].msg[0]
            unique_validator_mock.assert_has_calls(
                [mock.call(mock.ANY, mock.ANY, mock.ANY, mock.ANY, 'foo')])
from c2cgeoportal_commons.models.main import Functionality
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode

from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField

_list_field = partial(ListField, Functionality)

base_schema = GeoFormSchemaNode(Functionality)


@view_defaults(match_param='table=functionalities')
class FunctionalityViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('name'),
        _list_field('description'),
        _list_field('value')
    ]
    _id_field = 'id'
    _model = Functionality
    _base_schema = base_schema

    @view_config(route_name='c2cgeoform_index',
                 renderer='../templates/index.jinja2')
    def index(self):
        return super().index()
Exemple #8
0
from sqlalchemy.orm import subqueryload

import colander
from c2cgeoform.schema import (
    GeoFormSchemaNode,
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
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
    )
)
Exemple #9
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.

from functools import partial
from typing import Any, Dict

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from pyramid.view import view_config, view_defaults

from c2cgeoportal_commons.models.static import OAuth2Client

_list_field = partial(ListField, OAuth2Client)

base_schema = GeoFormSchemaNode(OAuth2Client)
base_schema.add_unique_validator(OAuth2Client.client_id, OAuth2Client.id)


@view_defaults(match_param="table=oauth2_clients")
class OAuth2ClientViews(AbstractViews):  # type: ignore
    """The oAuth2 client administration view."""

    _list_fields = [
        _list_field("id"),
        _list_field("client_id"),
        _list_field("secret"),
        _list_field("redirect_uri"),
    ]
    _id_field = "id"
    _model = OAuth2Client
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import ListField
from deform.widget import FormWidget

from c2cgeoportal_admin.schemas.treegroup import children_schema_node
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.schemas.treeitem import parent_id_node
from c2cgeoportal_admin.views.treeitems import TreeItemViews
from c2cgeoportal_commons.models.main import LayerGroup, TreeGroup

_list_field = partial(ListField, LayerGroup)

base_schema = GeoFormSchemaNode(
    LayerGroup, widget=FormWidget(fields_template='layer_group_fields'))
base_schema.add(children_schema_node())
base_schema.add(metadatas_schema_node.clone())
base_schema.add_unique_validator(LayerGroup.name, LayerGroup.id)
base_schema.add(parent_id_node(TreeGroup))


@view_defaults(match_param='table=layer_groups')
class LayerGroupsViews(TreeItemViews):

    _list_fields = TreeItemViews._list_fields + [
        _list_field('is_expanded'),
        _list_field('is_internal_wms'),
        _list_field('is_base_layer')] + \
        TreeItemViews._extra_list_fields
Exemple #11
0
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import ListField
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults

from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node
from c2cgeoportal_admin.schemas.treeitem import parent_id_node
from c2cgeoportal_admin.views.dimension_layers import DimensionLayerViews
from c2cgeoportal_commons.models.main import LayerGroup, LayerVectorTiles

_list_field = partial(ListField, LayerVectorTiles)

base_schema = GeoFormSchemaNode(
    LayerVectorTiles, widget=FormWidget(fields_template="layer_fields"))
base_schema.add(metadatas_schema_node.clone())
base_schema.add(interfaces_schema_node.clone())
base_schema.add(restrictionareas_schema_node.clone())
base_schema.add_unique_validator(LayerVectorTiles.name, LayerVectorTiles.id)
base_schema.add(parent_id_node(LayerGroup))


@view_defaults(match_param="table=layers_vectortiles")
class LayerVectorTilesViews(DimensionLayerViews):
    _list_fields = (
        DimensionLayerViews._list_fields +
        [_list_field("style"), _list_field("xyz")] +
        DimensionLayerViews._extra_list_fields)
    _id_field = "id"
    _model = LayerVectorTiles
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ItemAction, ListField, UserMessage
from deform.widget import FormWidget
from pyramid.httpexceptions import HTTPNotFound
from pyramid.view import view_config, view_defaults
from sqlalchemy import inspect

from c2cgeoportal_admin import _
from c2cgeoportal_admin.lib.ogcserver_synchronizer import OGCServerSynchronizer
from c2cgeoportal_commons.lib.literal import Literal
from c2cgeoportal_commons.models.main import OGCServer

_list_field = partial(ListField, OGCServer)

base_schema = GeoFormSchemaNode(
    OGCServer, widget=FormWidget(fields_template="ogcserver_fields"))
base_schema.add_unique_validator(OGCServer.name, OGCServer.id)


@view_defaults(match_param="table=ogc_servers")
class OGCServerViews(AbstractViews):  # type: ignore
    """The OGC server administration view."""

    _list_fields = [
        _list_field("id"),
        _list_field("name"),
        _list_field("description"),
        _list_field("url"),
        _list_field("url_wfs"),
        _list_field("type"),
        _list_field("image_type"),
Exemple #13
0
import sqlalchemy
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import ListField
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults

from c2cgeoportal_admin.schemas.metadata import metadata_schema_node
from c2cgeoportal_admin.schemas.treegroup import children_schema_node
from c2cgeoportal_admin.schemas.treeitem import parent_id_node
from c2cgeoportal_admin.views.treeitems import TreeItemViews
from c2cgeoportal_commons.models.main import LayerGroup, TreeGroup

_list_field = partial(ListField, LayerGroup)

base_schema = GeoFormSchemaNode(
    LayerGroup, widget=FormWidget(fields_template="layer_group_fields"))
base_schema.add(children_schema_node())
base_schema.add(metadata_schema_node(LayerGroup.metadatas, LayerGroup))
base_schema.add_unique_validator(LayerGroup.name, LayerGroup.id)
base_schema.add(parent_id_node(TreeGroup))  # type: ignore


@view_defaults(match_param="table=layer_groups")
class LayerGroupsViews(TreeItemViews):
    """The layer group administration view."""

    _list_fields = TreeItemViews._list_fields + TreeItemViews._extra_list_fields

    _id_field = "id"
    _model = LayerGroup
    _base_schema = base_schema
Exemple #14
0
from c2cgeoform.views.abstract_views import ListField, ItemAction
from deform.widget import FormWidget

from c2cgeoportal_admin import _
from c2cgeoportal_admin.schemas.dimensions import dimensions_schema_node
from c2cgeoportal_commons.models.main import \
    LayerWMTS, LayerWMS, LayerGroup, OGCServer, TreeItem
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node
from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node
from c2cgeoportal_admin.schemas.treeitem import parent_id_node
from c2cgeoportal_admin.views.dimension_layers import DimensionLayerViews

_list_field = partial(ListField, LayerWMTS)

base_schema = GeoFormSchemaNode(
    LayerWMTS, widget=FormWidget(fields_template='layer_fields'))
base_schema.add(dimensions_schema_node.clone())
base_schema.add(metadatas_schema_node.clone())
base_schema.add(interfaces_schema_node.clone())
base_schema.add(restrictionareas_schema_node.clone())
base_schema.add_unique_validator(LayerWMTS.name, LayerWMTS.id)
base_schema.add(parent_id_node(LayerGroup))


@view_defaults(match_param='table=layers_wmts')
class LayerWmtsViews(DimensionLayerViews):
    _list_fields = DimensionLayerViews._list_fields + [
        _list_field('url'),
        _list_field('layer'),
        _list_field('style'),
        _list_field('matrix_set'),
Exemple #15
0
from sqlalchemy.orm import subqueryload

import colander
from c2cgeoform.schema import (
    GeoFormSchemaNode,
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
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
    )
)
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoportal_commons.models.main import RestrictionArea
from c2cgeoportal_admin.schemas.map import map_widget
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoportal_admin.schemas.roles import roles_schema_node

from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField
from deform.widget import FormWidget

_list_field = partial(ListField, RestrictionArea)

base_schema = GeoFormSchemaNode(
    RestrictionArea,
    widget=FormWidget(fields_template='restriction_area_fields'))
base_schema['area'].widget = map_widget
base_schema.add_before('area', roles_schema_node('roles'))
base_schema.add_unique_validator(RestrictionArea.name, RestrictionArea.id)


@view_defaults(match_param='table=restriction_areas')
class RestrictionAreaViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('name'),
        _list_field('description'),
        _list_field('readwrite'),
        _list_field('roles',
                    renderer=lambda restriction_area: ', '.join(
Exemple #17
0
from pyramid.httpexceptions import HTTPFound, HTTPNotFound
from deform import Button, Form
from deform.widget import HiddenWidget

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField

from getitfixed.models.getitfixed import USER_ADMIN, USER_REPORTER, Event, Issue

from getitfixed.i18n import _


_list_field = partial(ListField, Issue)

base_schema = GeoFormSchemaNode(
    Issue,
    excludes=["email", "firstname", "lastname", "phone", "events", "public_events"],
)
event_schema = GeoFormSchemaNode(Event)
event_schema["status"].widget = HiddenWidget()
event_schema["private"].widget = HiddenWidget()


@view_config(route_name="c2cgeoform_item_private", request_method="GET")
def private_issue_legacy(request):
    """
    Temporary redirect URLs sent by email to new URL.
    """
    return HTTPFound(
        request.route_url(
            "c2cgeoform_item",
            application="getitfixed_private",
Exemple #18
0
from functools import partial
from pyramid.httpexceptions import HTTPFound
from pyramid.view import view_defaults
from pyramid.view import view_config

from passwordgenerator import pwgenerator

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField

from c2cgeoportal_commons.models.static import User
from c2cgeoportal_commons.lib.email_ import send_email_config

_list_field = partial(ListField, User)

base_schema = GeoFormSchemaNode(User)
base_schema.add_unique_validator(User.username, User.id)


@view_defaults(match_param='table=users')
class UserViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('username'),
        _list_field('role_name'),
        _list_field('email'),
        _list_field('last_login'),
        _list_field('expire_on'),
        _list_field('deactivated')]
    _id_field = 'id'
    _model = User
Exemple #19
0
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import (
    GeoFormSchemaNode,
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoform.views.abstract_views import ListField

from c2cgeoportal_commons.models.main import Theme, Interface, Role, Functionality
from c2cgeoportal_admin.schemas.treegroup import children_schema_node
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.views.treeitems import TreeItemViews

_list_field = partial(ListField, Theme)

base_schema = GeoFormSchemaNode(Theme)

base_schema.add(children_schema_node(only_groups=True))

base_schema.add(
    colander.SequenceSchema(
        GeoFormManyToManySchemaNode(Functionality),
        name='functionalities',
        widget=RelationCheckBoxListWidget(
            select([
                Functionality.id,
                concat(Functionality.name, '=', Functionality.value).label('label')
            ]).alias('functionnality_labels'),
            'id',
            'label',
            order_by='label'
Exemple #20
0
from c2cgeoform.schema import GeoFormManyToManySchemaNode, GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults
from sqlalchemy.orm import subqueryload

from c2cgeoportal_admin import _
from c2cgeoportal_admin.schemas.functionalities import functionalities_schema_node
from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node
from c2cgeoportal_admin.widgets import ChildrenWidget, ChildWidget
from c2cgeoportal_commons.models.main import Role
from c2cgeoportal_commons.models.static import User

_list_field = partial(ListField, Role)

base_schema = GeoFormSchemaNode(Role, widget=FormWidget(fields_template="role_fields"))
base_schema.add_before("extent", functionalities_schema_node.clone())
base_schema.add_before("extent", restrictionareas_schema_node.clone())
base_schema.add_unique_validator(Role.name, Role.id)


def users(node, kw):  # pylint: disable=unused-argument
    dbsession = kw["request"].dbsession
    query = dbsession.query(User).order_by(User.username)
    return [
        {
            "id": user.id,
            "label": user.username,
            "icon_class": "icon-user",
            "edit_url": kw["request"].route_url(
                "c2cgeoform_item",
Exemple #21
0
import colander
from deform.widget import MappingWidget, SequenceWidget
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoportal_commons.models.main import Dimension
from c2cgeoportal_admin import _

dimensions_schema_node = colander.SequenceSchema(GeoFormSchemaNode(
    Dimension,
    name='dimension',
    widget=MappingWidget(template='dimension'),
),
                                                 name='dimensions',
                                                 title=_('Dimensions'),
                                                 widget=SequenceWidget(
                                                     category='structural',
                                                     template='dimensions'))
Exemple #22
0
from functools import partial

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults
from sqlalchemy.orm import subqueryload

from c2cgeoportal_admin.schemas.functionalities import functionalities_schema_node
from c2cgeoportal_admin.schemas.map import map_widget
from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node
from c2cgeoportal_commons.models.main import Role

_list_field = partial(ListField, Role)

base_schema = GeoFormSchemaNode(
    Role, widget=FormWidget(fields_template="role_fields"))
base_schema["extent"].widget = map_widget
base_schema.add_before("extent", functionalities_schema_node.clone())
base_schema.add_before("extent", restrictionareas_schema_node.clone())
base_schema.add_unique_validator(Role.name, Role.id)


@view_defaults(match_param="table=roles")
class RoleViews(AbstractViews):
    _list_fields = [
        _list_field("id"),
        _list_field("name"),
        _list_field("description"),
        _list_field(
            "functionalities",
            renderer=lambda role: ", ".join([
# 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.

# 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.schema import GeoFormSchemaNode
from deform.widget import MappingWidget, SequenceWidget

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

dimensions_schema_node = colander.SequenceSchema(
    GeoFormSchemaNode(Dimension,
                      name="dimension",
                      widget=MappingWidget(template="dimension")),
    name="dimensions",
    title=_("Dimensions"),
    widget=SequenceWidget(category="structural", template="dimensions"),
)
Exemple #24
0
from c2cgeoform.schema import GeoFormManyToManySchemaNode, GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults
from sqlalchemy.orm import subqueryload

from c2cgeoportal_admin import _
from c2cgeoportal_admin.schemas.roles import roles_schema_node
from c2cgeoportal_admin.schemas.treegroup import treeitem_edit_url
from c2cgeoportal_admin.widgets import ChildrenWidget, ChildWidget
from c2cgeoportal_commons.models.main import Layer, RestrictionArea

_list_field = partial(ListField, RestrictionArea)

base_schema = GeoFormSchemaNode(
    RestrictionArea,
    widget=FormWidget(fields_template="restriction_area_fields"))
base_schema.add_before("area", roles_schema_node("roles"))
base_schema.add_unique_validator(RestrictionArea.name, RestrictionArea.id)


def layers(node, kw):  # pylint: disable=unused-argument
    dbsession = kw["request"].dbsession
    query = dbsession.query(Layer).order_by(Layer.name)
    return [{
        "id": layer.id,
        "label": layer.name,
        "icon_class": "icon-{}".format(layer.item_type),
        "edit_url": treeitem_edit_url(kw["request"], layer),
        "group": "All",
    } for layer in query]
Exemple #25
0
from pyramid.view import view_config, view_defaults
from sqlalchemy import delete, insert, inspect, update
from zope.sqlalchemy import mark_changed

from c2cgeoportal_admin import _
from c2cgeoportal_admin.schemas.dimensions import dimensions_schema_node
from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node
from c2cgeoportal_admin.schemas.metadata import metadata_schema_node
from c2cgeoportal_admin.schemas.restriction_areas import restrictionareas_schema_node
from c2cgeoportal_admin.schemas.treeitem import parent_id_node
from c2cgeoportal_admin.views.dimension_layers import DimensionLayerViews
from c2cgeoportal_commons.models.main import LayerGroup, LayerWMS, LayerWMTS, OGCServer, TreeItem

_list_field = partial(ListField, LayerWMTS)

base_schema = GeoFormSchemaNode(
    LayerWMTS, widget=FormWidget(fields_template="layer_fields"))
base_schema.add(dimensions_schema_node(LayerWMTS.dimensions))
base_schema.add(metadata_schema_node(LayerWMTS.metadatas, LayerWMTS))
base_schema.add(interfaces_schema_node(LayerWMTS.interfaces))
base_schema.add(restrictionareas_schema_node(LayerWMTS.restrictionareas))
base_schema.add_unique_validator(LayerWMTS.name, LayerWMTS.id)
base_schema.add(parent_id_node(LayerGroup))  # type: ignore


@view_defaults(match_param="table=layers_wmts")
class LayerWmtsViews(DimensionLayerViews):
    """The WMTS layer administration view."""

    _list_fields = (DimensionLayerViews._list_fields + [
        _list_field("url"),
        _list_field("layer"),
Exemple #26
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.


from functools import partial

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from pyramid.view import view_config, view_defaults

from c2cgeoportal_commons.models.main import Interface

_list_field = partial(ListField, Interface)

base_schema = GeoFormSchemaNode(Interface)


@view_defaults(match_param="table=interfaces")
class InterfacesViews(AbstractViews):  # type: ignore
    """The interface administration view."""

    _list_fields = [
        _list_field("id"),
        _list_field("name"),
        _list_field("description"),
        _list_field(
            "layers", renderer=lambda interface: ", ".join([layer.name or "" for layer in interface.layers])
        ),
        _list_field(
            "theme",
Exemple #27
0
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import ListField

from c2cgeoportal_commons.models.main import LayerV1

from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.views.layers import LayerViews
from c2cgeoportal_admin.views.interfaces import interfaces_schema_node
from c2cgeoportal_admin.views.restrictionareas import restrictionareas_schema_node

_list_field = partial(ListField, LayerV1)

base_schema = GeoFormSchemaNode(LayerV1)
base_schema.add(interfaces_schema_node.clone())
base_schema.add(restrictionareas_schema_node.clone())
base_schema.add(metadatas_schema_node.clone())


@view_defaults(match_param='table=layers_v1')
class LayerV1Views(LayerViews):
    _list_fields = LayerViews._list_fields + [
        _list_field('layer'),
        _list_field('is_checked'),
        _list_field('icon'),
        _list_field('layer_type'),
        _list_field('url'),
        _list_field('image_type'),
        _list_field('style'),
from geoportailv3_geoportal.models import LuxMeasurementDirectory
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField

_list_field = partial(ListField, LuxMeasurementDirectory)

base_schema = GeoFormSchemaNode(LuxMeasurementDirectory)


@view_defaults(match_param='table=lux_measurement_directory')
class LuxMeasurementDirectoryViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('name'),
        _list_field('town_code'),
        _list_field('path'),
    ]
    _id_field = 'id'
    _model = LuxMeasurementDirectory
    _base_schema = base_schema

    @view_config(route_name='c2cgeoform_index',
                 renderer='./templates/index.jinja2')
    def index(self):
        return super().index()
Exemple #29
0
from geoportailv3_geoportal.models import LuxMeasurementLoginCommune
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField

_list_field = partial(ListField, LuxMeasurementLoginCommune)

base_schema = GeoFormSchemaNode(LuxMeasurementLoginCommune)


@view_defaults(match_param='table=lux_measurement_login_commune')
class LuxMeasurementLoginCommuneViews(AbstractViews):
    _list_fields = [
        _list_field('login'),
        _list_field('num_commune'),
    ]
    _id_field = 'login'
    _model = LuxMeasurementLoginCommune
    _base_schema = base_schema

    @view_config(route_name='c2cgeoform_index',
                 renderer='./templates/index.jinja2')
    def index(self):
        return super().index()

    @view_config(route_name='c2cgeoform_grid',
                 renderer='fast_json')
Exemple #30
0
from passwordgenerator import pwgenerator

from sqlalchemy.orm import aliased, subqueryload
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from deform.widget import FormWidget

from c2cgeoportal_commons.models.main import Role
from c2cgeoportal_commons.models.static import User
from c2cgeoportal_commons.lib.email_ import send_email_config
from c2cgeoportal_admin.schemas.roles import roles_schema_node

_list_field = partial(ListField, User)

base_schema = GeoFormSchemaNode(
    User, widget=FormWidget(fields_template='user_fields'))
base_schema.add(roles_schema_node('roles'))
base_schema.add_unique_validator(User.username, User.id)

settings_role = aliased(Role)


@view_defaults(match_param='table=users')
class UserViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('username'),
        _list_field('email'),
        _list_field('last_login'),
        _list_field('expire_on'),
        _list_field('deactivated'),
Exemple #31
0
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config
from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import ListField
from c2cgeoportal_commons.models.main import LayerGroup
from c2cgeoportal_admin.schemas.treegroup import children_schema_node
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.views.treeitems import TreeItemViews

_list_field = partial(ListField, LayerGroup)


base_schema = GeoFormSchemaNode(LayerGroup)
base_schema.add(children_schema_node())
base_schema.add(metadatas_schema_node.clone())


@view_defaults(match_param='table=layer_groups')
class LayerGroupsViews(TreeItemViews):

    _list_fields = TreeItemViews._list_fields + [
        _list_field('is_expanded'),
        _list_field('is_internal_wms'),
        _list_field('is_base_layer')] + \
        TreeItemViews._extra_list_fields

    _id_field = 'id'
    _model = LayerGroup
    _base_schema = base_schema
from geoportailv3_geoportal.models import LuxPredefinedWms
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField

base_schema = GeoFormSchemaNode(LuxPredefinedWms)


# override standard class chosen by geoform to avoid clash with css style .label
# class="label" becomes class="_lux_label"
class ListFieldLux(ListField):
    def id(self):
        return '_lux_' + self._key


_list_field = partial(ListFieldLux, LuxPredefinedWms)


@view_defaults(match_param='table=lux_predefined_wms')
class LuxPredefinedWmsViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('label'),
        _list_field('url'),
    ]
    _id_field = 'id'
    _model = LuxPredefinedWms
from geoportailv3_geoportal.models import LuxGetfeatureDefinition
from functools import partial
from pyramid.view import view_defaults
from pyramid.view import view_config

from c2cgeoform.schema import GeoFormSchemaNode
from c2cgeoform.views.abstract_views import AbstractViews
from c2cgeoform.views.abstract_views import ListField

_list_field = partial(ListField, LuxGetfeatureDefinition)

base_schema = GeoFormSchemaNode(LuxGetfeatureDefinition)


@view_defaults(match_param='table=lux_getfeature_definition')
class LuxGetfeatureDefinitionViews(AbstractViews):
    _list_fields = [
        _list_field('id'),
        _list_field('engine_gfi'),
        _list_field('query'),
        _list_field('template'),
        _list_field('rest_url'),
        _list_field('use_auth'),
        _list_field('layer'),
    ]
    _id_field = 'id'
    _model = LuxGetfeatureDefinition
    _base_schema = base_schema

    @view_config(route_name='c2cgeoform_index',
                 renderer='./templates/index.jinja2')
Exemple #34
0
from deform.widget import FormWidget
from pyramid.view import view_config, view_defaults
from sqlalchemy.orm import subqueryload
from sqlalchemy.sql.functions import concat

from c2cgeoportal_admin.schemas.functionalities import functionalities_schema_node
from c2cgeoportal_admin.schemas.interfaces import interfaces_schema_node
from c2cgeoportal_admin.schemas.metadata import metadatas_schema_node
from c2cgeoportal_admin.schemas.roles import roles_schema_node
from c2cgeoportal_admin.schemas.treegroup import children_schema_node
from c2cgeoportal_admin.views.treeitems import TreeItemViews
from c2cgeoportal_commons.models.main import Functionality, Interface, Role, Theme

_list_field = partial(ListField, Theme)

base_schema = GeoFormSchemaNode(
    Theme, widget=FormWidget(fields_template="theme_fields"))
base_schema.add(children_schema_node(only_groups=True))
base_schema.add(functionalities_schema_node.clone())
base_schema.add(roles_schema_node("restricted_roles"))
base_schema.add(interfaces_schema_node.clone())
base_schema.add(metadatas_schema_node.clone())
base_schema.add_unique_validator(Theme.name, Theme.id)


@view_defaults(match_param="table=themes")
class ThemeViews(TreeItemViews):

    _list_fields = (TreeItemViews._list_fields + [
        _list_field("ordering"),
        _list_field("public"),
        _list_field("icon"),
Exemple #35
0
from c2cgeoform.ext.deform_ext import RelationCheckBoxListWidget
from c2cgeoform.schema import (
    GeoFormSchemaNode,
    GeoFormManyToManySchemaNode,
    manytomany_validator,
)
from c2cgeoform.views.abstract_views import AbstractViews, ListField
from sqlalchemy import select
from sqlalchemy.orm import subqueryload
from sqlalchemy.sql.functions import concat

from c2cgeoportal_commons.models.main import Role, Functionality, RestrictionArea

_list_field = partial(ListField, Role)

base_schema = GeoFormSchemaNode(Role)
base_schema.add_before(
    'extent',
    colander.SequenceSchema(
        GeoFormManyToManySchemaNode(Functionality),
        name='functionalities',
        widget=RelationCheckBoxListWidget(
            select([
                Functionality.id,
                concat(Functionality.name, '=', Functionality.value).label('label')
            ]).alias('functionnality_labels'),
            'id',
            'label',
            order_by='label'
        ),
        validator=manytomany_validator