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')
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"), )
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
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') ])
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()
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 ) )
# 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
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"),
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
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'),
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(
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",
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
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'
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",
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'))
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"), )
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]
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"),
# 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",
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()
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')
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'),
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')
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"),
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