コード例 #1
0
    def get_builder_with_new_record(self, data):
        if "$schema" not in data:
            data["$schema"] = url_for(
                "invenio_jsonschemas.get_schema",
                schema_path="records/jobs.json",
                _external=True,
            )
        if not is_superuser_or_cataloger_logged_in():
            data["status"] = "pending"

        builder = JobBuilder(record=data)
        if "acquisition_source" not in builder.record:
            acquisition_source = self.get_acquisition_source()
            builder.add_acquisition_source(**acquisition_source)
        return builder
コード例 #2
0
    def get_builder_with_updated_record(self, data, record):
        optional_fields = [
            "external_job_identifier",
            "accelerator_experiments",
            "urls",
            "contact_details",
            "reference_letters",
        ]

        record_data = get_updated_record_data(record, data, optional_fields)
        builder = JobBuilder(record=record_data)
        return builder
コード例 #3
0
    def get_builder_with_updated_record(self, data, record):
        # This contains all fields which can be removed from record (they are optional)
        # if new value sent from the form is None, or empty in any other way
        # (after de-serialization if it's missing from input data)
        # this fields will be removed from record
        additional_fields = [
            "external_job_identifier",
            "accelerator_experiments",
            "urls",
            "contact_details",
            "reference_letters",
        ]

        record_data = dict(record)
        for key in additional_fields:
            if key not in data and key in record_data:
                del record_data[key]
        record_data.update(data)
        builder = JobBuilder(record=record_data)
        return builder
コード例 #4
0
def test_job_builder(job_data):
    start_data = {
        '_collections': ['Jobs'],
        'control_number': job_data['control_number'],
        'deleted': job_data['deleted'],
        'deleted_records': job_data['deleted_records'],
        'legacy_creation_date': job_data['legacy_creation_date'],
        'legacy_version': job_data['legacy_version'],
        'new_record': job_data['new_record'],
        'public_notes': job_data['public_notes'],
        'self': job_data['self']
    }
    builder = JobBuilder(start_data)

    private_note = job_data['_private_notes']
    builder.add_private_note(**private_note[0])
    assert builder.record['_private_notes'] == private_note

    experiments = job_data['accelerator_experiments']
    builder.add_accelerator_experiment(**experiments[0])
    builder.add_accelerator_experiment(**experiments[1])
    assert builder.record['accelerator_experiments'] == experiments

    acquisition_source = job_data['acquisition_source']
    builder.add_acquisition_source(**acquisition_source)
    assert builder.record['acquisition_source'] == acquisition_source

    arxiv = job_data['arxiv_categories']
    builder.add_arxiv_category(arxiv[0])
    builder.add_arxiv_category(arxiv[1])
    builder.add_arxiv_category(arxiv[2])
    assert builder.record['arxiv_categories'] == arxiv

    contact_details = job_data['contact_details']
    builder.add_contact(**contact_details[0])
    builder.add_contact(**contact_details[1])
    builder.add_contact(**contact_details[2])
    assert builder.record['contact_details'] == contact_details

    deadline = job_data['deadline_date']
    builder.set_deadline(deadline)
    assert builder.record['deadline_date'] == deadline

    description = job_data['description']
    builder.set_description(description)
    assert builder.record['description'] == description

    external_job_id = job_data['external_job_identifier']
    builder.set_external_job_identifier(external_job_id)
    assert builder.record['external_job_identifier'] == external_job_id

    external_system_id = job_data['external_system_identifiers']
    builder.add_external_system_identifiers(**external_system_id[0])
    assert builder.record['external_system_identifiers'] == external_system_id

    institutions = job_data['institutions']
    builder.add_institution(**institutions[0])
    builder.add_institution(**institutions[1])
    assert builder.record['institutions'] == institutions

    position = job_data['position']
    builder.set_title(position)
    assert builder.record['position'] == position

    ranks = job_data['ranks']
    builder.add_rank(ranks[0])
    assert builder.record['ranks'] == ranks

    ref_letters = job_data['reference_letters']
    builder.add_reference_email(ref_letters['emails'][0])
    builder.add_reference_email(ref_letters['emails'][1])
    builder.add_reference_url(**ref_letters['urls'][0])
    builder.add_reference_url(**ref_letters['urls'][1])
    builder.add_reference_url(**ref_letters['urls'][2])
    builder.add_reference_url(**ref_letters['urls'][3])
    builder.add_reference_url(**ref_letters['urls'][4])
    assert builder.record['reference_letters'] == ref_letters

    regions = job_data['regions']
    builder.add_region(regions[0])
    builder.add_region(regions[1])
    builder.add_region(regions[2])
    builder.add_region(regions[3])
    assert builder.record['regions'] == regions

    status = job_data['status']
    builder.set_status(status)
    assert builder.record['status'] == status

    urls = job_data['urls']
    builder.add_url(**urls[0])
    builder.add_url(**urls[1])
    assert builder.record['urls'] == urls

    assert builder.record == job_data

    builder.validate_record()