Пример #1
0
def import_orgs(xml_file):
    with open(xml_file, "rb") as f:
        report_data = dict(created=0, failed=0, updated=0)
        root = etree.fromstring(f.read())
        for element in root:
            recording_org = Organisation.objects.get(id=CORDAID_ORG_ID)
            identifier = element.findtext("org_id")
            try:  # Find existing InternalOrganisationID & Organisation ...
                action = "updated"
                internal_org_id = InternalOrganisationID.objects.get(
                    recording_org=recording_org,
                    identifier=identifier
                )
                referenced_org = internal_org_id.referenced_org
            except:  # ... or attempt to create new ones
                try:
                    action = "created"
                    referenced_org = Organisation()
                    referenced_org.save()
                    internal_org_id = InternalOrganisationID(
                        recording_org=recording_org,
                        referenced_org=referenced_org,
                        identifier=identifier
                    )
                    internal_org_id.save()
                    for partner_type in PartnerType.objects.all():
                        referenced_org.partner_types.add(partner_type)
                except Exception, e:
                    action = "failed"
                    internal_org_id.delete()
                    referenced_org.delete()
                    print(u"*** UNABLE TO CREATE NEW ORGANISATION! "
                           "Reason: {message}.".format(e.message))
            name = element.findtext("name")
            referenced_org.name, referenced_org.long_name = name[:25], name
            referenced_org.description = element.findtext("description") or "N/A"
            referenced_org.url = normalize_url(element.findtext("url"))
            referenced_org.new_organisation_type = int(element.findtext("iati_organisation_type"))
            referenced_org.organisation_type = get_organisation_type(referenced_org.new_organisation_type)
            report_data[action] += 1
            referenced_org.save()
            log_and_alert(u"{action} organisation {org_id} "
                         "(Cordaid ID: {cordaid_org_id})".format(
                action=action.upper(),
                cordaid_org_id=internal_org_id.identifier,
                org_id=referenced_org.id
            ))
        run_import_report("organisation", report_data)
Пример #2
0
def import_orgs(xml_file):
    with open(xml_file, "rb") as f:
        report_data = dict(created=0, failed=0, updated=0)
        root = etree.fromstring(f.read())
        for element in root:
            recording_org = Organisation.objects.get(id=CORDAID_ORG_ID)
            identifier = element.findtext("org_id")
            try:  # Find existing InternalOrganisationID & Organisation ...
                action = "updated"
                internal_org_id = InternalOrganisationID.objects.get(
                    recording_org=recording_org, identifier=identifier)
                referenced_org = internal_org_id.referenced_org
            except:  # ... or attempt to create new ones
                try:
                    action = "created"
                    referenced_org = Organisation()
                    referenced_org.save()
                    internal_org_id = InternalOrganisationID(
                        recording_org=recording_org,
                        referenced_org=referenced_org,
                        identifier=identifier)
                    internal_org_id.save()
                    for partner_type in PartnerType.objects.all():
                        referenced_org.partner_types.add(partner_type)
                except Exception, e:
                    action = "failed"
                    internal_org_id.delete()
                    referenced_org.delete()
                    print(u"*** UNABLE TO CREATE NEW ORGANISATION! "
                          "Reason: {message}.".format(e.message))
            name = element.findtext("name")
            referenced_org.name, referenced_org.long_name = name[:25], name
            referenced_org.description = element.findtext(
                "description") or "N/A"
            referenced_org.url = normalize_url(element.findtext("url"))
            referenced_org.new_organisation_type = int(
                element.findtext("iati_organisation_type"))
            referenced_org.organisation_type = get_organisation_type(
                referenced_org.new_organisation_type)
            report_data[action] += 1
            referenced_org.save()
            log_and_alert(u"{action} organisation {org_id} "
                          "(Cordaid ID: {cordaid_org_id})".format(
                              action=action.upper(),
                              cordaid_org_id=internal_org_id.identifier,
                              org_id=referenced_org.id))
        run_import_report("organisation", report_data)