--- a/src/pyams_content/shared/form/manager.py Mon Oct 07 14:04:31 2019 +0200
+++ b/src/pyams_content/shared/form/manager.py Wed Oct 16 18:41:45 2019 +0200
@@ -14,6 +14,7 @@
from zope.component.interfaces import ISite
from zope.interface import implementer
from zope.lifecycleevent.interfaces import IObjectAddedEvent
+from zope.schema.fieldproperty import FieldProperty
from pyams_content.component.paragraph import IParagraphFactorySettings
from pyams_content.shared.common.interfaces import ISharedContentFactory
@@ -36,6 +37,46 @@
shared_content_type = FORM_CONTENT_TYPE
shared_content_menu = False
+ use_captcha = FieldProperty(IFormsManager['use_captcha'])
+ default_captcha_client_key = FieldProperty(IFormsManager['default_captcha_client_key'])
+ default_captcha_server_key = FieldProperty(IFormsManager['default_captcha_server_key'])
+ use_proxy = FieldProperty(IFormsManager['use_proxy'])
+ proxy_proto = FieldProperty(IFormsManager['proxy_proto'])
+ proxy_host = FieldProperty(IFormsManager['proxy_host'])
+ proxy_port = FieldProperty(IFormsManager['proxy_port'])
+ proxy_username = FieldProperty(IFormsManager['proxy_username'])
+ proxy_password = FieldProperty(IFormsManager['proxy_password'])
+ proxy_only_from = FieldProperty(IFormsManager['proxy_only_from'])
+
+ def get_captcha_settings(self):
+ result = {
+ 'use_captcha': False,
+ 'client_key': None,
+ 'server_key': None
+ }
+ if self.use_captcha:
+ result.update({
+ 'use_captcha': True,
+ 'client_key': self.default_captcha_client_key,
+ 'server_key': self.default_captcha_server_key
+ })
+ return result
+
+ def get_proxy_url(self, request):
+ if self.use_proxy:
+ # check selected domains names
+ if self.proxy_only_from:
+ domains = map(str.strip, self.proxy_only_from.split(','))
+ if request.host not in domains:
+ return None
+ return '{}://{}{}:{}/'.format(self.proxy_proto,
+ '{}{}{}@'.format(self.proxy_username,
+ ':' if self.proxy_password else '',
+ self.proxy_password or '')
+ if self.proxy_username else '',
+ self.proxy_host,
+ self.proxy_port)
+
@utility_config(provides=IFormsManagerFactory)
class FormsManagerFactory(object):