-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for limit submit and unique field in store data option #58
Changes from 11 commits
10e3e8e
cdbdd6c
5142d34
46edfd3
6f6f69e
6f718de
ce50e8a
7ef43e3
98d904e
412ae3c
8165fea
3872934
524aeba
a697b20
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -85,7 +85,7 @@ def add(self, data): | |
record = Record() | ||
fields_labels = {} | ||
fields_order = [] | ||
for field_data in data: | ||
for field_data in data["form_data"]: | ||
field_id = field_data.get("field_id", "") | ||
value = field_data.get("value", "") | ||
if field_id in fields: | ||
|
@@ -96,12 +96,32 @@ def add(self, data): | |
record.attrs["fields_order"] = fields_order | ||
record.attrs["date"] = datetime.now() | ||
record.attrs["block_id"] = self.block_id | ||
|
||
keys = [ | ||
(x["field_id"], x["label"]) for x in form_fields if x.get("unique", False) | ||
] | ||
if keys: | ||
saved_data = self.soup.data.values() | ||
for saved_record in saved_data: | ||
unique = False | ||
for key in keys: | ||
if ( | ||
record.attrs.storage[key[0]] | ||
!= saved_record.attrs.storage[key[0]] | ||
): | ||
unique = True | ||
break | ||
|
||
if not unique: | ||
raise ValueError(f" {', '.join([x[1] for x in keys])}") | ||
|
||
return self.soup.add(record) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dunque, se capisco bene, guardi i campi che arrivano nel form e cerchi nei dati salvati finchè non vedi che c'è un unicità. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. esatto, avrei voluto usare modi più veloci, ma dato che l'unicità dei campi può cambiare tramite il form va tutto fatto al volo |
||
|
||
def length(self): | ||
return len([x for x in self.soup.data.values()]) | ||
|
||
def search(self, query=None): | ||
records = [] | ||
mamico marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if not query: | ||
records = sorted( | ||
self.soup.data.values(), | ||
|
@@ -110,6 +130,13 @@ def search(self, query=None): | |
) | ||
return records | ||
|
||
def count(self, query=None): | ||
records = [] | ||
if not query: | ||
records = self.soup.data.values() | ||
|
||
return len(records) | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok, questo ti ritorna il numero di entry. non capisco come lo colleghi al form... mi pare che così cerchi in tutto il soup There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. onestamente avevo anche io quel dubbio, ma mi sono basato sulla search per farlo, e la search funziona There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @eikichi18 IMHO this is a bug. Try adding 2 forms, each with limit 2, add one record to each, try adding a second record. Does this work? |
||
def delete(self, id): | ||
record = self.soup.get(id) | ||
del self.soup[record] | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,7 @@ | |
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: PACKAGE VERSION\n" | ||
"POT-Creation-Date: 2024-06-07 00:42+0000\n" | ||
"POT-Creation-Date: 2024-06-25 10:15+0000\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
|
@@ -21,6 +21,10 @@ msgstr "" | |
msgid "Email confirmation code" | ||
msgstr "" | ||
|
||
#: ../browser/send_mail_template_table.pt:18 | ||
msgid "Field" | ||
msgstr "" | ||
|
||
#: ../captcha/recaptcha.py:12 | ||
msgid "Google ReCaptcha" | ||
msgstr "" | ||
|
@@ -55,6 +59,10 @@ msgstr "" | |
msgid "OTP is wrong" | ||
msgstr "" | ||
|
||
#: ../browser/templates/email_confirm_view.pt:17 | ||
msgid "Simple Transactional Email" | ||
msgstr "" | ||
|
||
#: ../captcha/hcaptcha.py:56 | ||
#: ../captcha/norobots.py:65 | ||
#: ../captcha/recaptcha.py:54 | ||
|
@@ -85,6 +93,10 @@ msgstr "" | |
msgid "Uninstalls the collective.volto.formsupport add-on." | ||
msgstr "" | ||
|
||
#: ../browser/send_mail_template_table.pt:23 | ||
msgid "Value" | ||
msgstr "" | ||
|
||
#: ../configure.zcml:34 | ||
msgid "Volto: Form support" | ||
msgstr "" | ||
|
@@ -98,17 +110,17 @@ msgid "Your code to validate the email address:" | |
msgstr "" | ||
|
||
#. Default: "Attachments too big. You uploaded ${uploaded_str}, but limit is ${max} MB. Try to compress files." | ||
#: ../restapi/services/submit_form/post.py:215 | ||
#: ../restapi/services/submit_form/post.py:234 | ||
msgid "attachments_too_big" | ||
msgstr "" | ||
|
||
#. Default: "Block with @type \"form\" and id \"$block\" not found in this context: $context" | ||
#: ../restapi/services/submit_form/post.py:130 | ||
#: ../restapi/services/submit_form/post.py:149 | ||
msgid "block_form_not_found_label" | ||
msgstr "" | ||
|
||
#. Default: "Empty form data." | ||
#: ../restapi/services/submit_form/post.py:156 | ||
#: ../restapi/services/submit_form/post.py:175 | ||
msgid "empty_form_data" | ||
msgstr "" | ||
|
||
|
@@ -118,22 +130,27 @@ msgid "honeypot_error" | |
msgstr "" | ||
|
||
#. Default: "Unable to send confirm email. Please retry later or contact site administrator." | ||
#: ../restapi/services/submit_form/post.py:76 | ||
#: ../restapi/services/submit_form/post.py:82 | ||
msgid "mail_send_exception" | ||
msgstr "" | ||
|
||
#. Default: "You need to set at least one form action between \"send\" and \"store\"." | ||
#: ../restapi/services/submit_form/post.py:145 | ||
#: ../restapi/services/submit_form/post.py:164 | ||
msgid "missing_action" | ||
msgstr "" | ||
|
||
#. Default: "Missing block_id" | ||
#: ../restapi/services/submit_form/post.py:123 | ||
#: ../restapi/services/submit_form/post.py:142 | ||
msgid "missing_blockid_label" | ||
msgstr "" | ||
|
||
#. Default: "A new form has been submitted from <a href=\"${url}\">${url}</a>" | ||
#: ../browser/send_mail_template.pt:22 | ||
#. Default: "Unable to save data. Value not unique: '${fields}'" | ||
#: ../restapi/services/submit_form/post.py:96 | ||
msgid "save_data_exception" | ||
msgstr "" | ||
|
||
#. Default: "A new form has been submitted from <a href=\"${DYNAMIC_CONTENT}\">${url}</a>" | ||
#: ../browser/send_mail_template.pt:24 | ||
msgid "send_mail_text" | ||
msgstr "" | ||
|
||
|
@@ -143,15 +160,15 @@ msgid "send_mail_text_table" | |
msgstr "" | ||
|
||
#. Default: "Missing required field: subject or from." | ||
#: ../restapi/services/submit_form/post.py:322 | ||
#: ../restapi/services/submit_form/post.py:341 | ||
msgid "send_required_field_missing" | ||
msgstr "" | ||
|
||
#. Default: "Email not valid in \"${field}\" field." | ||
#: ../restapi/services/submit_form/post.py:187 | ||
#: ../restapi/services/submit_form/post.py:206 | ||
msgid "wrong_email" | ||
msgstr "" | ||
|
||
#: ../restapi/services/submit_form/post.py:246 | ||
#: ../restapi/services/submit_form/post.py:265 | ||
msgid "{email}'s OTP is wrong" | ||
msgstr "" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: PACKAGE VERSION\n" | ||
"POT-Creation-Date: 2024-06-07 00:42+0000\n" | ||
"POT-Creation-Date: 2024-06-25 10:15+0000\n" | ||
"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" | ||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
"Language-Team: LANGUAGE <[email protected]>\n" | ||
|
@@ -18,6 +18,10 @@ msgstr "" | |
msgid "Email confirmation code" | ||
msgstr "" | ||
|
||
#: ../browser/send_mail_template_table.pt:18 | ||
msgid "Field" | ||
msgstr "" | ||
|
||
#: ../captcha/recaptcha.py:12 | ||
msgid "Google ReCaptcha" | ||
msgstr "" | ||
|
@@ -52,6 +56,10 @@ msgstr "" | |
msgid "OTP is wrong" | ||
msgstr "" | ||
|
||
#: ../browser/templates/email_confirm_view.pt:17 | ||
msgid "Simple Transactional Email" | ||
msgstr "" | ||
|
||
#: ../captcha/hcaptcha.py:56 | ||
#: ../captcha/norobots.py:65 | ||
#: ../captcha/recaptcha.py:54 | ||
|
@@ -82,6 +90,10 @@ msgstr "" | |
msgid "Uninstalls the collective.volto.formsupport add-on." | ||
msgstr "" | ||
|
||
#: ../browser/send_mail_template_table.pt:23 | ||
msgid "Value" | ||
msgstr "" | ||
|
||
#: ../configure.zcml:34 | ||
msgid "Volto: Form support" | ||
msgstr "" | ||
|
@@ -95,17 +107,17 @@ msgid "Your code to validate the email address:" | |
msgstr "" | ||
|
||
#. Default: "Attachments too big. You uploaded ${uploaded_str}, but limit is ${max} MB. Try to compress files." | ||
#: ../restapi/services/submit_form/post.py:215 | ||
#: ../restapi/services/submit_form/post.py:234 | ||
msgid "attachments_too_big" | ||
msgstr "Anhang ist zu groß (${uploaded_str}). Die Größe darf ${max} MB nicht überschreiten. Versuchen Sie Dateien zu komprimieren." | ||
|
||
#. Default: "Block with @type \"form\" and id \"$block\" not found in this context: $context" | ||
#: ../restapi/services/submit_form/post.py:130 | ||
#: ../restapi/services/submit_form/post.py:149 | ||
msgid "block_form_not_found_label" | ||
msgstr "Kein Formular-Block mit der ID \"$block\" in diesem Kontext gefunden: $context" | ||
|
||
#. Default: "Empty form data." | ||
#: ../restapi/services/submit_form/post.py:156 | ||
#: ../restapi/services/submit_form/post.py:175 | ||
msgid "empty_form_data" | ||
msgstr "Leere Formulardaten." | ||
|
||
|
@@ -114,23 +126,30 @@ msgstr "Leere Formulardaten." | |
msgid "honeypot_error" | ||
msgstr "Formular konnte nicht abgeschickt werden." | ||
|
||
#. Default: "Unable to send confirm email. Please retry later or contact site administator." | ||
#: ../restapi/services/submit_form/post.py:76 | ||
#. Default: "Unable to send confirm email. Please retry later or contact site administrator." | ||
#: ../restapi/services/submit_form/post.py:82 | ||
#, fuzzy | ||
msgid "mail_send_exception" | ||
msgstr "Die Bestätigungsmail konnte nicht versandt werden. Bitte versuchen Sie es später erneut oder kontaktieren Sie die Seitenadministration." | ||
|
||
#. Default: "You need to set at least one form action between \"send\" and \"store\"." | ||
#: ../restapi/services/submit_form/post.py:145 | ||
#: ../restapi/services/submit_form/post.py:164 | ||
msgid "missing_action" | ||
msgstr "Es muss mindestens eine Formular-Aktion gesetzt werden (\"E-Mail an Empfänger senden\" und/oder \"Kompilierte Daten speichern\")." | ||
|
||
#. Default: "Missing block_id" | ||
#: ../restapi/services/submit_form/post.py:123 | ||
#: ../restapi/services/submit_form/post.py:142 | ||
msgid "missing_blockid_label" | ||
msgstr "Fehlende block_id" | ||
|
||
#. Default: "A new form has been submitted from <a href=\"${url}\">${url}</a>" | ||
#: ../browser/send_mail_template.pt:22 | ||
#. Default: "Unable to save data. Value not unique: '${fields}'" | ||
#: ../restapi/services/submit_form/post.py:96 | ||
msgid "save_data_exception" | ||
msgstr "" | ||
|
||
#. Default: "A new form has been submitted from <a href=\"${DYNAMIC_CONTENT}\">${url}</a>" | ||
#: ../browser/send_mail_template.pt:24 | ||
#, fuzzy | ||
msgid "send_mail_text" | ||
msgstr "Auf der Seite ${url} wurde ein neues Formular eingereicht:" | ||
|
||
|
@@ -140,15 +159,15 @@ msgid "send_mail_text_table" | |
msgstr "" | ||
|
||
#. Default: "Missing required field: subject or from." | ||
#: ../restapi/services/submit_form/post.py:322 | ||
#: ../restapi/services/submit_form/post.py:341 | ||
msgid "send_required_field_missing" | ||
msgstr "Erforderliches Feld fehlt: Betreff oder Absender" | ||
|
||
#. Default: "Email not valid in \"${field}\" field." | ||
#: ../restapi/services/submit_form/post.py:187 | ||
#: ../restapi/services/submit_form/post.py:206 | ||
msgid "wrong_email" | ||
msgstr "" | ||
|
||
#: ../restapi/services/submit_form/post.py:246 | ||
#: ../restapi/services/submit_form/post.py:265 | ||
msgid "{email}'s OTP is wrong" | ||
msgstr "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ma, c'era un bug?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no no, è solo perché ho aggiunto più campi al json con i dati