Skip to content

Commit 3afb759

Browse files
committed
[fix] Resolve conflicts and increased queries based on recent changes to geo_api:device_location
1 parent 7580cdc commit 3afb759

File tree

5 files changed

+59
-59
lines changed

5 files changed

+59
-59
lines changed

openwisp_controller/config/api/serializers.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -380,25 +380,25 @@ def update(self, instance, validated_data):
380380

381381

382382
class VersionSerializer(BaseSerializer):
383-
user_id = serializers.CharField(source='revision.user_id', read_only=True)
383+
user_id = serializers.CharField(source="revision.user_id", read_only=True)
384384
date_created = serializers.DateTimeField(
385-
source='revision.date_created', read_only=True
385+
source="revision.date_created", read_only=True
386386
)
387-
comment = serializers.CharField(source='revision.comment', read_only=True)
388-
content_type = serializers.CharField(source='revision.content_type', read_only=True)
387+
comment = serializers.CharField(source="revision.comment", read_only=True)
388+
content_type = serializers.CharField(source="revision.content_type", read_only=True)
389389

390390
class Meta:
391391
model = Version
392392
fields = [
393-
'id',
394-
'revision_id',
395-
'object_id',
396-
'content_type',
397-
'db',
398-
'format',
399-
'serialized_data',
400-
'object_repr',
401-
'user_id',
402-
'date_created',
403-
'comment',
393+
"id",
394+
"revision_id",
395+
"object_id",
396+
"content_type",
397+
"db",
398+
"format",
399+
"serialized_data",
400+
"object_repr",
401+
"user_id",
402+
"date_created",
403+
"comment",
404404
]

openwisp_controller/config/api/views.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -305,43 +305,43 @@ def certificate_delete_invalidates_cache(cls, organization_id, common_name):
305305

306306
class RevisionListView(ProtectedAPIMixin, ListAPIView):
307307
serializer_class = VersionSerializer
308-
queryset = Version.objects.select_related('revision').order_by(
309-
'-revision__date_created'
308+
queryset = Version.objects.select_related("revision").order_by(
309+
"-revision__date_created"
310310
)
311311

312312
def get_queryset(self):
313-
model = self.kwargs.get('model').lower()
313+
model = self.kwargs.get("model").lower()
314314
queryset = self.queryset.filter(content_type__model=model)
315-
revision_id = self.request.query_params.get('revision_id')
315+
revision_id = self.request.query_params.get("revision_id")
316316
if revision_id:
317317
queryset = queryset.filter(revision_id=revision_id)
318318
return self.queryset.filter(content_type__model=model)
319319

320320

321321
class VersionDetailView(ProtectedAPIMixin, RetrieveAPIView):
322322
serializer_class = VersionSerializer
323-
queryset = Version.objects.select_related('revision').order_by(
324-
'-revision__date_created'
323+
queryset = Version.objects.select_related("revision").order_by(
324+
"-revision__date_created"
325325
)
326326

327327
def get_queryset(self):
328-
model = self.kwargs.get('model').lower()
328+
model = self.kwargs.get("model").lower()
329329
return self.queryset.filter(content_type__model=model)
330330

331331

332332
class RevisionRestoreView(ProtectedAPIMixin, GenericAPIView):
333333
serializer_class = serializers.Serializer
334-
queryset = Version.objects.select_related('revision').order_by(
335-
'-revision__date_created'
334+
queryset = Version.objects.select_related("revision").order_by(
335+
"-revision__date_created"
336336
)
337337

338338
def get_queryset(self):
339-
model = self.kwargs.get('model').lower()
339+
model = self.kwargs.get("model").lower()
340340
return self.queryset.filter(content_type__model=model)
341341

342342
def post(self, request, *args, **kwargs):
343343
qs = self.get_queryset()
344-
versions = get_list_or_404(qs, revision_id=kwargs['pk'])
344+
versions = get_list_or_404(qs, revision_id=kwargs["pk"])
345345
with transaction.atomic():
346346
with reversion.create_revision():
347347
for version in versions:

openwisp_controller/config/tests/test_api.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,46 +1638,46 @@ def test_device_patch_with_templates_of_same_org(self):
16381638

16391639
def test_revision_list_and_restore_api(self):
16401640
org = self._get_org()
1641-
model_slug = 'device'
1641+
model_slug = "device"
16421642
with reversion.create_revision():
16431643
device = self._create_device(
16441644
organization=org,
16451645
name="test",
16461646
)
1647-
path = reverse('config_api:device_detail', args=[device.pk])
1648-
data = dict(name='change-test-device')
1649-
response = self.client.patch(path, data, content_type='application/json')
1647+
path = reverse("config_api:device_detail", args=[device.pk])
1648+
data = dict(name="change-test-device")
1649+
response = self.client.patch(path, data, content_type="application/json")
16501650
self.assertEqual(response.status_code, 200)
1651-
self.assertEqual(response.data['name'], 'change-test-device')
1651+
self.assertEqual(response.data["name"], "change-test-device")
16521652

1653-
with self.subTest('Test revision list'):
1654-
path = reverse('config_api:revision_list', args=[model_slug])
1653+
with self.subTest("Test revision list"):
1654+
path = reverse("config_api:revision_list", args=[model_slug])
16551655
response = self.client.get(path)
16561656
response_json = response.json()
16571657
version_id = response_json[1]["id"]
1658-
revision_id = response_json[1]['revision_id']
1658+
revision_id = response_json[1]["revision_id"]
16591659
self.assertEqual(response.status_code, 200)
16601660
self.assertEqual(len(response_json), 2)
16611661

1662-
with self.subTest('Test revision list filter by revision id'):
1663-
path = reverse('config_api:revision_list', args=[model_slug])
1664-
response = self.client.get(f'{path}?revision_id={revision_id}')
1662+
with self.subTest("Test revision list filter by revision id"):
1663+
path = reverse("config_api:revision_list", args=[model_slug])
1664+
response = self.client.get(f"{path}?revision_id={revision_id}")
16651665
response_json = response.json()
16661666
self.assertEqual(response.status_code, 200)
16671667
self.assertEqual(len(response_json), 2)
16681668

1669-
with self.subTest('Test version detail'):
1670-
path = reverse('config_api:version_detail', args=[model_slug, version_id])
1669+
with self.subTest("Test version detail"):
1670+
path = reverse("config_api:version_detail", args=[model_slug, version_id])
16711671
response = self.client.get(path)
16721672
self.assertEqual(response.status_code, 200)
1673-
self.assertEqual(response.json()['id'], version_id)
1674-
self.assertEqual(response.json()['object_id'], str(device.pk))
1673+
self.assertEqual(response.json()["id"], version_id)
1674+
self.assertEqual(response.json()["object_id"], str(device.pk))
16751675

1676-
with self.subTest('Test revision restore view'):
1677-
revision_id = response_json[1]['revision_id']
1676+
with self.subTest("Test revision restore view"):
1677+
revision_id = response_json[1]["revision_id"]
16781678
path = reverse(
1679-
'config_api:revision_restore', args=[model_slug, revision_id]
1679+
"config_api:revision_restore", args=[model_slug, revision_id]
16801680
)
16811681
response = self.client.post(path)
16821682
self.assertEqual(response.status_code, 200)
1683-
self.assertEqual(Device.objects.get(name='test').pk, device.pk)
1683+
self.assertEqual(Device.objects.get(name="test").pk, device.pk)

openwisp_controller/geo/tests/test_api.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -724,7 +724,7 @@ def test_create_devicelocation_using_related_ids(self):
724724
floorplan = self._create_floorplan()
725725
location = floorplan.location
726726
url = reverse("geo_api:device_location", args=[device.id])
727-
with self.assertNumQueries(26):
727+
with self.assertNumQueries(29):
728728
response = self.client.put(
729729
url,
730730
data={
@@ -762,7 +762,7 @@ def test_create_devicelocation_location_floorplan(self):
762762
"floorplan.image": self._get_simpleuploadedfile(),
763763
"indoor": ["12.342,23.541"],
764764
}
765-
with self.assertNumQueries(40):
765+
with self.assertNumQueries(43):
766766
response = self.client.put(
767767
url, encode_multipart(BOUNDARY, data), content_type=MULTIPART_CONTENT
768768
)
@@ -829,8 +829,8 @@ def test_create_devicelocation_only_location(self):
829829
"type": "indoor",
830830
}
831831
}
832-
with self.assertNumQueries(29):
833-
response = self.client.put(url, data=data, content_type='application/json')
832+
with self.assertNumQueries(32):
833+
response = self.client.put(url, data=data, content_type="application/json")
834834
self.assertEqual(response.status_code, 201)
835835
self.assertEqual(self.location_model.objects.count(), 1)
836836
self.assertEqual(self.object_location_model.objects.count(), 1)
@@ -869,7 +869,7 @@ def test_create_devicelocation_existing_location_new_floorplan(self):
869869
"floorplan.image": self._get_simpleuploadedfile(),
870870
"indoor": ["12.342,23.541"],
871871
}
872-
with self.assertNumQueries(34):
872+
with self.assertNumQueries(37):
873873
response = self.client.put(
874874
url, encode_multipart(BOUNDARY, data), content_type=MULTIPART_CONTENT
875875
)
@@ -892,7 +892,7 @@ def test_update_devicelocation_change_location_outdoor_to_indoor(self):
892892
}
893893
self.assertEqual(device_location.location.type, "outdoor")
894894
self.assertEqual(device_location.floorplan, None)
895-
with self.assertNumQueries(31):
895+
with self.assertNumQueries(33):
896896
response = self.client.put(
897897
path, encode_multipart(BOUNDARY, data), content_type=MULTIPART_CONTENT
898898
)
@@ -911,7 +911,7 @@ def test_update_devicelocation_patch_indoor(self):
911911
"indoor": "0,0",
912912
}
913913
self.assertEqual(device_location.indoor, "-140.38620,40.369227")
914-
with self.assertNumQueries(18):
914+
with self.assertNumQueries(20):
915915
response = self.client.patch(path, data, content_type="application/json")
916916
self.assertEqual(response.status_code, 200)
917917
device_location.refresh_from_db()
@@ -928,8 +928,8 @@ def test_update_devicelocation_floorplan_related_id(self):
928928
data = {
929929
"floorplan": str(floor2.id),
930930
}
931-
with self.assertNumQueries(20):
932-
response = self.client.patch(path, data, content_type='application/json')
931+
with self.assertNumQueries(22):
932+
response = self.client.patch(path, data, content_type="application/json")
933933
self.assertEqual(response.status_code, 200)
934934
device_location.refresh_from_db()
935935
self.assertEqual(device_location.floorplan, floor2)
@@ -942,7 +942,7 @@ def test_update_devicelocation_location_related_id(self):
942942
data = {
943943
"location": str(location2.id),
944944
}
945-
with self.assertNumQueries(19):
945+
with self.assertNumQueries(21):
946946
response = self.client.patch(path, data, content_type="application/json")
947947
self.assertEqual(response.status_code, 200)
948948
device_location.refresh_from_db()

openwisp_controller/mixins.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ class AutoRevisionMixin(RevisionMixin):
4444
revision_atomic = False
4545

4646
def dispatch(self, request, *args, **kwargs):
47-
qs = getattr(self, 'queryset', None)
48-
model = getattr(qs, 'model', None)
47+
qs = getattr(self, "queryset", None)
48+
model = getattr(qs, "model", None)
4949
if (
50-
request.method in ('POST', 'PUT', 'PATCH')
50+
request.method in ("POST", "PUT", "PATCH")
5151
and request.user.is_authenticated
5252
and model
5353
and reversion.is_registered(model)
@@ -56,7 +56,7 @@ def dispatch(self, request, *args, **kwargs):
5656
response = super().dispatch(request, *args, **kwargs)
5757
reversion.set_user(request.user)
5858
reversion.set_comment(
59-
f'API request: {request.method} {request.get_full_path()}'
59+
f"API request: {request.method} {request.get_full_path()}"
6060
)
6161
return response
6262
return super().dispatch(request, *args, **kwargs)

0 commit comments

Comments
 (0)