Exemple #1
0
 def _resolve(self, elements: [int], query: SearchQuery) -> Iterable:
     """Resolve oids from `elements`, convert to list if `query.resolve`."""
     objectmap = find_objectmap(self)
     elements = (objectmap.object_for(e) for e in elements)
     if query.resolve:
         elements = [x for x in elements]
     return elements
Exemple #2
0
 def velruse_login_complete_view(self):
     context = self.context
     request = self.request
     profile = context.profile
     account = profile['accounts'][0]
     domain = account['domain']
     username = account['username']
     userid = account['userid']
     sd_userid = f'{domain}_{userid}'
     root = root_factory(request)
     adapter = request.registry.queryMultiAdapter(
         (root, request), IUserLocator)
     if adapter is None:
         adapter = DefaultUserLocator(root, request)
     user = adapter.get_user_by_login(sd_userid)
     headers = []
     if user is None:
         photos = profile.get('photos')
         if photos:
             photo_url = photos[0]['value']
             request.session['photo_url'] = photo_url
         request.session['userid'] = sd_userid
         realname = profile['displayName']
         request.session['profilename'] = username
         request.session['realname'] = realname
         location = request.resource_url(root, 'create_profile')
     else:
         objectmap = find_objectmap(root)
         performer = list(objectmap.sources(user, PerformerToUser))[0]
         location = request.resource_url(performer)
         headers = remember(request, get_oid(user))
     return HTTPFound(location, headers=headers)
Exemple #3
0
 def _resolve(self, elements: [int], query: SearchQuery) -> Iterable:
     """Resolve oids from `elements`, convert to list if `query.resolve`."""
     objectmap = find_objectmap(self)
     elements = (objectmap.object_for(e) for e in elements)
     if query.resolve:
         elements = [x for x in elements]
     return elements
Exemple #4
0
def change_bplan_officeworker_email_representation(root, registry):
    """Change bplan officeworker email representation."""
    from substanced.util import find_objectmap
    from adhocracy_core.utils import find_graph
    from adhocracy_meinberlin.resources.bplan import IProcess
    from adhocracy_meinberlin.sheets.bplan import IProcessSettings
    from adhocracy_meinberlin.sheets.bplan import IProcessPrivateSettings
    from adhocracy_meinberlin.sheets.bplan import OfficeWorkerUserReference
    migrate_new_sheet(root, IProcess, IProcessPrivateSettings)
    catalogs = find_service(root, 'catalogs')
    bplaene = _search_for_interfaces(catalogs, IProcess)
    objectmap = find_objectmap(root)
    graph = find_graph(root)
    for bplan in bplaene:
        process_settings_ref = graph.get_references_for_isheet(
            bplan,
            IProcessSettings)
        if 'office_worker' in process_settings_ref:
            office_worker = process_settings_ref['office_worker'][0]
            private_settings = registry.content.get_sheet(
                bplan,
                IProcessPrivateSettings)
            private_settings.set({'office_worker_email': office_worker.email})
            objectmap.disconnect(bplan, office_worker,
                                 OfficeWorkerUserReference)
Exemple #5
0
def get_folder_content(folder, user,
                       add_query=None,
                       **args):
    _filters = deepcopy(getattr(folder, 'filters', []))
    objects = []
    if _filters:
        query = None
        if add_query:
            query = QUERY_OPERATORS['and'](query, add_query)

        objects = find_entities(
            user=user,
            add_query=query,
            filters=_filters,
            filter_op='or',
            **args)

    oids = [get_oid(c) for c in folder.contents if can_access(user, c)]
    if args:
        contents = find_entities(
            user=user,
            intersect=oids,
            **args)
        oids = contents.ids if not isinstance(contents, list) else contents

    if isinstance(objects, list):
        objectmap = find_objectmap(folder)
        objects = ResultSet(oids, len(oids), objectmap.object_for)
    else: # ResultSet
        objects.ids = list(objects.ids)
        objects.ids.extend(oids)
        objects.numids += len(oids)

    return objects
Exemple #6
0
    def borrow_lock(
        self,
        resource,
        owner_or_ownerid,
        locktype=WriteLock,
        ):
        """ Search for an existing, avlid lock on resource.

        If not found, return None.

        If owned by 'owner_or_ownerid', return it.

        Otherwise, raise LockError.
        """
        objectmap = find_objectmap(self)
        ownerid = self._get_ownerid(owner_or_ownerid)
        locks = objectmap.targets(resource, locktype)
        for lock in locks:
            if lock.is_valid():
                if lock.ownerid == ownerid:
                    return lock
                else:
                    raise LockError(lock)
            else:
                lock.commit_suicide()
                break
Exemple #7
0
    def borrow_lock(
        self,
        resource,
        owner_or_ownerid,
        locktype=WriteLock,
        ):
        """ Search for an existing, avlid lock on resource.

        If not found, return None.

        If owned by 'owner_or_ownerid', return it.

        Otherwise, raise LockError.
        """
        objectmap = find_objectmap(self)
        ownerid = self._get_ownerid(owner_or_ownerid)
        locks = objectmap.targets(resource, locktype)
        for lock in locks:
            if lock.is_valid():
                if lock.ownerid == ownerid:
                    return lock
                else:
                    raise LockError(lock)
            else:
                lock.commit_suicide()
                break
Exemple #8
0
def get_obj(oid, only_exists=False):
    root = getSite()
    objectmap = find_objectmap(root)
    obj = objectmap.object_for(oid)
    if only_exists and obj and obj.__parent__ is None:
        return None

    return obj
Exemple #9
0
def get_obj(oid, only_exists=False):
    root = getSite()
    objectmap = find_objectmap(root)
    obj = objectmap.object_for(oid)
    if only_exists and obj and obj.__parent__ is None:
        return None

    return obj
Exemple #10
0
 def __resolve(self, content_id):
     try:
         resolver = self._v_resolver
     except AttributeError:
         objectmap = find_objectmap(self)
         resolver = self._v_resolver = objectmap.object_for
     try:
         return resolver(content_id)
     except KeyError:
         return None
Exemple #11
0
 def __resolve(self, content_id):
     try:
         resolver = self._v_resolver
     except AttributeError:
         objectmap = find_objectmap(self)
         resolver = self._v_resolver = objectmap.object_for
     try:
         return resolver(content_id)
     except KeyError:
         return None
Exemple #12
0
def connect(source, target, **kwargs):
    container = get_relations_container(source)
    objectmap = find_objectmap(container)
    source_id, target_id = objectmap._refids_for(source, target)
    relation = RelationValue(source_id, target_id, **kwargs)
    objectid = objectmap.new_objectid()
    set_oid(relation, objectid)
    container.add(str(objectid), relation, send_events=False)
    invalidate_cache()
    return relation
Exemple #13
0
def connect(source, target, **kwargs):
    container = get_relations_container(source)
    objectmap = find_objectmap(container)
    source_id, target_id = objectmap._refids_for(source, target)
    relation = RelationValue(source_id, target_id, **kwargs)
    objectid = objectmap.new_objectid()
    set_oid(relation, objectid)
    container.add(str(objectid), relation, send_events=False)
    invalidate_cache()
    return relation
Exemple #14
0
 def preparer(self, value):
     context = self.bindings['context']
     request = self.bindings['request']
     objectmap = find_objectmap(context)
     if value is colander.null:
         return colander.null
     try:
         resource = objectmap.object_for(tuple(value.split('/')))
     except ValueError:
         return None
     if not has_permission('sdi.lock', resource, request):
         return False
     return resource
Exemple #15
0
 def discover(self, resource, include_invalid=False, include_lineage=True, locktype=WriteLock):
     objectmap = find_objectmap(self)
     valid = []
     if include_lineage:
         resources = lineage(resource)
     else:
         resources = [resource]
     for res in resources:
         locks = objectmap.targets(res, locktype)
         for lock in locks:
             if include_invalid or lock.is_valid():
                 valid.append(lock)
     return valid
Exemple #16
0
 def preparer(self, value):
     context = self.bindings['context']
     request = self.bindings['request']
     objectmap = find_objectmap(context)
     if value is colander.null:
         return colander.null
     try:
         resource = objectmap.object_for(tuple(value.split('/')))
     except ValueError:
         return None
     if not has_permission('sdi.lock', resource, request):
         return False
     return resource
Exemple #17
0
def delete_locks_for_resource(event):
    """ Remove all lock objects associated with an resource when it is about to
    be removed """
    if event.moving is not None: # it's not really being removed
        return
    if event.loading: # fbo dump/load
        return
    objectmap = find_objectmap(event.parent)
    if objectmap is not None: # might be None if parent is not seated
        for oid in event.removed_oids:
            locks = objectmap.targets(oid, WriteLock)
            for lock in locks:
                lock.commit_suicide()
Exemple #18
0
 def is_valid(self, when=None):
     """ Return True if the lock has not expired and its resource exists.
     """
     objectmap = find_objectmap(self)
     if objectmap is not None:
         # might be None if we're not yet seated
         if self.resourceid is None:
             return False
     if when is None: # pragma: no cover
         when = now()
     expires = self.expires()
     if expires is None:
         return True
     return expires >= when
Exemple #19
0
 def is_valid(self, when=None):
     """ Return True if the lock has not expired and its resource exists.
     """
     objectmap = find_objectmap(self)
     if objectmap is not None:
         # might be None if we're not yet seated
         if self.resourceid is None:
             return False
     if when is None: # pragma: no cover
         when = now()
     expires = self.expires()
     if expires is None:
         return True
     return expires >= when
Exemple #20
0
    def show_blog(self):
        blog = self.context
        request = self.request
        system_catalog = find_catalog(blog, 'system')
        path = system_catalog['path']
        allowed = system_catalog['allowed']
        q = (path.eq(blog, depth=1, include_origin=False)
             & allowed.allows(request, 'view'))
        limit = self.posts_per_page

        year = request.params.get('year')
        month = request.params.get('month')
        if year and month:
            year, month = int(year), int(month)
            limit = None
            start = datetime.datetime(year, month, 1, 0, 0, tzinfo=UTC)
            if month == 12:
                end = datetime.datetime(year + 1, 1, 1, 0, 0, tzinfo=UTC)
            else:
                end = datetime.datetime(year, month + 1, 1, 0, 0, tzinfo=UTC)
            catalog = find_catalog(blog, 'navel')
            pub_date = catalog['pub_date']
            q &= query.InRange(pub_date, start, end)

        results = q.execute()
        results = pub_date_sorter(blog, results, reverse=True)

        if limit and len(results) > limit:
            offset = int(request.params.get('offset', 0))
            last = offset + limit
            ids = itertools.islice(results.ids, offset, last)
            pager = [{
                'title': 'Older',
                'url': request.resource_url(blog, query={'offset': last}),
                'disabled': " disabled" if last >= len(results) else ""
            }, {
                'title':
                'Newer',
                'url':
                request.resource_url(blog, query={'offset': offset - limit}),
                'disabled':
                " disabled" if offset <= 0 else ""
            }]
        else:
            pager = None
            ids = results.ids

        objectmap = find_objectmap(blog)
        entries = map(self.get_info, map(objectmap.object_for, ids))
        return {'entries': entries, 'pager': pager}
Exemple #21
0
def delete_locks_for_user(event):
    """ Remove all lock objects associated with a user when it is about to be
    removed"""
    # if the principal service containing the user is removed (or any parent of
    # the user) this event won't be fired
    if event.moving is not None: # it's not really being removed
        return
    if event.loading: # fbo dump/load
        return
    objectmap = find_objectmap(event.parent)
    if objectmap is not None: # might be None if parent is not seated
        locks = objectmap.targets(event.object, UserToLock)
        for lock in locks:
            lock.commit_suicide()
Exemple #22
0
 def test_create_root_with_initial_content(self, registry):
     from adhocracy_core.resources.root import IRootPool
     from adhocracy_core.utils import find_graph
     from substanced.util import find_objectmap
     from substanced.util import find_catalog
     from substanced.util import find_service
     inst = registry.content.create(IRootPool.__identifier__)
     assert IRootPool.providedBy(inst)
     assert find_objectmap(inst) is not None
     assert find_graph(inst) is not None
     assert find_graph(inst)._objectmap is not None
     assert find_catalog(inst, 'system') is not None
     assert find_catalog(inst, 'adhocracy') is not None
     assert find_service(inst, 'principals', 'users') is not None
     assert find_service(inst, 'locations') is not None
Exemple #23
0
 def test_create_root_with_initial_content(self, registry):
     from adhocracy_core.resources.root import IRootPool
     from adhocracy_core.utils import find_graph
     from substanced.util import find_objectmap
     from substanced.util import find_catalog
     from substanced.util import find_service
     inst = registry.content.create(IRootPool.__identifier__)
     assert IRootPool.providedBy(inst)
     assert find_objectmap(inst) is not None
     assert find_graph(inst) is not None
     assert find_graph(inst)._objectmap is not None
     assert find_catalog(inst, 'system') is not None
     assert find_catalog(inst, 'adhocracy') is not None
     assert find_service(inst, 'principals', 'users') is not None
     assert find_service(inst, 'locations') is not None
Exemple #24
0
    def show_blog(self):
        blog = self.context
        request = self.request
        system_catalog = find_catalog(blog, 'system')
        path = system_catalog['path']
        allowed = system_catalog['allowed']
        q = (path.eq(blog, depth=1, include_origin=False) &
            allowed.allows(request, 'view') )
        limit = self.posts_per_page

        year = request.params.get('year')
        month = request.params.get('month')
        if year and month:
            year, month = int(year), int(month)
            limit = None
            start = datetime.datetime(year, month, 1, 0, 0, tzinfo=UTC)
            if month == 12:
                end = datetime.datetime(year + 1, 1, 1, 0, 0, tzinfo=UTC)
            else:
                end = datetime.datetime(year, month + 1, 1, 0, 0, tzinfo=UTC)
            catalog = find_catalog(blog, 'navel')
            pub_date = catalog['pub_date']
            q &= query.InRange(pub_date, start, end)

        results = q.execute()
        results = pub_date_sorter(blog, results, reverse=True)

        if limit and len(results) > limit:
            offset = int(request.params.get('offset', 0))
            last = offset + limit
            ids = itertools.islice(results.ids, offset, last)
            pager = [
                {'title': 'Older',
                 'url': request.resource_url(blog, query={'offset': last}),
                 'disabled': " disabled" if last >= len(results) else ""},
                {'title': 'Newer',
                 'url': request.resource_url(blog,
                                             query={'offset': offset - limit}),
                 'disabled': " disabled" if offset <= 0 else ""}]
        else:
            pager = None
            ids = results.ids

        objectmap = find_objectmap(blog)
        entries = map(self.get_info, map(objectmap.object_for, ids))
        return {
            'entries': entries,
            'pager': pager}
Exemple #25
0
 def discover(self, resource,
              include_invalid=False,
              include_lineage=True,
              locktype=WriteLock):
     objectmap = find_objectmap(self)
     valid = []
     if include_lineage:
         resources = lineage(resource)
     else:
         resources = [resource]
     for res in resources:
         locks = objectmap.targets(res, locktype)
         for lock in locks:
             if include_invalid or lock.is_valid():
                 valid.append(lock)
     return valid
Exemple #26
0
    def unlock(self, resource, owner_or_ownerid, locktype=WriteLock):

        # NB: callers should ensure that the user has 'sdi.lock' permission
        # on the resource before calling
        objectmap = find_objectmap(self)
        ownerid = self._get_ownerid(owner_or_ownerid)
        locks = objectmap.targets(resource, locktype)
        lock = None
        for lock in locks:
            if not lock.is_valid():
                lock.commit_suicide()
            elif lock.ownerid == ownerid:
                lock.commit_suicide()
                break
        else:  # nobreak
            raise UnlockError(lock)
    def test_create_new_version_with_referencing_non_versionable(self, registry,
                                                                 config, item):
        from substanced.util import find_objectmap
        events = create_event_listener(config, ISheetReferenceNewVersion)
        creator = self.make_one(registry, item)

        version_0 = self.make_one(registry, item)
        other_version_0 = self.make_one(registry, item)
        om = find_objectmap(item)
        om.connect(other_version_0, version_0, SheetToSheet)
        self.make_one(registry, item,
                      follows=[version_0], creator=creator, is_batchmode=True)

        assert len(events) == 1
        assert events[0].creator == creator
        assert events[0].is_batchmode
Exemple #28
0
def internal_login(context, request):

    login = ''
    password = ''

    if 'form.submitted' in request.POST:
        try:
            check_csrf_token(request)
        except:
            request.sdiapi.flash('Failed login (CSRF)', 'danger')
        else:
            login = request.POST['login']
            password = request.POST['password']
            root = request.root
            adapter = request.registry.queryMultiAdapter(
                (root, request), IUserLocator)
            if adapter is None:
                adapter = DefaultUserLocator(root, request)
            user = adapter.get_user_by_login(login)
            if user is None:
                request.session.flash('Bad username or password', 'danger')
            else:
                if user.check_password(password):
                    request.registry.notify(LoggedIn(
                        login, user, context, request))
                    objectmap = find_objectmap(root)
                    try:
                        performer = list(
                            objectmap.sources(user, PerformerToUser)
                        )[0]
                    except IndexError:
                        request.session.flash(
                            'No performer associated with account', 'danger'
                        )
                    else:
                        headers = remember(request, get_oid(user))
                        location = request.resource_url(performer)
                        return HTTPFound(location, headers=headers)
                else:
                    request.session.flash('Bad username or password', 'danger')

    return {
        'login':login,
        'password':password,
        'login_url':request.resource_url(
            request.virtual_root, '@@internal_login'),
    }
Exemple #29
0
def delete_locks(event):
    """ Remove all lock objects associated with an object and/or user when
    it/he is removed"""
    if event.moving is not None: # it's not really being removed
        return
    if event.loading: # fbo dump/load
        return
    resource = event.object
    objectmap = find_objectmap(resource)
    if objectmap is not None:
        # might be None if resource is a broken object
        if IUser.providedBy(resource):
            locks = objectmap.targets(resource, UserToLock)
            for lock in locks:
                lock.commit_suicide()
        locks = objectmap.targets(resource, WriteLock)
        for lock in locks:
            lock.commit_suicide()
Exemple #30
0
def delete_locks(event):
    """ Remove all lock objects associated with an object and/or user when
    it/he is removed"""
    if event.moving is not None:  # it's not really being removed
        return
    if event.loading:  # fbo dump/load
        return
    resource = event.object
    objectmap = find_objectmap(resource)
    if objectmap is not None:
        # might be None if resource is a broken object
        if IUser.providedBy(resource):
            locks = objectmap.targets(resource, UserToLock)
            for lock in locks:
                lock.commit_suicide()
        locks = objectmap.targets(resource, WriteLock)
        for lock in locks:
            lock.commit_suicide()
Exemple #31
0
def object_deleted(event):
    if getattr(event, 'moving', False):
        return

    registry = get_current_registry()
    request = get_current_request()
    if not request:
        return

    objectmap = find_objectmap(request.root)
    ob = event.object
    catalog = get_relations_catalog(request.root)
    if catalog is None:
        # We don't have a Catalog installed in this part of the site
        return

    if IRelationValue.providedBy(ob):
        # We assume relations can't be source or targets of relations
        objectid = oid_from_resource(ob)
        catalog.unindex_doc(objectid)
        return

    objectid = oid_from_resource(ob)
    rels = catalog['source_id'].eq(objectid).execute(
        resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationSourceDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    rels = catalog['target_id'].eq(objectid).execute(
        resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationTargetDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    invalidate_cache()
Exemple #32
0
def object_deleted(event):
    if getattr(event, 'moving', False):
        return

    registry = get_current_registry()
    request = get_current_request()
    if not request:
        return

    objectmap = find_objectmap(request.root)
    ob = event.object
    catalog = get_relations_catalog(request.root)
    if catalog is None:
        # We don't have a Catalog installed in this part of the site
        return

    if IRelationValue.providedBy(ob):
        # We assume relations can't be source or targets of relations
        objectid = oid_from_resource(ob)
        catalog.unindex_doc(objectid)
        return

    objectid = oid_from_resource(ob)
    rels = catalog['source_id'].eq(objectid).execute(
                   resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationSourceDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    rels = catalog['target_id'].eq(objectid).execute(
                  resolver=objectmap.object_for).all()
    for rel in rels:
        registry.notify(RelationTargetDeleted(ob, rel))
        parent = rel.__parent__
        try:
            parent.remove(rel.__name__, send_events=False, registry=registry)
        except KeyError:
            continue

    invalidate_cache()
Exemple #33
0
    def test_create_new_version_with_referencing_non_versionable(
            self, registry, config, item):
        from substanced.util import find_objectmap
        events = create_event_listener(config, ISheetReferenceNewVersion)
        creator = self.make_one(registry, item)

        version_0 = self.make_one(registry, item)
        other_version_0 = self.make_one(registry, item)
        om = find_objectmap(item)
        om.connect(other_version_0, version_0, SheetToSheet)
        self.make_one(registry,
                      item,
                      follows=[version_0],
                      creator=creator,
                      is_batchmode=True)

        assert len(events) == 1
        assert events[0].creator == creator
        assert events[0].is_batchmode
Exemple #34
0
    def unlock(
        self,
        resource,
        owner_or_ownerid,
        locktype=WriteLock,
        ):

        # NB: callers should ensure that the user has 'sdi.lock' permission
        # on the resource before calling
        objectmap = find_objectmap(self)
        ownerid = self._get_ownerid(owner_or_ownerid)
        locks = objectmap.targets(resource, locktype)
        lock = None
        for lock in locks:
            if not lock.is_valid():
                lock.commit_suicide()
            elif lock.ownerid == ownerid:
                lock.commit_suicide()
                break
        else: # nobreak
            raise UnlockError(lock)
Exemple #35
0
def change_bplan_officeworker_email_representation(root, registry):
    """Change bplan officeworker email representation."""
    from substanced.util import find_objectmap
    from adhocracy_core.utils import find_graph
    from adhocracy_meinberlin.resources.bplan import IProcess
    from adhocracy_meinberlin.sheets.bplan import IProcessSettings
    from adhocracy_meinberlin.sheets.bplan import IProcessPrivateSettings
    from adhocracy_meinberlin.sheets.bplan import OfficeWorkerUserReference
    migrate_new_sheet(root, IProcess, IProcessPrivateSettings)
    catalogs = find_service(root, 'catalogs')
    bplaene = _search_for_interfaces(catalogs, IProcess)
    objectmap = find_objectmap(root)
    graph = find_graph(root)
    for bplan in bplaene:
        process_settings_ref = graph.get_references_for_isheet(
            bplan, IProcessSettings)
        if 'office_worker' in process_settings_ref:
            office_worker = process_settings_ref['office_worker'][0]
            private_settings = registry.content.get_sheet(
                bplan, IProcessPrivateSettings)
            private_settings.set({'office_worker_email': office_worker.email})
            objectmap.disconnect(bplan, office_worker,
                                 OfficeWorkerUserReference)
Exemple #36
0
def find_relations(resource, query):
    catalog = get_relations_catalog(resource)
    root = find_root(resource)
    objectmap = find_objectmap(root)
    queryobject = None
    for index, value in sorted(query.items(), key=get_order):
        if 'reftype' == index: # ignore reftype, it's always 'Role'
            continue

        if isinstance(value, (tuple, list)):
            querytype = value[0]
            value = value[1]
        else:
            querytype = 'eq'

        criterion = getattr(catalog[index], querytype)(value)
        if queryobject is None:
            queryobject = criterion
        else:
            queryobject &= criterion

    resultset = queryobject.execute(resolver=objectmap.object_for)
    #print('%s %s'%(query, len(resultset)))
    return resultset
Exemple #37
0
def find_relations(resource, query):
    catalog = get_relations_catalog(resource)
    root = find_root(resource)
    objectmap = find_objectmap(root)
    queryobject = None
    for index, value in sorted(query.items(), key=get_order):
        if 'reftype' == index:  # ignore reftype, it's always 'Role'
            continue

        if isinstance(value, (tuple, list)):
            querytype = value[0]
            value = value[1]
        else:
            querytype = 'eq'

        criterion = getattr(catalog[index], querytype)(value)
        if queryobject is None:
            queryobject = criterion
        else:
            queryobject &= criterion

    resultset = queryobject.execute(resolver=objectmap.object_for)
    #print('%s %s'%(query, len(resultset)))
    return resultset
Exemple #38
0
 def _objectmap(self):
     return find_objectmap(self)
Exemple #39
0
 def validator(self, node, value):
     context = self.bindings['context']
     objectmap = find_objectmap(context)
     if not value in objectmap.objectid_to_path:
         raise colander.Invalid(node, 'Not a valid userid %r' % value)
Exemple #40
0
 def _objectmap(self):
     return find_objectmap(self.context)
Exemple #41
0
 def validator(self, node, value):
     context = self.bindings['context']
     objectmap = find_objectmap(context)
     if not value in objectmap.objectid_to_path:
         raise colander.Invalid(node, 'Not a valid userid %r' % value)
Exemple #42
0
 def _objectmap(self):
     return find_objectmap(self)
Exemple #43
0
 def _objectmap(self):
     return find_objectmap(self.context)