Skip to content

Commit e481f76

Browse files
committed
Add support for multiple attribute in field_data #164
Signed-off-by: Thomas Druez <[email protected]>
1 parent 17106b0 commit e481f76

File tree

3 files changed

+42
-20
lines changed

3 files changed

+42
-20
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<dl>
2-
{% for field_name, value in tab_data.fields.items %}
2+
{% for field_name, field_data in tab_data.fields.items %}
33
<dt class="has-text-weight-semibold">
4-
{{ field_name }}
4+
{{ field_data.label }}
55
</dt>
66
<dd class="mb-4">
7-
<pre class="is-small">{{ value|default_if_none:''|urlize }}</pre>
7+
<pre class="is-small">{{ field_data.value|default:''|default_if_none:''|urlize }}</pre>
88
</dd>
99
{% endfor %}
1010
</dl>

scanpipe/templates/scanpipe/tabset/tab_content_resources.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<div class="content">
2-
<strong>Codebase resources</strong>
2+
<strong>{{ tab_data.fields.codebase_resources.label }}</strong>
33
<ul>
4-
{% for resource in tab_data.fields.codebase_resources.all %}
4+
{% for resource in tab_data.fields.codebase_resources.value.all %}
55
<li>
66
<a href="{{ resource.get_absolute_url }}">{{ resource }}</a>
77
</li>

scanpipe/views.py

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -170,40 +170,62 @@ def get_tabset_data(self):
170170
tab_data = {
171171
"icon_class": tab_definition.get("icon_class"),
172172
"template": tab_definition.get("template"),
173-
"fields": self.get_fields_with_values(tab_definition.get("fields"))
173+
"fields": self.get_fields_data(tab_definition.get("fields"))
174174
}
175175
tabset_data[label] = tab_data
176176

177177
return tabset_data
178178

179-
def get_fields_with_values(self, fields):
179+
def get_fields_data(self, fields):
180180
"""
181181
Returns the tab fields including their values for display.
182182
"""
183-
fields_with_values = {}
183+
fields_data = {}
184184

185-
for field_name in fields:
186-
fields_with_values[field_name] = self.get_field_data(field_name)
185+
for field_definition in fields:
186+
# Support for single "field_name" entry in fields list.
187+
if not isinstance(field_definition, dict):
188+
field_name = field_definition
189+
field_data = {'name': field_name}
190+
else:
191+
field_name = field_definition.get('name')
192+
field_data = field_definition[:]
193+
194+
if 'label' not in field_data:
195+
field_data['label'] = self.get_field_label(field_name)
196+
197+
field_data['value'] = self.get_field_value(field_name)
187198

188-
return fields_with_values
199+
fields_data[field_name] = field_data
189200

190-
def get_field_data(self, field_name):
201+
return fields_data
202+
203+
def get_field_value(self, field_name):
191204
"""
192205
Returns the formatted value for the given `field_name` on the current object.
193206
"""
194207
field_value = getattr(self.object, field_name, None)
208+
209+
# TODO: Implement proper render for those fields.
210+
if field_name in ['dependencies']:
211+
return field_value
212+
195213
if isinstance(field_value, list):
196214
field_value = "\n".join(field_value)
215+
197216
return field_value
198217

199-
# @staticmethod
200-
# def get_field_label(field_name):
201-
# return (
202-
# field_name
203-
# .replace("_", " ")
204-
# .capitalize()
205-
# .replace("url", "URL")
206-
# )
218+
@staticmethod
219+
def get_field_label(field_name):
220+
"""
221+
Returns a formatted label for display based on the `field_name`.
222+
"""
223+
return (
224+
field_name
225+
.replace("_", " ")
226+
.capitalize()
227+
.replace("url", "URL")
228+
)
207229

208230
def get_context_data(self, **kwargs):
209231
context = super().get_context_data(**kwargs)

0 commit comments

Comments
 (0)