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)
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)
def format_element(bfo, pid, field=id): p = Project.get_project(pid) return getattr(p, field, None) if p else None