Check configuration relative to project data

Julien LepillerSun Dec 13 02:44:07+0100 2020

aa21446

Check configuration relative to project data

offlate/core/config.py

4343
        ConfigSpec.__init__(self, key, name, description, optional, link)
4444
        self.placeholder = placeholder
4545
46-
    def isConfigured(self, conf):
46+
    def isConfigured(self, conf, data):
4747
        return ConfigSpec.isConfigured(self, conf) and \
4848
                (self.optional or (conf[self.key] != None and conf[self.key] != ''))
4949

5858
        self.indexKey = indexKey
5959
        self.hasRequiredRow = hasRequiredRow
6060
61-
    def isConfigured(self, conf):
61+
    def isConfigured(self, conf, data):
6262
        if not ConfigSpec.isConfigured(self, conf):
6363
            return False
6464
6565
        subconf = conf[self.key]
6666
6767
        if self.hasRequiredRow:
68-
            if not self.hasRequiredRow(conf, subconf):
68+
            if not self.hasRequiredRow(data, subconf):
6969
                return False
7070
        
71-
        for spec in self.specifications:
72-
            if not spec.isConfigured(subconf):
73-
                return False
74-
7571
        return True

offlate/core/manager.py

175175
        self.projects = [x for x in self.projects if x['name'] != name]
176176
        return self.createProject(name, lang, system, info, callback)
177177
178-
    def isConfigured(self, system):
178+
    def isConfigured(self, system, data):
179179
        if not "Generic" in self.settings.conf:
180180
            self.settings.conf["Generic"] = {}
181181

185185
        settings = self.settings.conf[system['key']]
186186
        for s in self.settings.conf['Generic'].keys():
187187
            settings[s] = self.settings.conf['Generic'][s]
188-
        return Project.isConfigured(system['system'], settings)
188+
        return Project.isConfigured(system['system'], settings, data)
189189
190190
    def isNew(self):
191191
        if not 'Generic' in self.settings.conf:

offlate/systems/project.py

111111
        raise Exception("Unimplemented method in concrete class: reload")
112112
113113
    @staticmethod
114-
    def isConfigured(project_class, conf):
114+
    def isConfigured(project_class, conf, data):
115115
        """
116116
        :param dict conf: Offlate configuration
117117
        :returns: Whether the configuration is sufficient for this project (system)
118118
        :rtype: bool
119119
        """
120120
        for spec in project_class.getSystemConfigSpec():
121-
            if not spec.isConfigured(conf):
121+
            if not spec.isConfigured(conf, data):
122122
                return False
123123
        return True
124124

offlate/ui/manager.py

163163
        w.exec_()
164164
        if not w.wantNew():
165165
            return
166-
        res = self.manager.isConfigured(w.getProjectSystem())
166+
        res = self.manager.isConfigured(w.getProjectSystem(), w.getProjectInfo())
167167
        while not res:
168168
            if not self.configureSystem(w.getProjectSystem()):
169169
                return
170-
            res = self.manager.isConfigured(w.getProjectSystem())
170+
            res = self.manager.isConfigured(w.getProjectSystem(), w.getProjectInfo())
171171
        worker = NewRunnable(self, w.getProjectName(), w.getProjectLang(),
172172
                w.getProjectSystem(), w.getProjectInfo())
173173
        worker.signals.finished.connect(self.openProject)

182182
        w.exec_()
183183
        if not w.wantNew():
184184
            return
185-
        res = self.manager.isConfigured(w.getProjectSystem())
185+
        res = self.manager.isConfigured(w.getProjectSystem(), w.getProjectInfo())
186186
        while not res:
187187
            if not self.configureSystem(w.getProjectSystem()):
188188
                return
189-
            res = self.manager.isConfigured(w.getProjectSystem())
189+
            res = self.manager.isConfigured(w.getProjectSystem(), w.getProjectInfo())
190190
        worker = NewRunnable(self, w.getProjectName(), w.getProjectLang(),
191191
                w.getProjectSystem(), w.getProjectInfo())
192192
        worker.signals.finished.connect(self.openProject)