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)
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)
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)