Skip to content

Commit a963643

Browse files
committed
[fix] Fixed DeviceResource and GeoDeviceResource
1 parent 4a9a446 commit a963643

File tree

5 files changed

+20
-18
lines changed

5 files changed

+20
-18
lines changed

Diff for: openwisp_controller/config/admin.py

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from django.utils.translation import gettext_lazy as _
2323
from flat_json_widget.widgets import FlatJsonWidget
2424
from import_export.admin import ImportExportMixin
25+
from import_export.forms import ExportForm
2526
from openwisp_ipam.filters import SubnetFilter
2627
from swapper import load_model
2728

@@ -744,6 +745,7 @@ def add_reversion_following(cls, follow):
744745

745746

746747
class DeviceAdminExportable(ImportExportMixin, DeviceAdmin):
748+
export_form_class = ExportForm
747749
resource_class = DeviceResource
748750
# needed to support both reversion and import-export
749751
change_list_template = 'admin/config/change_list_device.html'

Diff for: openwisp_controller/config/exportable.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,10 @@ def validate_instance(
127127
if config.device_id != instance.id:
128128
config.device_id = instance.id
129129

130-
def after_save_instance(self, instance, using_transactions, dry_run):
131-
super().after_save_instance(instance, using_transactions, dry_run)
132-
if not dry_run:
133-
# save config afte device has been imported
130+
def after_save_instance(self, instance, row, **kwargs):
131+
super().after_save_instance(instance, row, **kwargs)
132+
if not self._is_dry_run(kwargs):
133+
# save config after device has been imported
134134
if instance._has_config():
135135
instance.config.save()
136136

Diff for: openwisp_controller/config/tests/test_admin.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def test_device_import_export_buttons(self):
8383

8484
def test_device_export(self):
8585
response = self.client.post(
86-
reverse(f'admin:{self.app_label}_device_export'), {'file_format': '0'}
86+
reverse(f'admin:{self.app_label}_device_export'), {'format': '0'}
8787
)
8888
self.assertNotContains(response, 'error')
8989
self.assertIsNotNone(response.get('Content-Disposition'))
@@ -101,7 +101,7 @@ def test_device_import(self):
101101
csv = ContentFile(contents)
102102
response = self.client.post(
103103
reverse(f'admin:{self.app_label}_device_import'),
104-
{'input_format': '0', 'import_file': csv},
104+
{'format': '0', 'import_file': csv},
105105
)
106106
self.assertNotContains(response, 'errorlist')
107107
self.assertNotContains(response, 'Errors')
@@ -125,7 +125,7 @@ def test_device_import_empty_config(self):
125125
csv = ContentFile(contents)
126126
response = self.client.post(
127127
reverse(f'admin:{self.app_label}_device_import'),
128-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
128+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
129129
)
130130
self.assertFalse(response.context['result'].has_errors())
131131
self.assertIn('confirm_form', response.context)
@@ -166,7 +166,7 @@ def test_device_import_missing_config(self):
166166
csv = ContentFile(contents)
167167
response = self.client.post(
168168
reverse(f'admin:{self.app_label}_device_import'),
169-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
169+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
170170
)
171171
self.assertFalse(response.context['result'].has_errors())
172172
self.assertIn('confirm_form', response.context)
@@ -205,7 +205,7 @@ def test_device_import_config_not_templates(self):
205205
csv = ContentFile(contents)
206206
response = self.client.post(
207207
reverse(f'admin:{self.app_label}_device_import'),
208-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
208+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
209209
)
210210
self.assertFalse(response.context['result'].has_errors())
211211
self.assertIn('confirm_form', response.context)
@@ -629,7 +629,7 @@ def test_device_import_with_group_apply_templates(self):
629629
csv = ContentFile(contents)
630630
response = self.client.post(
631631
reverse(f'admin:{self.app_label}_device_import'),
632-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
632+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
633633
)
634634
self.assertFalse(response.context['result'].has_errors())
635635
self.assertIn('confirm_form', response.context)
@@ -675,7 +675,7 @@ def test_device_import_templates_and_config(self):
675675
csv = ContentFile(contents)
676676
response = self.client.post(
677677
reverse(f'admin:{self.app_label}_device_import'),
678-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
678+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
679679
)
680680
self.assertFalse(response.context['result'].has_errors())
681681
self.assertIn('confirm_form', response.context)

Diff for: openwisp_controller/geo/exportable.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ def dehydrate_coords(self, device):
5252
except (ObjectDoesNotExist, AttributeError):
5353
pass
5454

55-
def after_import_instance(self, instance, new, row_number=None, **kwargs):
56-
super().after_import_instance(instance, new, row_number, **kwargs)
55+
def after_init_instance(self, instance, new, row, **kwargs):
56+
super().after_init_instance(instance, new, row, **kwargs)
5757
if not hasattr(instance, 'devicelocation'):
5858
instance.devicelocation = DeviceLocation()
5959

@@ -68,9 +68,9 @@ def validate_instance(
6868
if device_location.location_id or device_location.floorplan_id:
6969
device_location.content_object_id = instance.id
7070

71-
def after_save_instance(self, instance, using_transactions, dry_run):
72-
super().after_save_instance(instance, using_transactions, dry_run)
73-
if not dry_run:
71+
def after_save_instance(self, instance, row, **kwargs):
72+
super().after_save_instance(instance, row, **kwargs)
73+
if not self._is_dry_run(kwargs):
7474
device_location = instance.devicelocation
7575
if device_location.location_id or device_location.floorplan_id:
7676
device_location.save()

Diff for: openwisp_controller/geo/tests/test_admin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def test_device_import_geo(self):
196196
csv = ContentFile(contents)
197197
response = self.client.post(
198198
reverse(f'admin:{self.app_label}_device_import'),
199-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
199+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
200200
)
201201
self.assertFalse(response.context['result'].has_errors())
202202
self.assertIn('confirm_form', response.context)
@@ -253,7 +253,7 @@ def test_device_import_geo_no_floorplan(self):
253253
csv = ContentFile(contents)
254254
response = self.client.post(
255255
reverse(f'admin:{self.app_label}_device_import'),
256-
{'input_format': '0', 'import_file': csv, 'file_name': 'test.csv'},
256+
{'format': '0', 'import_file': csv, 'file_name': 'test.csv'},
257257
)
258258
self.assertFalse(response.context['result'].has_errors())
259259
self.assertIn('confirm_form', response.context)

0 commit comments

Comments
 (0)