def test_decode_ubids_is_successful_when_valid_UBID_provided(self): property_details = self.property_state_factory.get_details() property_details['organization_id'] = self.org.id property_details['ubid'] = '86HJPCWQ+2VV-1-3-2-3' property = PropertyState(**property_details) property.save() properties = PropertyState.objects.filter(pk=property.id) decode_unique_ids(properties) refreshed_property = PropertyState.objects.get(pk=property.id) property_bounding_box_wkt = ( "POLYGON ((-87.56021875000002 41.74504999999999, " "-87.56021875000002 41.74514999999997, " "-87.56043749999996 41.74514999999997, " "-87.56043749999996 41.74504999999999, " "-87.56021875000002 41.74504999999999))") property_centroid_wkt = ( "POLYGON ((-87.56031249999999 41.74509999999998, " "-87.56031249999999 41.74512499999997, " "-87.56034374999999 41.74512499999997, " "-87.56034374999999 41.74509999999998, " "-87.56031249999999 41.74509999999998))") self.assertEqual(property_bounding_box_wkt, bounding_box_wkt(refreshed_property)) self.assertEqual(property_centroid_wkt, centroid_wkt(refreshed_property)) self.assertEqual(refreshed_property.latitude, 41.7451) self.assertEqual(refreshed_property.longitude, -87.560328125)
def test_decode_ulids_is_successful_when_valid_ULID_provided(self): taxlot_details = self.taxlot_state_factory.get_details() taxlot_details['organization_id'] = self.org.id taxlot_details['ulid'] = '86HJPCWQ+2VV-1-3-2-3' taxlot = TaxLotState(**taxlot_details) taxlot.save() taxlots = TaxLotState.objects.filter(pk=taxlot.id) decode_unique_ids(taxlots) refreshed_taxlot = TaxLotState.objects.get(pk=taxlot.id) taxlot_bounding_box_wkt = ( "POLYGON ((-87.56021875000002 41.74504999999999, " "-87.56021875000002 41.74514999999997, " "-87.56043749999996 41.74514999999997, " "-87.56043749999996 41.74504999999999, " "-87.56021875000002 41.74504999999999))") taxlot_centroid_wkt = ( "POLYGON ((-87.56031249999999 41.74509999999998, " "-87.56031249999999 41.74512499999997, " "-87.56034374999999 41.74512499999997, " "-87.56034374999999 41.74509999999998, " "-87.56031249999999 41.74509999999998))") self.assertEqual(taxlot_bounding_box_wkt, bounding_box_wkt(refreshed_taxlot)) self.assertEqual(taxlot_centroid_wkt, centroid_wkt(refreshed_taxlot)) self.assertEqual(refreshed_taxlot.latitude, 41.7451) self.assertEqual(refreshed_taxlot.longitude, -87.560328125)
def test_decode_ubids_is_successful_when_v2_format_C_NW_SE_UBID_provided( self): property_details = self.property_state_factory.get_details() property_details['organization_id'] = self.org.id property_details['ubid'] = '849VQJH6+95J-849VQJH5+VGW-849VQJG6+XV8' property = PropertyState(**property_details) property.save() properties = PropertyState.objects.filter(pk=property.id) decode_unique_ids(properties) refreshed_property = PropertyState.objects.get(pk=property.id) property_bounding_box_wkt = ( "POLYGON ((-122.38778125 37.77740000000001, " "-122.38778125 37.77975000000001, " "-122.3911875 37.77975000000001, " "-122.3911875 37.77740000000001, " "-122.38778125 37.77740000000001))") property_centroid_wkt = ("POLYGON ((-122.38959375 37.77845, " "-122.38959375 37.778475, " "-122.389625 37.778475, " "-122.389625 37.77845, " "-122.38959375 37.77845))") self.assertEqual(property_bounding_box_wkt, bounding_box_wkt(refreshed_property)) self.assertEqual(property_centroid_wkt, centroid_wkt(refreshed_property)) self.assertEqual(refreshed_property.latitude, 37.778575) self.assertEqual(refreshed_property.longitude, -122.389484375)
def decode_by_ids(self, request): body = dict(request.data) property_ids = body.get('property_ids') taxlot_ids = body.get('taxlot_ids') if property_ids: properties = PropertyState.objects.filter(id__in=property_ids) decode_unique_ids(properties) if taxlot_ids: taxlots = TaxLotState.objects.filter(id__in=taxlot_ids) decode_unique_ids(taxlots)
def test_decode_ulids_does_nothing_if_no_ULID_provided(self): taxlot_details = self.taxlot_state_factory.get_details() taxlot_details['organization_id'] = self.org.id taxlot = TaxLotState(**taxlot_details) taxlot.save() taxlots = PropertyState.objects.filter(pk=taxlot.id) decode_unique_ids(taxlots) refreshed_taxlot = TaxLotState.objects.get(pk=taxlot.id) self.assertIsNone(bounding_box_wkt(refreshed_taxlot)) self.assertIsNone(centroid_wkt(refreshed_taxlot))
def test_decode_ubids_does_nothing_if_no_UBID_provided(self): property_details = self.property_state_factory.get_details() property_details['organization_id'] = self.org.id property = PropertyState(**property_details) property.save() properties = PropertyState.objects.filter(pk=property.id) decode_unique_ids(properties) refreshed_property = PropertyState.objects.get(pk=property.id) self.assertIsNone(bounding_box_wkt(refreshed_property)) self.assertIsNone(centroid_wkt(refreshed_property))
def test_decode_ulids_doesnt_throw_an_error_if_an_invalid_ulid_is_provided( self): taxlot_details = self.taxlot_state_factory.get_details() taxlot_details['organization_id'] = self.org.id taxlot_details['ulid'] = 'invalidulid' taxlot = TaxLotState(**taxlot_details) taxlot.save() taxlots = TaxLotState.objects.filter(pk=taxlot.id) decode_unique_ids(taxlots) refreshed_taxlot = TaxLotState.objects.get(pk=taxlot.id) self.assertIsNone(bounding_box_wkt(refreshed_taxlot)) self.assertIsNone(centroid_wkt(refreshed_taxlot))
def decode_by_ids(self, request): """ Submit a request to decode UBIDs for property and tax lot records. """ body = dict(request.data) org_id = self.get_organization(request) property_view_ids = body.get('property_view_ids') taxlot_view_ids = body.get('taxlot_view_ids') if property_view_ids: property_views = PropertyView.objects.filter( id__in=property_view_ids, cycle__organization_id=org_id) properties = PropertyState.objects.filter( id__in=Subquery(property_views.values('state_id'))) decode_unique_ids(properties) if taxlot_view_ids: taxlot_views = TaxLotView.objects.filter( id__in=taxlot_view_ids, cycle__organization_id=org_id) taxlots = TaxLotState.objects.filter( id__in=Subquery(taxlot_views.values('state_id'))) decode_unique_ids(taxlots) return JsonResponse({'status': 'success'})