예제 #1
0
    def add_narrative(self, element, parent):
        default_lang = self.default_lang  # set on organisation. (if set)
        lang = element.attrib.get('{http://www.w3.org/XML/1998/namespace}lang')
        text = element.text

        language = self.get_or_none(codelist_models.Language, code=lang)

        if not language:
            language = default_lang

        if not parent:
            raise ParserError(
                "Unknown",
                "Narrative",
                "parent object must be passed")

        register_name = parent.__class__.__name__ + "Narrative"

        if not language:
            raise RequiredFieldError(
                register_name,
                "xml:lang",
                "must specify xml:lang on iati-organisation or xml:lang on \
                        the element itself")
        if not text:
            raise RequiredFieldError(
                register_name,
                "text",
                "empty narrative")

        narrative = OrganisationNarrative()
        narrative.language = language
        narrative.content = element.text
        # This (instead of narrative.related_object) is required, otherwise
        # related object doesn't get passed to the model_store (memory) and
        # 'update_related()' fails.
        # It should probably be passed to the __init__() ?
        setattr(narrative, '_related_object', parent)

        narrative.organisation = self.get_model('Organisation')

        # TODO: handle this differently (also: breaks tests)
        self.register_model(register_name, narrative)
예제 #2
0
    def add_narrative(self, element, parent):
        default_lang = self.default_lang  # set on activity (if set)
        lang = element.attrib.get('{http://www.w3.org/XML/1998/namespace}lang',
                                  default_lang)
        text = element.text

        language = self.get_or_none(codelist_models.Language, code=lang)

        if not parent:
            raise self.ParserError("Unknown", "Narrative",
                                   "parent object must be passed")

        register_name = parent.__class__.__name__ + "Narrative"

        if not language:
            raise self.RequiredFieldError(
                register_name, "xml:lang",
                "must specify xml:lang on iati-activity or xml:lang on the element itself"
            )
        if not text:
            raise self.RequiredFieldError(register_name, "text",
                                          "empty narrative")

        narrative = OrganisationNarrative()
        narrative.language = language
        narrative.content = element.text
        narrative.related_object = parent
        narrative.organisation = self.get_model('Organisation')

        # TODO: handle this differently (also: breaks tests)
        self.register_model(register_name, narrative)
예제 #3
0
    def add_narrative(self, element, parent):
        default_lang = self.default_lang  # set on activity (if set)
        lang = element.attrib.get('{http://www.w3.org/XML/1998/namespace}lang')
        text = element.text

        language = self.get_or_none(codelist_models.Language, code=lang)

        if not language:
            language = default_lang

        if not parent:
            raise ParserError("Unknown", "Narrative",
                              "parent object must be passed")

        register_name = parent.__class__.__name__ + "Narrative"

        if not language:
            raise RequiredFieldError(
                register_name, "xml:lang",
                "must specify xml:lang on iati-activity or xml:lang on \
                        the element itself")
        if not text:
            raise RequiredFieldError(register_name, "text", "empty narrative")

        narrative = OrganisationNarrative()
        narrative.language = language
        narrative.content = element.text
        # This (instead of narrative.related_object) is required, otherwise
        # related object doesn't get passed to the model_store (memory) and
        # 'update_related()' fails.
        # It should probably be passed to the __init__() ?
        setattr(narrative, '_related_object', parent)

        narrative.organisation = self.get_model('Organisation')

        # TODO: handle this differently (also: breaks tests)
        self.register_model(register_name, narrative)
    def test_organisation_file_document_link_list_endpoint_result(self):
        # Version
        version = Version(code='2.03')
        version.save()

        # Language
        language = Language(code='en', name='English')
        language.save()

        # Organisation
        organisation_identifier = 'test-org'
        organisation = Organisation(
            organisation_identifier=organisation_identifier,
            normalized_organisation_identifier='test-org',
            iati_standard_version=version,
            primary_name='Test Primary Name')
        organisation.save()

        # Organisation Name
        organisation_name = OrganisationName(organisation=organisation)
        organisation_name.save()

        # Organisation Narrative
        OrganisationNarrative(
            organisation=organisation,
            content_type=ContentType.objects.get_for_model(organisation_name),
            object_id=organisation_name.id,
            language=language,
            content='Test Content').save()

        # File Format
        file_format = FileFormat(code='application/http', name='URL')
        file_format.save()

        # Organisation Document Link
        organisation_document_link_url = 'https://www.test.com'
        organisation_document_link = OrganisationDocumentLink(
            organisation=organisation,
            url=organisation_document_link_url,
            file_format=file_format,
            language=language,
            iso_date=datetime.datetime.strptime('2018-01-01', '%Y-%m-%d'))
        organisation_document_link.save()

        # DocumentCategoryCategory
        document_category_category = DocumentCategoryCategory(
            code='B', name='Organisation Level')
        document_category_category.save()

        # Document Category
        document_category = DocumentCategory(
            code='B01',
            name='Organisation Web URL',
            category=document_category_category)
        document_category.save()

        # Organisation Document Link Category
        organisation_document_link_category = \
            OrganisationDocumentLinkCategory(
                document_link=organisation_document_link,
                category=document_category)
        organisation_document_link_category.save()

        # API client
        client = APIClient()

        # URL endpoint organisation dopcument links
        url = reverse(
            'organisations:organisation-file-organisation-document-link-list',
            kwargs={'organisation_identifier': organisation_identifier})

        # Get response from client
        response = client.get(path=url)
        first_organisation_document_link = response.data.get('results')[0]

        # The first result of the organisation document link list
        # should be the same with above URL 'https://www.test.com'
        self.assertEqual(first_organisation_document_link.get('url'),
                         organisation_document_link_url)