コード例 #1
0
def rel_record_validator(form, field):
    from invenio.modules.records.api import get_record
    from lw_daap.modules.projects.models import Project

    from flask import current_app
    from flask_login import current_user
    for rel in field.data:
        current_app.logger.debug(field.data)
        current_app.logger.debug(rel)
        if rel.get('is_pid', None):
            return
        record = get_record(rel['identifier'])
        if not record:
            raise ValidationError("Invalid record id %s" % rel['identifier'])

        msg = "User does not have permission to access this record"
        if not record.get('communities'):
            current_app.logger.debug(record.get('communities'))
            if 'project' in record:
                p = Project.get_project(record['project'])
                if not p.is_user_allowed():
                    raise ValidationError(msg)
            else:
                if current_user.get_id() != record['owner']['id']:
                    raise ValidationError(msg)
コード例 #2
0
def project_acl_validator(form, field):
    from lw_daap.modules.projects.models import Project

    if field.data:
        p = Project.get_project(field.data)

        if not p:
            raise ValidationError("Invalid project: %s" % field.data)

        if not p.is_user_allowed():
            raise ValidationError("User does not have permissions "
                                  "to deposit records in project: %s"
                                  % field.data)
コード例 #3
0
def format_element(bfo, pid, field=id):
    p = Project.get_project(pid)
    return getattr(p, field, None) if p else None