Example #1
0
    def create_ticket(self, record, rt_template):
        control_number = record["control_number"]
        author_name = record["name"]["value"]

        hep_url = get_inspirehep_url()
        author_url = f"{hep_url}/authors/{control_number}"
        author_form_url = f"{hep_url}/submissions/authors/{control_number}"
        # need to add author editor url?

        rt_queue = "AUTHORS_cor_user"

        requestor = current_user.email
        rt_template_context = {
            "author_url": author_url,
            "author_form_url": author_form_url,
            "hep_url": hep_url,
        }
        async_create_ticket_with_template.delay(
            rt_queue,
            requestor,
            rt_template,
            rt_template_context,
            f"Your update to author {author_name} on INSPIRE",
            control_number,
        )
Example #2
0
def generate_sitemap_items_from_search(record_search):
    base_url = get_inspirehep_url()

    for record in record_search.params(_source=SEARCH_SOURCE).scan():
        endpoint = get_endpoint_from_schema(record["$schema"])
        yield {
            "loc": f"{base_url}/{endpoint}/{record.control_number}",
            "lastmod": record._updated,
        }
Example #3
0
def get_submissions_confirmation_email_html_content(seminar):
    hep_url = get_inspirehep_url()
    recid = seminar["control_number"]
    seminar_url = f"{hep_url}/seminars/{recid}"
    seminar_edit_url = f"{hep_url}/submissions/seminars/{recid}"
    return render_template(
        "mailing/seminars/confirmation_new.html",
        seminar_url=seminar_url,
        seminar_edit_url=seminar_edit_url,
    )
Example #4
0
def create_rt_ticket_for_claiming_action(
    self,
    from_author_recid,
    to_author_recid,
    claimed_literature_recids,
    not_allowed_to_be_claimed_literature_recids,
):
    INSPIREHEP_URL = get_inspirehep_url()
    to_author_record = AuthorsRecord.get_record_by_pid_value(to_author_recid)

    already_claimed_papers = []
    incompatibile_names_papers = {}

    for paper_recid in claimed_literature_recids:
        already_claimed_papers.append(
            f"{INSPIREHEP_URL}/literature/{paper_recid}")

    for paper_recid in not_allowed_to_be_claimed_literature_recids:
        lit_record = LiteratureRecord.get_record_by_pid_value(paper_recid)
        matched_author_name = _get_claimed_author_name_for_paper(
            from_author_recid, lit_record.get("authors", []))
        if matched_author_name:
            incompatibile_names_papers[
                f"{INSPIREHEP_URL}/literature/{paper_recid}"] = matched_author_name

    template_payload = dict(
        to_author_names=get_value(to_author_record, "name.name_variants", [])
        or [to_author_record["name"]["value"]],
        from_author_url=f"{INSPIREHEP_URL}/authors/{from_author_recid}",
        to_author_url=f"{INSPIREHEP_URL}/authors/{to_author_recid}",
        incompatibile_names_papers=incompatibile_names_papers,
        already_claimed_papers=already_claimed_papers,
    )

    rt_queue = "AUTHORS_claim_manual"
    requestor = None
    to_author_preffered_name = (get_value(to_author_record,
                                          "name.preferred_name")
                                or to_author_record["name"]["value"])

    async_create_ticket_with_template.delay(
        rt_queue,
        requestor,
        "rt/assign_authors_from_different_profile.html",
        template_payload,
        f"Claims by user {to_author_preffered_name} require curator action",
    )
def test_send_seminar_confirmation_email(mock_send_email, base_app, db,
                                         es_clear):
    expected_recipient = "*****@*****.**"
    seminar = {"control_number": "1234"}
    expected_subject = "Your seminar (1234) has been successfully submitted!"
    host = get_inspirehep_url()
    expected_content = render_template(
        "mailing/seminars/confirmation_new.html",
        seminar_url=f"{host}/seminars/1234",
        seminar_edit_url=f"{host}/submissions/seminars/1234",
    )
    send_seminar_confirmation_email(expected_recipient, seminar)
    mock_send_email.assert_called_once_with(
        sender=current_app.config["SEMINARS_CONFIRMATION_EMAIL_ADDRESS"],
        recipient=expected_recipient,
        subject=expected_subject,
        body=expected_content,
    )
Example #6
0
    def create_ticket(self, record, rt_template):
        control_number = record["control_number"]

        hep_url = get_inspirehep_url()
        seminar_url = f"{hep_url}/seminars/{control_number}"
        seminar_edit_url = f"{hep_url}/submissions/seminars/{control_number}"

        rt_queue = "SEMINARS"

        requestor = current_user.email
        rt_template_context = {
            "seminar_url": seminar_url,
            "seminar_edit_url": seminar_edit_url,
            "hep_url": hep_url,
        }
        async_create_ticket_with_template.delay(
            rt_queue,
            requestor,
            rt_template,
            rt_template_context,
            f"New Seminar Submission {control_number}.",
            control_number,
        )
Example #7
0
    def create_ticket(self, record, rt_template):
        control_number = record["control_number"]

        INSPIREHEP_URL = get_inspirehep_url()
        CONFERENCE_DETAILS = f"{INSPIREHEP_URL}/conferences/{control_number}"
        CONFERENCE_EDIT = f"{INSPIREHEP_URL}/submissions/conferences/{control_number}"

        rt_queue = "CONF_add_user"

        requestor = current_user.email
        rt_template_context = {
            "conference_url": CONFERENCE_DETAILS,
            "conference_url_edit": CONFERENCE_EDIT,
            "hep_url": INSPIREHEP_URL,
        }
        async_create_ticket_with_template.delay(
            rt_queue,
            requestor,
            rt_template,
            rt_template_context,
            f"New Conference Submission {control_number}.",
            control_number,
        )
Example #8
0
    def create_ticket(self, record, rt_template):
        control_number = record["control_number"]

        INSPIREHEP_URL = get_inspirehep_url()
        JOB_DETAILS = f"{INSPIREHEP_URL}/jobs/{control_number}"
        JOB_EDIT = f"{INSPIREHEP_URL}/submissions/jobs/{control_number}"

        rt_queue = "JOBS"
        requestor = record["acquisition_source"]["email"] or record[
            "acquisition_source"].get("name", "UNKNOWN")
        rt_template_context = {
            "job_url": JOB_DETAILS,
            "job_url_edit": JOB_EDIT,
            "hep_url": INSPIREHEP_URL,
        }
        async_create_ticket_with_template.delay(
            rt_queue,
            requestor,
            rt_template,
            rt_template_context,
            f"Job {control_number} has been submitted to the Jobs database",
            control_number,
        )
Example #9
0
def test_generate_sitemap_file(mocked_open, inspire_app, cli):
    literature = create_record("lit")
    literature_from_es = current_search.client.get("records-hep", literature.id)[
        "_source"
    ]
    literature_recid = literature["control_number"]
    literature_updated = literature_from_es["_updated"]

    config = {"SITEMAP_FILES_PATH": "/tmp", "SITEMAP_PAGE_SIZE": 1}
    with override_config(**config):
        result = cli.invoke(["sitemap", "generate"])

        assert result.exit_code == 0

        mocked_open.assert_any_call("/tmp/sitemap1.xml", "w+")
        mocked_open.assert_any_call("/tmp/sitemap.xml", "w+")

        mock_file = mocked_open()
        base_url = get_inspirehep_url()

        index_content = render_template(
            "sitemap/index.xml", urlset=[{"loc": f"{base_url}/sitemap1.xml"}]
        )
        validate_xml_syntax(index_content)
        mock_file.write.assert_any_call(index_content)

        page_content = render_template(
            "sitemap/page.xml",
            urlset=[
                {
                    "loc": f"{base_url}/literature/{literature_recid}",
                    "lastmod": literature_updated,
                }
            ],
        )
        validate_xml_syntax(page_content)
        mock_file.write.assert_any_call(page_content)
Example #10
0
 def public_file_path(self):
     return urljoin(get_inspirehep_url(),
                    current_app.config.get("FILES_PUBLIC_PATH"))
Example #11
0
def get_sitemap_page_absolute_url(page):
    base_url = current_app.config.get("SITEMAP_BASE_PAGE_ABSOLUTE_URL")
    if not base_url:
        base_url = get_inspirehep_url()
    return f"{base_url}/{get_sitemap_page_filename(page)}"
Example #12
0
def get_sitemap_page_absolute_url(page):
    base_url = get_inspirehep_url()
    return f"{base_url}/{get_sitemap_page_filename(page)}"