diff --git a/organize/browser/service.py b/organize/browser/service.py index 23e75f5..28fef2c 100644 --- a/organize/browser/service.py +++ b/organize/browser/service.py @@ -39,7 +39,10 @@ class RegistrationTemplateView(object): @Lazy def services(self): - return self.context.services + return self.getServices() + + def getServices(self): + return self.context.getServices().values() def getRegistrations(self): if not self.clientName: @@ -56,6 +59,9 @@ class RegistrationTemplateView(object): regs.template = self.context return regs.getRegistrations() + def getRegistratedServicesTokens(self): + return [r.service.token for r in self.getRegistrations()] + def update(self): form = self.request.form if not self.clientName: @@ -73,9 +79,9 @@ class RegistrationTemplateView(object): clientName = self.clientName = manager.addClient(client) regs = IClientRegistrations(client) regs.template = self.context - allServices = self.context.services.values() + allServices = self.getServices() oldServices = [r.service for r in regs.getRegistrations()] - newServices = [manager.services[token] + newServices = [manager.getServices()[token] for token in form.get('service_tokens', [])] regs.register(newServices) toDelete = [s for s in oldServices diff --git a/organize/service.py b/organize/service.py index 3667a3a..f30f8e7 100644 --- a/organize/service.py +++ b/organize/service.py @@ -55,6 +55,9 @@ class ServiceManager(object): if self.clientSchemasFactory is not None: self.clientSchemas = self.clientSchemasFactory() + def getServices(self): + return self.services + @Lazy def clients(self): return self.clientsFactory() @@ -87,6 +90,9 @@ class Service(object): @property def token(self): + return self.getToken() + + def getToken(self): return self.name @property @@ -137,7 +143,11 @@ class RegistrationTemplate(object): @property def services(self): - return self.manager.services + return self.getServices() + + def getServices(self): + # TODO: Restrict according to the objects selection criteria + return self.getManager().getServices() def getManager(self): return self.manager @@ -162,7 +172,7 @@ class ClientRegistrations(object): service.unregister(self.context) def getRegistrations(self): - for service in self.template.services: + for service in self.template.getServices(): for reg in service.registrations.values(): if self.context == reg.client: yield reg