Exemplo n.º 1
0
    def _create_curator_ticket_update(obj, eng):
        from invenio_base.globals import cfg

        user_email = acc_get_user_email(obj.id_user)
        recid = obj.data.get("recid", "")

        subject = "Your update to author {} on INSPIRE".format(
            obj.data.get("name").get("preferred_name")
        )
        record_url = os.path.join(cfg["AUTHORS_UPDATE_BASE_URL"], "record",
                                  str(recid))
        body = render_template(
            template,
            email=user_email,
            url=record_url,
            bibedit_url=record_url + "/edit",
            user_comment=obj.extra_data.get("comments", ""),
        ).strip()

        submit_rt_ticket(
            obj=obj,
            queue=queue,
            subject=subject,
            body=body,
            requestors=user_email,
            ticket_id_key=ticket_id_key
        )
Exemplo n.º 2
0
    def _create_curation_ticket(obj, eng):
        from invenio_access.control import acc_get_user_email

        recid = obj.extra_data.get('recid')
        record_url = obj.extra_data.get('url')

        user_email = acc_get_user_email(obj.id_user)

        bai = ""
        if obj.data.get("bai"):
            bai = "[{}]".format(obj.data.get("bai"))
        subject = "Curation needed for author {} {}".format(
            obj.data.get("name").get("preferred_name"),
            bai
        )
        body = render_template(
            template,
            email=user_email,
            object=obj,
            recid=recid,
            record_url=record_url,
            user_comment=obj.extra_data.get("comments", ""),
        ).strip()

        submit_rt_ticket(
            obj=obj,
            queue=queue,
            subject=subject,
            body=body,
            requestors=user_email,
            ticket_id_key=ticket_id_key
        )
Exemplo n.º 3
0
    def get_title(bwo):
        """Return title of object."""
        from invenio_access.control import acc_get_user_email
        id_user = bwo.id_user
        user_email = acc_get_user_email(id_user)

        return u"Demo form by: {0}".format(user_email)
Exemplo n.º 4
0
    def get_description(bwo):
        """Return description of object."""
        from invenio_access.control import acc_get_user_email

        results = bwo.get_tasks_results()
        try:
            deposit_object = Deposition(bwo)
        except InvalidDepositionType:
            return "This submission is disabled: {0}.".format(bwo.workflow.name)

        id_user = deposit_object.workflow_object.id_user
        user_email = acc_get_user_email(id_user)

        sip = deposit_object.get_latest_sip()
        if sip:
            record = Record(sip.metadata)
            identifiers = []
            report_numbers = record.get("report_numbers", [])
            dois = record.get("dois.value", [])
            if report_numbers:
                for report_number in report_numbers:
                    number = report_number.get("value", "")
                    if number:
                        identifiers.append(number)
            if dois:
                identifiers.extend(["doi:{0}".format(d) for d in dois])

            categories = []
            subjects = record.get("subject_terms", [])
            if subjects:
                for subject in subjects:
                    if isinstance(subject, string_types):
                        categories.append(subject)
                    elif isinstance(subject, dict):
                        if subject.get("term"):
                            categories.append(subject.get("term"))
            categories = [record.get("type_of_doc", "")] + categories

            authors = []
            authors += [record.get("_first_author", {})]
            authors += record.get("_additional_authors", [])
            return render_template(
                "workflows/styles/submission_record.html",
                categories=categories,
                authors=authors,
                identifiers=identifiers,
                results=results,
                user_email=user_email,
                object=bwo,
                record=record,
            )
        else:
            return "Submitter: {0}".format(user_email)
Exemplo n.º 5
0
    def _convert_data_to_model(obj, eng):
        import copy

        from .dojson.model import updateform

        # Save original form data for later access
        form_fields = copy.deepcopy(obj.data)
        obj.extra_data["formdata"] = copy.deepcopy(form_fields)

        data = obj.data

        filter_empty_elements(data)
        converted = updateform.do(data)
        data.clear()
        data.update(converted)

        author_name = ''

        if 'family_name' in form_fields and form_fields['family_name']:
            author_name = form_fields['family_name'].strip() + ', '
        if 'given_names' in form_fields and form_fields['given_names']:
            author_name += form_fields['given_names']

        if author_name:
            data.get('name', {})['value'] = author_name

        # Add comments to extra data
        if "comments" in form_fields and form_fields["comments"]:
            obj.extra_data["comments"] = form_fields["comments"]
            data["_private_note"] = form_fields["comments"]

        # Add HEPNAMES collection
        data["collections"] = {
            "primary": "HEPNAMES"
        }

        # ==========
        # Owner Info
        # ==========
        user_email = acc_get_user_email(obj.id_user)
        sources = ["{0}{1}".format('inspire:uid:', obj.id_user)]
        data['acquisition_source'] = dict(
            source=sources,
            email=user_email,
            date=date.today().isoformat(),
            method="submission",
            submission_number=obj.id,
        )
Exemplo n.º 6
0
    def _create_ticket(obj, eng):
        from invenio_access.control import acc_get_user_email

        deposition = Deposition(obj)
        requestors = acc_get_user_email(obj.id_user)

        subject, body = get_ticket_body(template,
                                        deposition,
                                        deposition.get_latest_sip(sealed=True).metadata,
                                        requestors,
                                        obj)
        submit_rt_ticket(obj,
                         queue,
                         subject,
                         body,
                         requestors,
                         ticket_id_key)
Exemplo n.º 7
0
    def _create_curation_ticket(obj, eng):
        from invenio_access.control import acc_get_user_email

        requestors = acc_get_user_email(obj.id_user)
        record = get_record_from_obj(obj, eng)

        if obj.extra_data.get("core"):
            subject, body = get_curation_body(template,
                                              record,
                                              requestors,
                                              obj.extra_data)
            submit_rt_ticket(obj,
                             queue,
                             subject,
                             body,
                             requestors,
                             ticket_id_key)
Exemplo n.º 8
0
    def _create_curation_ticket(obj, eng):
        from invenio_access.control import acc_get_user_email

        deposition = Deposition(obj)
        requestors = acc_get_user_email(obj.id_user)
        metadata = deposition.get_latest_sip(sealed=True).metadata

        if obj.extra_data.get("core"):
            subject, body = get_curation_body(template,
                                              metadata,
                                              requestors,
                                              obj.extra_data)
            submit_rt_ticket(obj,
                             queue,
                             subject,
                             body,
                             requestors,
                             ticket_id_key)
Exemplo n.º 9
0
    def _create_curator_ticket_new(obj, eng):
        user_email = acc_get_user_email(obj.id_user)

        subject = "Your suggestion to INSPIRE: author {}".format(
            obj.data.get("name").get("preferred_name")
        )
        body = render_template(
            template,
            email=user_email,
            object=obj,
            user_comment=obj.extra_data.get("comments", ""),
        ).strip()

        submit_rt_ticket(
            obj=obj,
            queue=queue,
            subject=subject,
            body=body,
            requestors=user_email,
            ticket_id_key=ticket_id_key
        )
Exemplo n.º 10
0
    def formatter(bwo, **kwargs):
        """Return formatted data of object."""

        of = kwargs.get("of", "hp")

        xml = bwo.extra_data.get("marcxml")

        id_user = bwo.id_user
        user_email = acc_get_user_email(id_user)
        ticket_id = bwo.extra_data.get("ticket_id")
        ticket_url = "https://rt.inspirehep.net/Ticket/Display.html?id={}".format(
            ticket_id
        )

        if of == "xm":
            return xml
        else:
            # FIXME add a template for the author display in the HP
            return render_template("authors/workflows/authorupdate.html",
                                   record=bwo.data,
                                   user_email=user_email,
                                   ticket_url=ticket_url,
                                   comments=bwo.extra_data.get("comments"))
Exemplo n.º 11
0
    def get_title(bwo):
        """Return title of object."""
        id_user = bwo.id_user
        user_email = acc_get_user_email(id_user)

        return u"Author update by: {0}".format(user_email)