def update_draft_registration(auth, node, draft, *args, **kwargs): """Update an existing draft registration :return: serialized draft registration :rtype: dict :raises: HTTPError """ check_draft_state(draft) data = request.get_json() schema_data = data.get('schema_data', {}) schema_data = rapply(schema_data, strip_html) schema_name = data.get('schema_name') schema_version = data.get('schema_version', 1) if schema_name: meta_schema = get_schema_or_fail( Q('name', 'eq', schema_name) & Q('schema_version', 'eq', schema_version) ) existing_schema = draft.registration_schema if (existing_schema.name, existing_schema.schema_version) != (meta_schema.name, meta_schema.schema_version): draft.registration_schema = meta_schema draft.update_metadata(schema_data) draft.save() return serialize_draft_registration(draft, auth), http.OK
def get_draft_registration(auth, node, draft, *args, **kwargs): """Return a single draft registration :return: serialized draft registration :rtype: dict """ return serialize_draft_registration(draft, auth), http.OK
def edit_draft_registration_page(auth, node, draft, **kwargs): """Draft registration editor :return: serialized DraftRegistration :rtype: dict """ check_draft_state(draft) ret = project_utils.serialize_node(node, auth, primary=True) ret['draft'] = serialize_draft_registration(draft, auth) return ret
def draft_before_register_page(auth, node, draft, *args, **kwargs): """Allow the user to select an embargo period and confirm registration :return: serialized Node + DraftRegistration :rtype: dict """ ret = serialize_node(node, auth, primary=True) ret['draft'] = serialize_draft_registration(draft, auth) return ret
def get_draft_registrations(auth, node, *args, **kwargs): """List draft registrations for a node :return: serialized draft registrations :rtype: dict """ count = request.args.get('count', 100) drafts = node.draft_registrations_active[:count] return { 'drafts': [serialize_draft_registration(d, auth) for d in drafts] }, http.OK
def get_draft_registrations(auth, node, *args, **kwargs): """List draft registrations for a node :return: serialized draft registrations :rtype: dict """ #'updated': '2016-08-03T14:24:12Z' count = request.args.get('count', 100) drafts = itertools.islice(node.draft_registrations_active, 0, count) serialized_drafts = [serialize_draft_registration(d, auth) for d in drafts] sorted_serialized_drafts = sorted(serialized_drafts, key=itemgetter('updated'), reverse=True) return { 'drafts': sorted_serialized_drafts }, http.OK