Skip to content

Commit a2b4170

Browse files
committed
refactoring monkeypatch formsupport
1 parent 4b5598c commit a2b4170

File tree

2 files changed

+32
-58
lines changed

2 files changed

+32
-58
lines changed

CHANGES.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ Changelog
44
5.0.19 (unreleased)
55
-------------------
66

7-
- Nothing changed yet.
7+
- Refactoring patch per waiting list
8+
[mamico]
89

910

1011
5.0.18 (2025-10-07)

src/design/plone/policy/patches/collective_volto_formsupport.py

Lines changed: 30 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -38,68 +38,41 @@
3838
SKIP_ATTRS = ["block_id", "fields_labels", "fields_order"]
3939

4040

41-
def get_data(self):
42-
store = getMultiAdapter((self.context, self.request), IFormDataStore)
43-
sbuf = StringIO()
44-
fixed_columns = ["date"]
45-
columns = []
46-
# start patch
47-
custom_colums = []
48-
if self.form_block.get("limit", None) is not None:
49-
limit = int(self.form_block["limit"])
50-
if limit > -1:
51-
custom_colums.append("waiting_list")
52-
# end patch
53-
54-
rows = []
55-
# start patch
56-
for index, item in enumerate(reversed(store.search())):
57-
# end patch
58-
data = {}
59-
fields_labels = item.attrs.get("fields_labels", {})
60-
for k in self.get_ordered_keys(item):
61-
if k in SKIP_ATTRS:
62-
continue
63-
value = item.attrs.get(k, None)
64-
label = fields_labels.get(k, k)
65-
if label not in columns and label not in fixed_columns:
66-
columns.append(label)
67-
data[label] = json_compatible(value)
68-
for k in fixed_columns:
69-
# add fixed columns values
70-
value = item.attrs.get(k, None)
71-
data[k] = json_compatible(value)
72-
73-
# start patch
74-
if "waiting_list" in custom_colums:
75-
data.update(
76-
{
77-
"waiting_list": (
78-
translate(_("yes_label", default="Yes"))
79-
if not (index < limit)
80-
else translate(_("no_label", default="No"))
81-
)
82-
}
83-
)
84-
# end patch
85-
86-
rows.append(data)
87-
columns.extend(fixed_columns)
88-
columns.extend(custom_colums)
89-
writer = csv.DictWriter(sbuf, fieldnames=columns, quoting=csv.QUOTE_ALL)
90-
writer.writeheader()
91-
for row in rows:
92-
writer.writerow(row)
93-
res = sbuf.getvalue()
94-
sbuf.close()
95-
return res
41+
def wrapper_get_data(orig):
42+
def get_data(self):
43+
res = orig(self)
44+
has_waiting_list = False
45+
if self.form_block.get("limit") is not None:
46+
limit = int(self.form_block["limit"])
47+
if limit > -1:
48+
has_waiting_list = True
49+
if has_waiting_list:
50+
reader = csv.DictReader(StringIO(res))
51+
columns = reader.fieldnames + ["waiting_list"]
52+
sbuf = StringIO()
53+
writer = csv.DictWriter(sbuf, fieldnames=columns, quoting=csv.QUOTE_ALL)
54+
writer.writeheader()
55+
for idx, row in enumerate(reader):
56+
if idx >= limit:
57+
row["waiting_list"] = translate(_("yes_label", default="Yes"))
58+
else:
59+
row["waiting_list"] = translate(_("no_label", default="No"))
60+
writer.writerow(row)
61+
res = sbuf.getvalue()
62+
sbuf.close()
63+
return res
64+
else:
65+
return res
66+
67+
return get_data
9668

9769

9870
def patch_FormDataExportGet_get_data():
9971
logger.info(
100-
"Patch get_data methos of class FormDataExporterGet from collective.volto.formsupport" # noqa
72+
"Patch collective.volto.formsupport.restapi.services.form_data.csv.FormDataExportGet.get_data "
73+
"addding waiting_list feature"
10174
)
102-
FormDataExportGet.get_data = get_data
75+
FormDataExportGet.get_data = wrapper_get_data(FormDataExportGet.get_data)
10376

10477

10578
def reply(self):

0 commit comments

Comments
 (0)