src/ztfy/utils/interfaces.py
branchZTK-1.1
changeset 277 35f11f1758e9
parent 233 6c087119379d
--- a/src/ztfy/utils/interfaces.py	Thu Jun 04 15:50:36 2020 +0200
+++ b/src/ztfy/utils/interfaces.py	Sat Jan 15 00:23:22 2022 +0100
@@ -23,7 +23,7 @@
 # import local interfaces
 
 # import Zope3 packages
-from zope.interface import Interface, Attribute
+from zope.interface import invariant, Interface, Invalid, Attribute
 from zope.schema import TextLine, Int, Password, Bool
 
 # import local packages
@@ -300,21 +300,30 @@
 class IZEOConnection(Interface):
     """ZEO connection settings interface"""
 
+    config_path = TextLine(title=_("ZODB configuration path"),
+                           description=_("Absolute path to ZODB configuration file"),
+                           required=False)
+
     server_name = TextLine(title=_("ZEO server name"),
                            description=_("Hostname of ZEO server"),
-                           required=True,
+                           required=False,
                            default=u'localhost')
 
     server_port = Int(title=_("ZEO server port"),
                       description=_("Port number of ZEO server"),
-                      required=True,
+                      required=False,
                       default=8100)
 
     storage = TextLine(title=_("ZEO server storage"),
                        description=_("Storage name on ZEO server"),
-                       required=True,
+                       required=False,
                        default=u'1')
 
+    @invariant
+    def check_configuration(self):
+        if not (self.config_path or self.server_name):
+            raise Invalid(_("You must define configuration path or hostname"))
+
     username = TextLine(title=_("ZEO user name"),
                         description=_("User name on ZEO server"),
                         required=False)