Ejemplo n.º 1
0
 def __conf(self, name=None): # {{{
     " Return builder-conf, and proc-conf or named pub-conf. "
     conf = self.alias.proc_config
     build = conf.parent()
     assert build, (name, conf, build)
     if name:
         conf = api.fetch_config(IPublishConfig, name, parent=build)
     #logger.info(pformat(build.settings.__dict__))
     #logger.info(pformat(conf.settings.__dict__))
     assert conf, (name, conf)
     return build, conf
Ejemplo n.º 2
0
 def _new_or_update(self, user, name, schema=None, settings=None, **props):
     if not name and not props.get('title', None):
         raise KeyError, "Either a URI or Title parameter is required. "
     builder_config = props.get('builder_config', None)
     if builder_config:
         #parent = api.fetch_config(interface.IBuilderConfig, builder_config)
         builder_config = db.Key.from_path('BuilderConfiguration', builder_config)
         props.update(dict(parent=builder_config))
         del props['builder_config']
     conf = api.fetch_config(schema, name, parent=builder_config)
     if interface.IQuery.providedBy(conf):
         return conf
     if not conf:
         props.update(dict(owner=user))
         kind = components.lookup1(schema, interface.IModel)
         #kind = components.queryAdapter(schema, interface.IModel)
         assert kind, (schema, name, kind)
         conf = api.new_config(name, kind, **props)
         if settings: # XXX: accept pickle without validation?
             conf.settings = loads(settings)
         name = conf.key().name()
         logging.info('New config prepared %s', name)
     else:
         assert isinstance(conf, components.lookup1(schema,
             interface.IModel)), \
                     "Found configuration %r but is of wrong type. " % \
                     conf.key().name()
         if not name:
             raise ValueError, "Config for title %r already exists, "\
                     "use name %r. " % (props['title'], conf.key().name())
         logging.info('Updating existing config %s for %s', name, user.email)
         if settings:
             raise ValueError, \
                     "`setting` key not implemented for existing config. "
     data = dict([ (str(k),v) for k,v in getattr(self.request,
         self.request.method).items()])
     #logger.info(data)
     data.update(props)
     self._update(user, conf, schema, **data)
     return conf