Example #1
0
def do_upgrade():
    """Implement your upgrades here."""
    from invenio.modules.workflows.models import BibWorkflowObject
    from invenio.modules.deposit.models import Deposition

    q = BibWorkflowObject.query.filter(BibWorkflowObject.id_user != 0).all()
    for b in q:
        try:
            d = Deposition(b)
        except KeyError:
            logger.info("Fixing data in {}".format(b.id))
            b.set_data(
                dict(
                    type='upload',
                    title='Untitled',
                    files=[],
                    drafts={},
                    sips=[],
                ))
            d = Deposition(b)
            d.save()

        s = _get_state(d)
        c = str(b.get_extra_data().get('_task_counter'))
        co = str(b.get_extra_data().get('task_counter'))

        if s == 'inprogress-new':
            if c == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
            elif c == "[0, 0, 3, 2]":
                b.save(task_counter=[0, 3, 2])
            elif c == "None" and co == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
        elif s == 'inprogress-edit':
            if c == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif c == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "[0, 4, 3, 0]":
                b.save(task_counter=[4, 3, 0])
            elif c == "None" and co == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "None" and co == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif b.id == 2076:
                b.save(task_counter=[4, 3, 0])
                b.workflow.save(status=4)
        elif s == 'error':
            if c == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif c == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
            elif c == "[0, 0, 3, 2]":
                b.save(task_counter=[0, 3, 2])
            elif c == "[0, 4, 3, 0]":
                b.save(task_counter=[4, 3, 0])
            elif c == "[0, 4, 3, 1]":
                b.save(task_counter=[4, 3, 1])
def do_upgrade():
    """Implement your upgrades here."""
    from invenio.modules.workflows.models import BibWorkflowObject
    from invenio.modules.deposit.models import Deposition

    q = BibWorkflowObject.query.filter(BibWorkflowObject.id_user != 0).all()
    for b in q:
        try:
            d = Deposition(b)
        except KeyError:
            logger.info("Fixing data in {}".format(b.id))
            b.set_data(dict(
                type='upload',
                title='Untitled',
                files=[],
                drafts={},
                sips=[],
            ))
            d = Deposition(b)
            d.save()

        s = _get_state(d)
        c = str(b.get_extra_data().get('_task_counter'))
        co = str(b.get_extra_data().get('task_counter'))

        if s == 'inprogress-new':
            if c == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
            elif c == "[0, 0, 3, 2]":
                b.save(task_counter=[0, 3, 2])
            elif c == "None" and co == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
        elif s == 'inprogress-edit':
            if c == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif c == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "[0, 4, 3, 0]":
                b.save(task_counter=[4, 3, 0])
            elif c == "None" and co == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "None" and co == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif b.id == 2076:
                b.save(task_counter=[4, 3, 0])
                b.workflow.save(status=4)
        elif s == 'error':
            if c == "[0, 0, 1, 0]":
                b.save(task_counter=[0, 1, 0])
            elif c == "[0, 0, 1, 1]":
                b.save(task_counter=[0, 1, 1])
            elif c == "[0, 0, 3, 1]":
                b.save(task_counter=[0, 3, 1])
            elif c == "[0, 0, 3, 2]":
                b.save(task_counter=[0, 3, 2])
            elif c == "[0, 4, 3, 0]":
                b.save(task_counter=[4, 3, 0])
            elif c == "[0, 4, 3, 1]":
                b.save(task_counter=[4, 3, 1])
Example #3
0
def add_submission_extra_data(obj, eng):
    """ Add extra data to workflow object. """
    deposition = Deposition(obj)
    sip = deposition.get_latest_sip(sealed=False)
    metadata = sip.metadata
    submission_data = {}
    if "references" in metadata:
        submission_data["references"] = metadata["references"]
        del metadata["references"]
    if "extra_comments" in metadata:
        submission_data["extra_comments"] = metadata["extra_comments"]
        del metadata["extra_comments"]
    if "pdf" in metadata:
        submission_data["pdf"] = metadata["pdf"]
        del metadata["pdf"]
    obj.extra_data["submission_data"] = submission_data
    deposition.save()
def edit_record_urls(objectid):
    """Entrypoint for editing urls from detailed pages."""
    editable_obj = BibWorkflowObject.query.get(objectid)
    new_urls = request.values.getlist('urls[]') or []

    deposition = Deposition(editable_obj)
    sip = deposition.get_latest_sip()
    metadata = sip.metadata

    # Get the new urls and format them, the way the object does
    new_urls_array = []
    for url in new_urls:
        new_urls_array.append({'url': url})

    metadata[URL] = new_urls_array
    sip.package = make_record(sip.metadata).legacy_export_as_marc()
    deposition.save()

    return jsonify({
        "category": "success",
        "message": "Edit on urls was successful."
    })
def edit_record_title(value, objectid):
    """Entrypoint for editing title from detailed pages."""
    editable_obj = BibWorkflowObject.query.get(objectid)
    data = editable_obj.get_data()

    if type(data) is dict:
        deposition = Deposition(editable_obj)
        sip = deposition.get_latest_sip()
        metadata = sip.metadata

        metadata[TITLE][TITLE] = MathMLParser.html_to_text(value)
        sip.package = make_record(sip.metadata).legacy_export_as_marc()
        deposition.save()
    else:
        data[TITLE_FIELD] = MathMLParser.html_to_text(value)
        editable_obj.set_data(data)
        editable_obj.save()

    return jsonify({
        "category": "success",
        "message": "Edit on title was successful."
    })