Skip to content

Commit 9431c65

Browse files
committed
Accept extra kwargs in render. Fix DataCenterAssetResource
1 parent 37f1906 commit 9431c65

File tree

3 files changed

+33
-29
lines changed

3 files changed

+33
-29
lines changed

src/ralph/data_importer/widgets.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def clean(self, value, *args, **kwargs):
4545
logger.warning("User not found: %s create a new.", value)
4646
return result
4747

48-
def render(self, value, obj=None):
48+
def render(self, value, obj=None, **kwargs):
4949
if value:
5050
return value.username
5151
return ""
@@ -60,7 +60,7 @@ def clean(self, value, *args, **kwargs):
6060
usernames = value.split(self.separator)
6161
return get_user_model().objects.filter(username__in=usernames)
6262

63-
def render(self, value, obj=None):
63+
def render(self, value, obj=None, **kwargs):
6464
return self.separator.join([obj.username for obj in value.all()])
6565

6666

@@ -88,19 +88,19 @@ def clean(self, value, *args, **kwargs):
8888
return self.related_model.objects.none()
8989
return self.related_model.objects.filter(pk__in=value.split(self.separator))
9090

91-
def render(self, value, obj=None):
91+
def render(self, value, obj=None, **kwargs):
9292
return self.separator.join(
9393
[str(getattr(obj, self.through_field).pk) for obj in value.all()]
9494
)
9595

9696

9797
class ExportForeignKeyStrWidget(widgets.Widget):
98-
def render(self, value, obj=None):
98+
def render(self, value, obj=None, **kwargs):
9999
return str(value)
100100

101101

102102
class ExportManyToManyStrWidget(widgets.ManyToManyWidget):
103-
def render(self, value, obj=None):
103+
def render(self, value, obj=None, **kwargs):
104104
return self.separator.join([str(obj) for obj in value.all()])
105105

106106

@@ -110,7 +110,7 @@ class ExportManyToManyStrTroughWidget(ManyToManyThroughWidget):
110110
object instead of pk.
111111
"""
112112

113-
def render(self, value, obj=None):
113+
def render(self, value, obj=None, **kwargs):
114114
return self.separator.join(
115115
[str(getattr(obj, self.through_field)) for obj in value.all()]
116116
)
@@ -206,7 +206,7 @@ def clean(self, value, *args, **kwargs):
206206
value = None
207207
return value
208208

209-
def render(self, value, obj=None):
209+
def render(self, value, obj=None, **kwargs):
210210
if value is None:
211211
return ""
212212
return "{}|{}".format(value.service.name, value.environment.name)
@@ -228,7 +228,7 @@ def clean(self, value, *args, **kwargs):
228228
value = None
229229
return value
230230

231-
def render(self, value, obj=None):
231+
def render(self, value, obj=None, **kwargs):
232232
if value is None:
233233
return ""
234234
return value.service.uid
@@ -250,22 +250,22 @@ class IPManagementWidget(widgets.ManyToManyWidget):
250250
def clean(self, value, *args, **kwargs):
251251
return value
252252

253-
def render(self, value, obj=None):
253+
def render(self, value, obj=None, **kwargs):
254254
return value or ""
255255

256256

257257
class BaseObjectServiceNamesM2MWidget(widgets.ManyToManyWidget):
258-
def render(self, value, obj=None):
258+
def render(self, value, obj=None, **kwargs):
259259
return self.separator.join(
260260
[bo.service.name if bo.service else "-" for bo in value.all()]
261261
)
262262

263263

264264
class PriceAmountWidget(widgets.Widget):
265-
def render(self, value, obj=None):
265+
def render(self, value, obj=None, **kwargs):
266266
return "{0:.2f}".format(value.amount)
267267

268268

269269
class PriceCurrencyWidget(widgets.Widget):
270-
def render(self, value, obj=None):
270+
def render(self, value, obj=None, **kwargs):
271271
return str(value.currency)

src/ralph/lib/permissions/tests/test_permissions_by_field.py

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,19 @@ def test_view_has_access_to_field(self):
7272

7373
def test_superuser_allowed_fields(self):
7474
"""Test allowed fields in permissions model."""
75-
allowed_fields = set(
76-
[
77-
"name",
78-
"type",
79-
"manufacturer",
80-
"category",
81-
"power_consumption",
82-
"height_of_device",
83-
"cores_count",
84-
"visualization_layout_front",
85-
"visualization_layout_back",
86-
"has_parent",
87-
"id",
88-
]
89-
)
75+
allowed_fields = {
76+
"name",
77+
"type",
78+
"manufacturer",
79+
"category",
80+
"power_consumption",
81+
"height_of_device",
82+
"cores_count",
83+
"visualization_layout_front",
84+
"visualization_layout_back",
85+
"has_parent",
86+
"id",
87+
}
9088
fields_list = self.asset_model.allowed_fields(self.super_user, action="change")
9189
self.assertEqual(allowed_fields, fields_list)
9290

src/ralph/reports/resources.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010

1111
class ChoiceWidget(Widget):
1212
def __init__(self, choice: Type[Choices]) -> None:
13+
super().__init__(coerce_to_string=True)
1314
self.choice = choice
1415

15-
def render(self, value, obj=None):
16+
def render(self, value, obj=None, **kwargs):
1617
if value:
1718
return self.choice.from_id(value).name
1819
else:
@@ -75,7 +76,12 @@ def get_queryset(self):
7576

7677
class Meta:
7778
model = DataCenterAsset
78-
fields = DATA_CENTER_ASSET_FIELDS
79+
fields = DATA_CENTER_ASSET_FIELDS + (
80+
"service_uid",
81+
"service",
82+
"environment",
83+
"configuration_path",
84+
)
7985
export_order = DATA_CENTER_ASSET_FIELDS
8086

8187
def _get_ip(self, dc_asset, is_management=True):

0 commit comments

Comments
 (0)