Skip to content

Commit 8765bf3

Browse files
committed
some fixes
1 parent 3d815d3 commit 8765bf3

File tree

5 files changed

+17
-17
lines changed

5 files changed

+17
-17
lines changed

src/collective/volto/formsupport/adapters/post.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from zope.interface import implementer
1515
from zope.interface import Interface
1616

17+
import base64
1718
import math
1819
import os
1920

@@ -118,7 +119,7 @@ def validate_form(self):
118119
)
119120
)
120121

121-
if not self.form_data.get("data", []):
122+
if not self.form_data.get("data", []) and not self.form_data.get("attachments"):
122123
raise BadRequest(
123124
translate(
124125
_(
@@ -207,14 +208,21 @@ def validate_bcc(self):
207208
)
208209

209210
def validate_attachments(self):
211+
"""
212+
* validate attachments size (total size of all attachments must be less
213+
than FORM_ATTACHMENTS_LIMIT)
214+
"""
210215
attachments_limit = os.environ.get("FORM_ATTACHMENTS_LIMIT", "")
211216
if not attachments_limit:
212217
return
213218
attachments = self.form_data.get("attachments", {})
214219
attachments_len = 0
215-
for attachment in attachments.values():
216-
data = attachment.get("data", "")
217-
attachments_len += (len(data) * 3) / 4 - data.count("=", -2)
220+
for value in attachments.values():
221+
data = value.get("data", "")
222+
if value.get("encoding") == "base64":
223+
attachments_len += len(base64.b64decode(data))
224+
else:
225+
attachments_len += len(data)
218226
if attachments_len > float(attachments_limit) * pow(1024, 2):
219227
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
220228
i = int(math.floor(math.log(attachments_len, 1024)))
@@ -239,6 +247,7 @@ def validate_attachments(self):
239247
def filter_parameters(self):
240248
"""
241249
do not send attachments fields.
250+
Used for email message body, and xml attachment (?)
242251
"""
243252
result = []
244253

src/collective/volto/formsupport/browser/configure.zcml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,4 @@
4949
permission="cmf.ModifyPortalContent"
5050
/>
5151

52-
<browser:page
53-
name="email-confirm-view"
54-
for="*"
55-
class=".email_confirm_view.EmailConfirmView"
56-
template="templates/email_confirm_view.pt"
57-
permission="zope2.View"
58-
layer="collective.volto.formsupport.interfaces.ICollectiveVoltoFormsupportLayer"
59-
/>
60-
6152
</configure>

src/collective/volto/formsupport/restapi/services/form_data/csv.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,10 @@ def get_data(self):
126126
if k not in self.form_fields_order and label not in legacy_columns:
127127
legacy_columns.append(label)
128128

129-
data[label] = json_compatible(value)
129+
if isinstance(value, NamedBlobFile):
130+
data[label] = value.filename
131+
else:
132+
data[label] = json_compatible(value)
130133

131134
for k in fixed_columns:
132135
# add fixed columns values

src/collective/volto/formsupport/restapi/services/submit_form/post.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import logging
1010
import os
1111
import re
12-
import base64
1312

1413
try:
1514
from plone.base.interfaces.controlpanel import IMailSchema
@@ -389,7 +388,6 @@ def attach_xml(self, msg):
389388

390389
def store_data(self):
391390
store = getMultiAdapter((self.context, self.request), IFormDataStore)
392-
import pdb;pdb.set_trace()
393391
data = self.form_data_adapter.filter_parameters()
394392
if self.form_data.get("attachments"):
395393
data += [

src/collective/volto/formsupport/scripts/cleansing.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
help="--dryrun (default) simulate, --no-dryrun actually save the changes",
2424
)
2525
def main(dryrun):
26-
# import pdb;pdb.set_trace()
2726
if dryrun:
2827
print("CHECK ONLY")
2928
catalog = api.portal.get_tool("portal_catalog")

0 commit comments

Comments
 (0)