示例#1
0
 def _create(cls, *args, **kwargs):
     branched_from = kwargs.get("branched_from")
     initiator = kwargs.get("initiator")
     registration_schema = kwargs.get("registration_schema")
     registration_metadata = kwargs.get("registration_metadata")
     if not branched_from:
         project_params = {}
         if initiator:
             project_params["creator"] = initiator
         branched_from = ProjectFactory(**project_params)
     initiator = branched_from.creator
     try:
         registration_schema = registration_schema or MetaSchema.find()[0]
     except IndexError:
         ensure_schemas()
     registration_metadata = registration_metadata or {}
     draft = DraftRegistration.create_from_node(
         branched_from, user=initiator, schema=registration_schema, data=registration_metadata
     )
     return draft
示例#2
0
 def _create(cls, *args, **kwargs):
     branched_from = kwargs.get('branched_from')
     initiator = kwargs.get('initiator')
     registration_schema = kwargs.get('registration_schema')
     registration_metadata = kwargs.get('registration_metadata')
     if not branched_from:
         project_params = {}
         if initiator:
             project_params['creator'] = initiator
         branched_from = ProjectFactory(**project_params)
     initiator = branched_from.creator
     try:
         registration_schema = registration_schema or MetaSchema.find()[0]
     except IndexError:
         ensure_schemas()
     registration_metadata = registration_metadata or {}
     draft = DraftRegistration.create_from_node(
         branched_from,
         user=initiator,
         schema=registration_schema,
         data=registration_metadata,
     )
     return draft
示例#3
0
文件: drafts.py 项目: Alpani/osf.io
def new_draft_registration(auth, node, *args, **kwargs):
    """Create a new draft registration for the node

    :return: Redirect to the new draft's edit page
    :rtype: flask.redirect
    :raises: HTTPError
    """
    if node.is_registration:
        raise HTTPError(http.FORBIDDEN, data={
            'message_short': "Can't create draft",
            'message_long': "Creating draft registrations on registered projects is not allowed."
        })
    data = request.values

    schema_name = data.get('schema_name')
    if not schema_name:
        raise HTTPError(
            http.BAD_REQUEST,
            data={
                'message_short': 'Must specify a schema_name',
                'message_long': 'Please specify a schema_name'
            }
        )

    schema_version = data.get('schema_version', 2)

    meta_schema = get_schema_or_fail(
        Q('name', 'eq', schema_name) &
        Q('schema_version', 'eq', int(schema_version))
    )
    draft = DraftRegistration.create_from_node(
        node,
        user=auth.user,
        schema=meta_schema,
        data={}
    )
    return redirect(node.web_url_for('edit_draft_registration_page', draft_id=draft._id))
示例#4
0
def new_draft_registration(auth, node, *args, **kwargs):
    """Create a new draft registration for the node

    :return: Redirect to the new draft's edit page
    :rtype: flask.redirect
    :raises: HTTPError
    """
    if node.is_registration:
        raise HTTPError(
            http.FORBIDDEN,
            data={
                'message_short':
                "Can't create draft",
                'message_long':
                "Creating draft registrations on registered projects is not allowed."
            })
    data = request.values

    schema_name = data.get('schema_name')
    if not schema_name:
        raise HTTPError(http.BAD_REQUEST,
                        data={
                            'message_short': 'Must specify a schema_name',
                            'message_long': 'Please specify a schema_name'
                        })

    schema_version = data.get('schema_version', 2)

    meta_schema = get_schema_or_fail(
        Q('name', 'eq', schema_name)
        & Q('schema_version', 'eq', int(schema_version)))
    draft = DraftRegistration.create_from_node(node,
                                               user=auth.user,
                                               schema=meta_schema,
                                               data={})
    return redirect(
        node.web_url_for('edit_draft_registration_page', draft_id=draft._id))