def get_facility_registries_in_domain(domain): return FacilityRegistry.view( 'domain/docs', reduce=False, startkey=[domain, 'FacilityRegistry'], endkey=[domain, 'FacilityRegistry', {}], include_docs=True, ).all()
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')
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')
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')
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)
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')
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)