Пример #1
0
def get_facility_registries_in_domain(domain):
    return FacilityRegistry.view(
        'domain/docs',
        reduce=False,
        startkey=[domain, 'FacilityRegistry'],
        endkey=[domain, 'FacilityRegistry', {}],
        include_docs=True,
    ).all()
Пример #2
0
def sync_facilities(request, domain):
    # TODO this is believed to be obsolete and should
    # likely be removed, just need to make sure it isn't
    # magically used by ils/ews first..
    # create Facility Registry and Facility LocationTypes if they don't exist
    if not any(lt.name == 'Facility Registry'
               for lt in request.project.location_types):
        request.project.location_types.extend([
            LocationType(name='Facility Registry', allowed_parents=['']),
            LocationType(name='Facility', allowed_parents=['Facility Registry'])
        ])
        request.project.save()

    registry_locs = {
        l.external_id: l
        for l in Location.filter_by_type(domain, 'Facility Registry')
    }

    # sync each registry and add/update Locations for each Facility
    for registry in FacilityRegistry.by_domain(domain):
        registry.sync_with_remote()

        try:
            registry_loc = registry_locs[registry.url]
        except KeyError:
            registry_loc = Location(
                domain=domain, location_type='Facility Registry',
                external_id=registry.url)
        registry_loc.name = registry.name
        registry_loc.save()
        registry_loc._seen = True

        facility_locs = {
            l.external_id: l
            for l in Location.filter_by_type(domain, 'Facility', registry_loc)
        }

        for facility in registry.get_facilities():
            uuid = facility.data['uuid']
            try:
                facility_loc = facility_locs[uuid]
            except KeyError:
                facility_loc = Location(
                    domain=domain, location_type='Facility', external_id=uuid,
                    parent=registry_loc)
            facility_loc.name = facility.data.get('name', 'Unnamed Facility')
            facility_loc.save()
            facility_loc._seen = True

        for id, f in facility_locs.iteritems():
            if not hasattr(f, '_seen'):
                f.delete()

    for id, r in registry_locs.iteritems():
        if not hasattr(r, '_seen'):
            r.delete()

    return HttpResponse('OK')
Пример #3
0
def sync_facilities(request, domain):
    commtrack_settings = request.project.commtrack_settings

    # create Facility Registry and Facility LocationTypes if they don't exist
    if not any(lt.name == 'Facility Registry'
               for lt in commtrack_settings.location_types):
        commtrack_settings.location_types.extend([
            LocationType(name='Facility Registry', allowed_parents=['']),
            LocationType(name='Facility',
                         allowed_parents=['Facility Registry'])
        ])
        commtrack_settings.save()

    registry_locs = dict(
        (l.external_id, l)
        for l in Location.filter_by_type(domain, 'Facility Registry'))

    # sync each registry and add/update Locations for each Facility
    for registry in FacilityRegistry.by_domain(domain):
        registry.sync_with_remote()

        try:
            registry_loc = registry_locs[registry.url]
        except KeyError:
            registry_loc = Location(domain=domain,
                                    location_type='Facility Registry',
                                    external_id=registry.url)
        registry_loc.name = registry.name
        registry_loc.save()
        registry_loc._seen = True

        facility_locs = dict(
            (l.external_id, l)
            for l in Location.filter_by_type(domain, 'Facility', registry_loc))

        for facility in registry.get_facilities():
            uuid = facility.data['uuid']
            try:
                facility_loc = facility_locs[uuid]
            except KeyError:
                facility_loc = Location(domain=domain,
                                        location_type='Facility',
                                        external_id=uuid,
                                        parent=registry_loc)
            facility_loc.name = facility.data.get('name', 'Unnamed Facility')
            facility_loc.save()
            facility_loc._seen = True

        for id, f in facility_locs.iteritems():
            if not hasattr(f, '_seen'):
                f.delete()

    for id, r in registry_locs.iteritems():
        if not hasattr(r, '_seen'):
            r.delete()

    return HttpResponse('OK')
Пример #4
0
def sync_facilities(request, domain):
    commtrack_settings = request.project.commtrack_settings

    # create Facility Registry and Facility LocationTypes if they don't exist
    if not any(lt.name == 'Facility Registry' 
               for lt in commtrack_settings.location_types):
        commtrack_settings.location_types.extend([
            LocationType(name='Facility Registry', allowed_parents=['']),
            LocationType(name='Facility', allowed_parents=['Facility Registry'])
        ])
        commtrack_settings.save()

    registry_locs = dict((l.external_id, l) for l in
            Location.filter_by_type(domain, 'Facility Registry'))

    # sync each registry and add/update Locations for each Facility
    for registry in FacilityRegistry.by_domain(domain):
        registry.sync_with_remote()

        try:
            registry_loc = registry_locs[registry.url]
        except KeyError:
            registry_loc = Location(
                domain=domain, location_type='Facility Registry',
                external_id=registry.url)
        registry_loc.name = registry.name
        registry_loc.save()
        registry_loc._seen = True

        facility_locs = dict((l.external_id, l) for l in
                Location.filter_by_type(domain, 'Facility', registry_loc))
        
        for facility in registry.get_facilities():
            uuid = facility.data['uuid']
            try:
                facility_loc = facility_locs[uuid]
            except KeyError:
                facility_loc = Location(
                    domain=domain, location_type='Facility', external_id=uuid,
                    parent=registry_loc)
            facility_loc.name = facility.data.get('name', 'Unnamed Facility')
            facility_loc.save()
            facility_loc._seen = True

        for id, f in facility_locs.iteritems():
            if not hasattr(f, '_seen'):
                f.delete()

    for id, r in registry_locs.iteritems():
        if not hasattr(r, '_seen'):
            r.delete()

    return HttpResponse('OK')
Пример #5
0
 def test_get_facility_registries_in_domain(self):
     objects = []
     domain = 'facility-registry-dbaccessors'
     try:
         self.assertEqual(get_facility_registries_in_domain(domain), [])
         o = FacilityRegistry(domain=domain)
         o.save()
         objects.append(o)
         self.assertItemsEqual(
             [o.to_json() for o in get_facility_registries_in_domain(domain)],
             [o.to_json() for o in objects],
         )
         o = FacilityRegistry(domain=domain)
         o.save()
         objects.append(o)
         self.assertItemsEqual(
             [o.to_json() for o in get_facility_registries_in_domain(domain)],
             [o.to_json() for o in objects],
         )
     finally:
         FacilityRegistry.get_db().bulk_delete(objects)
Пример #6
0
def sync_facilities(request, domain):
    # TODO this is believed to be obsolete and should
    # likely be removed, just need to make sure it isn't
    # magically used by ils/ews first..
    # create Facility Registry and Facility LocationTypes if they don't exist
    facility_registry, is_new = LocationType.objects.get_or_create(
        domain=domain,
        name='Facility Registry',
    )
    if is_new:
        LocationType.objects.get_or_create(
            domain=domain,
            name='Facility',
            defaults={
                'parent_type': facility_registry,
            },
        )

    registry_locs = {
        l.external_id: l
        for l in Location.filter_by_type(domain, 'Facility Registry')
    }

    # sync each registry and add/update Locations for each Facility
    for registry in FacilityRegistry.by_domain(domain):
        registry.sync_with_remote()

        try:
            registry_loc = registry_locs[registry.url]
        except KeyError:
            registry_loc = Location(domain=domain,
                                    location_type='Facility Registry',
                                    external_id=registry.url)
        registry_loc.name = registry.name
        registry_loc.save()
        registry_loc._seen = True

        facility_locs = {
            l.external_id: l
            for l in Location.filter_by_type(domain, 'Facility', registry_loc)
        }

        for facility in registry.get_facilities():
            uuid = facility.data['uuid']
            try:
                facility_loc = facility_locs[uuid]
            except KeyError:
                facility_loc = Location(domain=domain,
                                        location_type='Facility',
                                        external_id=uuid,
                                        parent=registry_loc)
            facility_loc.name = facility.data.get('name', 'Unnamed Facility')
            facility_loc.save()
            facility_loc._seen = True

        for id, f in facility_locs.iteritems():
            if not hasattr(f, '_seen'):
                f.delete()

    for id, r in registry_locs.iteritems():
        if not hasattr(r, '_seen'):
            r.delete()

    return HttpResponse('OK')
Пример #7
0
 def test_get_facility_registries_in_domain(self):
     objects = []
     domain = 'facility-registry-dbaccessors'
     try:
         self.assertEqual(get_facility_registries_in_domain(domain), [])
         o = FacilityRegistry(domain=domain)
         o.save()
         objects.append(o)
         self.assertItemsEqual(
             [
                 o.to_json()
                 for o in get_facility_registries_in_domain(domain)
             ],
             [o.to_json() for o in objects],
         )
         o = FacilityRegistry(domain=domain)
         o.save()
         objects.append(o)
         self.assertItemsEqual(
             [
                 o.to_json()
                 for o in get_facility_registries_in_domain(domain)
             ],
             [o.to_json() for o in objects],
         )
     finally:
         FacilityRegistry.get_db().bulk_delete(objects)