src/pyams_content/shared/form/manager.py
changeset 1370 87bcbf37ad6d
parent 1343 530cbb970243
child 1425 7d924651271c
--- 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):