Exemplo n.º 1
0
    def __call__(self):
        self.install_upgrade_profile()
        catalog = api.portal.get_tool('portal_catalog')

        dossiers = catalog(
            sortable_title='scaneingang',  # Exact match
            portal_type='opengever.private.dossier')

        for brain in dossiers:
            if not brain.UID:
                dossier = brain.getObject()
                notify(ObjectCreatedEvent(dossier))
                dossier.reindexObject()
Exemplo n.º 2
0
def addFormNorobotsField(self, id, **kwargs):
    obj = FormNorobotsField(id)
    notify(ObjectCreatedEvent(obj))
    self._setObject(id, obj)
    obj = self._getOb(id)
    obj.initializeArchetype(**kwargs)
    
    obj.setTitle(obj.translate(_(u'Are you a human ?')))
    obj.setDescription(obj.translate(_(u'In order to avoid spam, please answer the question below.')))
    
    
    notify(ObjectModifiedEvent(obj))
    return obj.getId()
Exemplo n.º 3
0
    def test_content_creation_modification(self):
        import datetime
        import zope.security
        from zope.publisher.browser import TestRequest
        from zope.pluggableauth.factories import Principal
        from zope.lifecycleevent import ObjectCreatedEvent

        with uvcsite.testing.AuthenticatedRequest('0101010001') as request:
            content = uvcsite.content.components.Content()
            self.assertEqual(content.principal, request.principal)

        grok.notify(ObjectCreatedEvent(content))
        self.assertTrue(content.modtime, datetime.datetime)
Exemplo n.º 4
0
    def _constructInstance(self, container, id, *args, **kw):
        """Build a bare instance of the appropriate type.

        Does not do any security checks.
        """
        # XXX: this method violates the rules for tools/utilities:
        # it depends on self.REQUEST
        id = str(id)

        if self.product:
            # oldstyle factory
            m = self._getFactoryMethod(container, check_security=0)

            if getattr(aq_base(m), 'isDocTemp', 0):
                kw['id'] = id
                newid = m(m.aq_parent, self.REQUEST, *args, **kw)
            else:
                newid = m(id, *args, **kw)
            # allow factory to munge ID
            newid = newid or id
            obj = container._getOb(newid)
            if hasattr(obj, '_setPortalTypeName'):
                obj._setPortalTypeName(self.getId())
            notify(ObjectCreatedEvent(obj))
            notify(ObjectAddedEvent(obj, container, newid))
            notifyContainerModified(container)

        else:
            # newstyle factory
            factory = getUtility(IFactory, self.factory)
            obj = factory(id, *args, **kw)
            if hasattr(obj, '_setPortalTypeName'):
                obj._setPortalTypeName(self.getId())
            notify(ObjectCreatedEvent(obj))
            rval = container._setObject(id, obj)
            newid = isinstance(rval, basestring) and rval or id
            obj = container._getOb(newid)

        return obj
Exemplo n.º 5
0
 def handle_save(self, action, data):
     report = domain.Report()
     session = Session()
     report.body = data["body"]
     report.start_date = data["start_date"]
     report.end_date = data["end_date"]
     report.note = data["note"]
     report.short_name = data["short_name"]
     report.owner_id = get_db_user_id() # !+GROUP_AS_OWNER
     report.language = get_default_language()
     report.created_date = datetime.datetime.now()
     if not hasattr(self.context, "group_id"):
         report.group_id = ISchedulingContext(self.context).group_id
     else:
         report.group_id = self.context.group_id
     session.add(report)
     session.flush()
     notify(ObjectCreatedEvent(report))
     if "sittings" in data.keys():
         try:
             ids = data["sittings"].split(",")
             for id_number in ids:
                 sit_id = int(id_number)
                 sitting = session.query(domain.Sitting).get(sit_id)
                 sr = domain.SittingReport()
                 sr.report = report
                 sr.sitting = sitting
                 session.add(sr)
                 notify(ObjectCreatedEvent(report))
         except:
             #if no sittings are present in report or some other error occurs
             pass
     session.flush()
     
     if ISitting.providedBy(self.context):
         back_link = "./schedule"
     else:
         back_link = "./"
     self.request.response.redirect(back_link)
Exemplo n.º 6
0
def create(container, portal_type, *args, **kwargs):
    """Creates an object in Bika LIMS

    This code uses most of the parts from the TypesTool
    see: `Products.CMFCore.TypesTool._constructInstance`

    :param container: container
    :type container: ATContentType/DexterityContentType/CatalogBrain
    :param portal_type: The portal type to create, e.g. "Client"
    :type portal_type: string
    :param title: The title for the new content object
    :type title: string
    :returns: The new created object
    """
    from bika.lims.utils import tmpID
    if kwargs.get("title") is None:
        kwargs["title"] = "New {}".format(portal_type)

    # generate a temporary ID
    tmp_id = tmpID()

    # get the fti
    types_tool = get_tool("portal_types")
    fti = types_tool.getTypeInfo(portal_type)

    if fti.product:
        obj = _createObjectByType(portal_type, container, tmp_id)
    else:
        # newstyle factory
        factory = getUtility(IFactory, fti.factory)
        obj = factory(tmp_id, *args, **kwargs)
        if hasattr(obj, '_setPortalTypeName'):
            obj._setPortalTypeName(fti.getId())
        notify(ObjectCreatedEvent(obj))
        # notifies ObjectWillBeAddedEvent, ObjectAddedEvent and
        # ContainerModifiedEvent
        container._setObject(tmp_id, obj)
        # we get the object here with the current object id, as it might be
        # renamed already by an event handler
        obj = container._getOb(obj.getId())

    # handle AT Content
    if is_at_content(obj):
        obj.processForm()

    # Edit after processForm; processForm does AT unmarkCreationFlag.
    obj.edit(**kwargs)

    # explicit notification
    modified(obj)
    return obj
Exemplo n.º 7
0
    def handle_save(self, action, data):
        report = domain.Report()
        session = Session()
        report.body_text = data["body_text"]
        report.start_date = data["start_date"]
        report.end_date = data["end_date"]
        report.note = data["note"]
        report.report_type = data["report_type"]
        report.short_name = data["report_type"]
        owner_id = get_db_user_id()
        '''!+TODO(Miano, 18/08/2010) The admin user is currently not a db user
            thus the line above returns None when the admin publishes a report.
            to go around this if it returns None, just query the db for users
            and set the owner id to be the first result'''
        if owner_id is not None:
            report.owner_id = owner_id
        else:
            query = session.query(domain.User)
            results = query.all()
            report.owner_id = results[0].user_id
        report.language = "en"
        report.created_date = datetime.datetime.now()
        report.group_id = self.context.group_id
        session.add(report)
        notify(ObjectCreatedEvent(report))
        # !+INVALIDATE(mr, sep-2010)
        container.invalidate_caches_for("Report", "add")
        if "sittings" in data.keys():
            try:
                ids = data["sittings"].split(",")
                for id_number in ids:
                    sit_id = int(id_number)
                    sitting = session.query(domain.GroupSitting).get(sit_id)
                    sr = domain.SittingReport()
                    sr.report = report
                    sr.sitting = sitting
                    session.add(sr)
                    # !+INVALIDATE(mr, sep-2010) via an event...
                    container.invalidate_caches_for("SittingReport", "add")
            except:
                #if no sittings are present in report or some other error occurs
                pass
        session.commit()

        if IGroupSitting.providedBy(self.context):
            back_link = "./schedule"
        elif ISchedulingContext.providedBy(self.context):
            back_link = "./"
        else:
            raise NotImplementedError
        self.request.response.redirect(back_link)
Exemplo n.º 8
0
 def __set__(self, instance, value):  # pylint: disable=too-many-branches
     if value is NOT_CHANGED:
         return
     registry = get_current_registry()
     if (value is not None) and (value is not TO_BE_DELETED):
         filename = None
         # file upload data converter returns a tuple containing
         # filename and buffered IO stream extracted from FieldStorage...
         if isinstance(value, tuple):
             filename, value = value
         # initialize file through factory
         if not IFile.providedBy(value):
             factory = self.__klass or FileFactory
             file = factory(value, **self.__args)
             registry.notify(ObjectCreatedEvent(file))
             if not file.get_size():
                 value.seek(0)  # because factory may read until end of file...
                 file.data = value
             value = file
         if filename is not None:
             info = IFileInfo(value)
             if info is not None:
                 info.filename = filename
     field = self.__field.bind(instance)
     field.validate(value)
     if field.readonly and instance.__dict__.has_key(self.__name):
         raise ValueError(self.__name, "Field is readonly")
     old_value = instance.__dict__.get(self.__name, _MARKER)
     if old_value != value:
         # check for previous value
         if (old_value is not _MARKER) and (old_value is not None):
             registry.notify(ObjectRemovedEvent(old_value))
         if value is TO_BE_DELETED:
             if self.__name in instance.__dict__:
                 del instance.__dict__[self.__name]
             attributes = get_instance_attributes(instance)
             if attributes and (self.__name in attributes):
                 attributes.remove(self.__name)
         else:
             # set name of new value
             name = '++attr++{0}'.format(self.__name)
             if value is not None:
                 locate(value, instance, name)
             instance.__dict__[self.__name] = value
             # store file attributes of instance
             if not IFileFieldContainer.providedBy(instance):
                 alsoProvides(instance, IFileFieldContainer)
             attributes = get_instance_attributes(instance)
             attributes.add(self.__name)
             registry.notify(ObjectAddedEvent(value, instance, name))
Exemplo n.º 9
0
 def create(self, data=None):
     """
     Alternative factory for an IRecord object, does not store object.
     If data is not None, copy fields from data.
     """
     if data is None:
         data = {}
     uid = data.get('record_uid', str(uuid.uuid4()))  # get or random uuid
     record = self.factory(context=self, uid=uid)
     if data and (hasattr(data, 'get') and hasattr(data, 'items')):
         self._before_populate(record, data)
         self._populate_record(record, data)
     notify(ObjectCreatedEvent(record))
     return record
Exemplo n.º 10
0
 def add(self, **data):
     gid = data['cn']
     groups = self.context['groups']
     group = Group(
         gid,
         groups,
         description=data['description'],
         uids=data['uids'],
         exists_in_ldap=False,
     )
     group.principal_id = self.request.principal.id  # XXX oh the hackery!!!
     notify(ObjectCreatedEvent(group))
     group.save()
     self.redirect(self.url(group))
Exemplo n.º 11
0
 def test_reference_non_archetypes_content(self):
     # create a archetype based content instance
     ob = makeContent(self.folder, portal_type='DDocument', id='mydocument')
     uc = getattr(self.portal, config.UID_CATALOG)
     uc.catalog_object(ob, '/'.join(ob.getPhysicalPath()))
     # create a non archetype based content
     dext = DexterityLike()
     dext.path = list(self.folder.getPhysicalPath())
     self.folder[dext.id] = dext
     notify(ObjectCreatedEvent(dext))  # it supposed to add uuid attribute
     uc.catalog_object(dext, '/'.join(dext.getPhysicalPath()))
     # create the relation between those
     ob.setRelated(dext)
     self.assertEqual(ob.getRelated()[0], dext)
Exemplo n.º 12
0
    def __call__(self, form):
        data, errors = form.extractData()
        if errors:
            form.submissionError = errors
            return FAILURE

        obj = self.factory()
        set_fields_data(form.fields, obj, data)
        notify(ObjectCreatedEvent(obj))
        form.context.add(obj)

        message(self.successMessage)
        url = str(IURL(obj, form.request))
        return SuccessMarker('Added', True, url=url)
Exemplo n.º 13
0
    def _create_task(self, task_payload):

        view = self.context.restrictedTraverse('++add++opengever.task.task')
        task_form = view.form_instance
        task_form.instance_schema = ITask

        task_form.updateFieldsFromSchemata()
        task_form.updateWidgets()

        task = task_form.create(task_payload)
        notify(ObjectCreatedEvent(task))
        task_form.add(task)

        return task
Exemplo n.º 14
0
 def register_action(self, action, data):
     """Register a new builder."""
     builder = getUtility(IBuilderSet).new(
         processor=data.get('processor'),
         url=data.get('url'),
         name=data.get('name'),
         title=data.get('title'),
         owner=data.get('owner'),
         active=data.get('active'),
         virtualized=data.get('virtualized'),
         vm_host=data.get('vm_host'),
     )
     notify(ObjectCreatedEvent(builder))
     self.next_url = canonical_url(builder)
Exemplo n.º 15
0
 def createAndAdd(self, data):
     obj = self.create(data)
     notify(ObjectCreatedEvent(obj))
     self.add(obj)
     uidutil = queryUtility(IIntIds)
     oneParent = None
     for (oid, oobj) in uidutil.items():
         if IInterfaceFolder.providedBy(oobj.object):
             oneParent = oobj.object
             break
     if oneParent is not None and obj.ifCount != None:
         for i in range(1, obj.ifCount + 1):
             dataVect = {}
             dataVect['ikName'] = u'%s-%02d' % (obj.ikName, i)
             dataVect['device'] = obj
             newObj = Interface(**dataVect)
             newObj.__post_init__()
             IBrwsOverview(newObj).setTitle(dataVect['ikName'])
             oneParent[newObj.objectID] = newObj
             if hasattr(newObj, "store_refs"):
                 newObj.store_refs(**dataVect)
             notify(ObjectCreatedEvent(newObj))
     return obj
Exemplo n.º 16
0
    def _add_element(self, element, event=True):
        element = aq_base(element)
        uid = self._generate_uid()
        IMutableUUID(element).set(uid)

        if event is True:
            notify(ObjectWillBeAddedEvent(element, self, uid))
        self._tree[uid] = element
        element.__parent__ = aq_base(self)

        if event is True:
            notify(ObjectCreatedEvent(element))
            notify(ObjectAddedEvent(element.__of__(self), self, uid))
            notify(ContainerModifiedEvent(self))
Exemplo n.º 17
0
    def test_single_value(self):
        from zope.event import notify
        from zope.interface import implements
        from zope.lifecycleevent import ObjectCreatedEvent
        from plone.uuid.interfaces import IUUID
        from plone.uuid.interfaces import IAttributeUUID
        from plone.app.widgets.at import RelatedItemsWidget

        class ExampleContent(object):
            implements(IAttributeUUID)

        obj1 = ExampleContent()
        notify(ObjectCreatedEvent(obj1))

        self.field.getName.return_value = 'fieldname'
        self.field.getAccessor.return_value = lambda: obj1
        self.field.multiValued = False
        self.context.portal_properties.site_properties\
            .getProperty.return_value = ['SomeType']

        widget = RelatedItemsWidget()

        self.assertEqual(
            {
                'name': 'fieldname',
                'value': '{}'.format(IUUID(obj1)),
                'pattern': 'relateditems',
                'pattern_options': {
                    'folderTypes': ['SomeType'],
                    'homeText':
                    u'Home',
                    'separator':
                    ';',
                    'orderable':
                    True,
                    'searchAllText':
                    u'Entire site',
                    'searchText':
                    u'Search',
                    'maximumSelectionSize':
                    1,
                    'vocabularyUrl':
                    '/@@getVocabulary?name='
                    'plone.app.vocabularies.Catalog'
                    '&field=fieldname',
                },
            },
            widget._base_args(self.context, self.field, self.request),
        )
    def test_add_content_to_container_and_move_on_added_event(self):
        sm = getGlobalSiteManager()

        def move_object(event):
            self.portal.manage_pasteObjects(
                cb_copy_data=self.folder.manage_cutObjects(
                    ids=['my-document']))
        sm.registerHandler(move_object, (IObjectAddedEvent,))

        obj = create(self.folder, 'Document', 'my-document')
        notify(ObjectCreatedEvent(obj))
        obj = add(self.folder, obj)
        self.assertEqual(aq_parent(obj), self.portal)

        sm.unregisterHandler(move_object, (IObjectAddedEvent,))
Exemplo n.º 19
0
def createContent(portal_type, **kw):
    fti = getUtility(IDexterityFTI, name=portal_type)
    content = createObject(fti.factory)

    # Note: The factory may have done this already, but we want to be sure
    # that the created type has the right portal type. It is possible
    # to re-define a type through the web that uses the factory from an
    # existing type, but wants a unique portal_type!
    content.portal_type = fti.getId()

    for (key, value) in kw.items():
        setattr(content, key, value)

    notify(ObjectCreatedEvent(content))
    return content
Exemplo n.º 20
0
def addATBlob(container, id, subtype='Blob', **kwargs):
    """ extended at-constructor copied from ClassGen.py """
    obj = ATBlob(id)
    if subtype is not None:
        markAs(obj, subtype)  # mark with interfaces needed for subtype
    if not hasCMF22:
        notify(ObjectCreatedEvent(obj))
    container._setObject(id, obj, suppress_events=hasCMF22)
    obj = container._getOb(id)
    if hasCMF22:
        obj.manage_afterAdd(obj, container)
    obj.initializeArchetype(**kwargs)
    if not hasCMF22:
        notify(ObjectModifiedEvent(obj))
    return obj.getId()
Exemplo n.º 21
0
    def addComment(self, comment):
        """Add a new comment. The parent id should have been set already. The
        comment id may be modified to find a free key. The id used will be
        returned.
        """

        # Make sure we don't have a wrapped object

        comment = aq_base(comment)

        id = long(time.time() * 1e6)
        while id in self._comments:
            id += 1

        comment.comment_id = id
        notify(ObjectWillBeAddedEvent(comment, self, id))
        self._comments[id] = comment

        comment.__parent__ = aq_base(self)

        # Record unique users who've commented (for logged in users only)
        commentator = comment.author_username
        if commentator:
            if not commentator in self._commentators:
                self._commentators[commentator] = 0
            self._commentators[commentator] += 1

        reply_to = comment.in_reply_to
        if not reply_to:
            # top level comments are in reply to the faux id 0
            comment.in_reply_to = reply_to = 0

        if not reply_to in self._children:
            self._children[reply_to] = LLSet()
        self._children[reply_to].insert(id)

        # Add the annotation if not already done
        annotions = IAnnotations(self.__parent__)
        if not ANNOTATION_KEY in annotions:
            annotions[ANNOTATION_KEY] = aq_base(self)

        # Notify that the object is added. The object must here be
        # acquisition wrapped or the indexing will fail.
        notify(ObjectCreatedEvent(comment))
        notify(ObjectAddedEvent(comment.__of__(self), self, id))
        notify(ContainerModifiedEvent(self))

        return id
Exemplo n.º 22
0
def create_empty_patient():
    """Create a new empty patient in the patients folder
    """
    tid = tmpID()
    portal = api.get_portal()
    container = portal.patients
    portal_type = "Patient"
    portal_types = api.get_tool("portal_types")
    fti = portal_types.getTypeInfo(portal_type)
    factory = getUtility(IFactory, fti.factory)
    obj = factory(tid)
    obj._setPortalTypeName(fti.getId())
    notify(ObjectCreatedEvent(obj))
    container._setObject(tid, obj)
    patient = container.get(obj.getId())
    return patient
Exemplo n.º 23
0
    def create_action(self, action, data):
        mirror = self.context.newMirror(
            owner=self.user,
            speed=data['speed'],
            country=data['country'],
            content=data['content'],
            display_name=data['display_name'],
            description=data['description'],
            whiteboard=data['whiteboard'],
            http_base_url=data['http_base_url'],
            ftp_base_url=data['ftp_base_url'],
            rsync_base_url=data['rsync_base_url'],
            official_candidate=data['official_candidate'])

        self.next_url = canonical_url(mirror)
        notify(ObjectCreatedEvent(mirror))
Exemplo n.º 24
0
def createLocalSystem(root_folder):
    dateNow = datetime.utcnow()
    newHost = createObject(u'org.ict_ok.components.host.host.Host')
    notify(ObjectCreatedEvent(newHost))
    root_folder.__setitem__(newHost.getObjectId(), newHost)
    dcore = IZopeDublinCore(newHost, None)
    dcore.creators = [u'first bootstrap']
    newHost.ikComment += u"bootstrap on %s" % (dateNow)
    newHost.__setattr__("ikName", u'Local System')
    newHost.__setattr__("hostname", u'Local System')
    dcore.title = u'Local System'
    newHost.__setattr__("ikDesc", u'this is the ict-ok.org management-system')
    newHost.__setattr__("manufacturer", u'see ict-ok.org')
    newHost.__setattr__("vendor", u'see ict-ok.org')
    newHost.__setattr__("genNagios", True)
    dcore.created = dateNow
Exemplo n.º 25
0
 def createInterfaceObject(self, parent, interfaceDict):
     """helper methode to create interface instance
     """
     dateNow = datetime.utcnow()
     newInterface = createObject(\
         u'org.ict_ok.components.interface.interface.Interface')
     newInterfaceId = u"If%s" % (interfaceDict['nbr'])
     parent.__setitem__(newInterface.getObjectId(), newInterface)
     newInterfaceDc = IZopeDublinCore(newInterface, None)
     newInterfaceDc.title = u"%s" % interfaceDict['name']
     newInterfaceDc.__setattr__("ikName", newInterfaceDc.title)
     newInterfaceDc.created = datetime.utcnow()
     newInterfaceDc.creators = [u'ikportscan']
     newInterface.ikComment += u"scanner: %s" % (dateNow)
     if interfaceDict.has_key('macAddress'):
         newInterface.__setattr__("mac",
                                  unicode(interfaceDict['macAddress']))
     if interfaceDict.has_key('ipAddressType') and \
        interfaceDict['ipAddressType'] == u'ipv4':
         if interfaceDict.has_key('ipAddress'):
             #newInterface.ipv4List.append(interfaceDict['ipAddress'])
             newInterface.ipv4List = unicode(interfaceDict['ipAddress'])
     ### build snmp objects
     #if interfaceDict.has_key("snmplist") and len(interfaceDict['snmplist'])>0:
     #for snmpDict in interfaceDict['snmplist']:
     ### oid-Test
     #newSnmp = zapi.createObject(None, 'ikom.snmp.Snmp')
     #notify(ObjectCreatedEvent(newSnmp))
     #newSnmp.__setattr__("description", snmpDict['name'])
     #newSnmp.__setattr__("checktype", "oid")
     #newSnmp.__setattr__("inputtype", "abs")
     #newSnmp.__setattr__("oid1", snmpDict['oid1'])
     #newSnmp.__setattr__("oid2", snmpDict['oid2'])
     #for i in ["cmd", "inptype", "inpUnit", "displayUnitNumerator", "displayUnitDenominator",
     #"checkMax", "checkMaxLevel", "checkMaxLevelUnitNumerator", "checkMaxLevelUnitDenominator"]:
     #newSnmp.__setattr__(i, snmpDict[i])
     #newSnmpDc = IZopeDublinCore(newSnmp, None)
     #newSnmpId=u"%s" % (snmpDict['name'])
     #newSnmpDc.title = u"%s" % (snmpDict['name'])
     #newSnmpDc.created = datetime.utcnow()
     #newSnmpDc.creators = [u'ikportscan']
     #newInterface.__setitem__(newSnmpId, newSnmp)
     ### build services
     for serviceDict in interfaceDict['services']:
         self.createServiceObject(newInterface, serviceDict)
     notify(ObjectCreatedEvent(newInterface))
Exemplo n.º 26
0
def getOrCreateType(portal, atobj, newid, newtypeid):
    """
    Gets the object specified by newid if it already exists under
    atobj or creates it there with the id given in newtypeid
    """
    try:
        newobj = getattr(atobj, newid)  #get it if it already exists
    except AttributeError:  #newobj doesn't already exist
        try:
            _ = atobj.invokeFactory(id=newid, type_name=newtypeid)
        except ValueError:
            _createObjectByType(newtypeid, atobj, newid)
        except Unauthorized:
            _createObjectByType(newtypeid, atobj, newid)
        newobj = getattr(atobj, newid)
        notify(ObjectCreatedEvent(newobj))
    return newobj
Exemplo n.º 27
0
 def createAndAdd(self, data):
     domain_model = removeSecurityProxy(self.domain_model)
     # create the object, inspect data for constructor args
     try:
         ob = generic.createInstance(domain_model, data)
     except TypeError:
         ob = domain_model()
     # apply any context values
     self.finishConstruction(ob)
     # apply extra form values
     form.applyChanges(ob, self.form_fields, data, self.adapters)
     # fire an object created event
     notify(ObjectCreatedEvent(ob))
     # signal to add form machinery to go to next url
     self._finished_add = True
     name = workspace.stringKey(ob)
     return self.context.get(name)
Exemplo n.º 28
0
    def test_UIDIndexer(self):
        uc = getattr(self.portal, config.UID_CATALOG)
        dext = DexterityLike()
        dext.path = list(self.folder.getPhysicalPath())
        self.folder[dext.id] = dext
        notify(ObjectCreatedEvent(dext))  # it supposed to add uuid attribute

        #catalog dext instance
        uc.catalog_object(dext, '/'.join(dext.getPhysicalPath()))

        #check lookup
        uuid = IUUID(dext, None)
        results = uc(UID=uuid)

        self.assertTrue(len(results) == 1)
        self.assertTrue(results[0].UID == uuid)
        self.assertTrue(results[0].Title == str(dext.Title()))
Exemplo n.º 29
0
    def new_job(self, **kw):
        # FIXME: do we really need to locate it?
        job = Job()
        job.id = str(uuid.uuid1())
        job.state = 'PENDING'
        job.created = DateTime()
        job.userid = api.user.get_current().getId()

        for name in IJob.names():
            if name in kw:
                setattr(job, name, kw[name])

        notify(ObjectCreatedEvent(job))
        cat = self._catalog()
        cat.jobs[job.id] = job
        notify(ObjectAddedEvent(job, cat.jobs, job.id))
        return job
Exemplo n.º 30
0
    def addObject(self, msgHeader, msgOldparent, msgNewparent, msgObj):
        """
        a new object should be created
        """
        print "addObject"
        print "msgHeader: %s" % msgHeader
        print "msgOldparent: %s" % msgOldparent
        print "msgNewparent: %s" % msgNewparent
        print "msgObj: %s" % msgObj
        if msgObj.has_key('myFactory'):
            newObj = zapi.createObject(msgObj['myFactory'])
            print "newObj: %s" % newObj
            print "msgObj['listAttr']: %s" % msgObj['listAttr']

            try:
                ISlave['objectID'].readonly = False
                for i in msgObj['listAttr']:
                    print "atr:  %s = %s" % (i, msgObj['listAttr'][i])
                    newObj.__setattr__(i, msgObj['listAttr'][i])
            finally:
                ISlave['objectID'].readonly = True
            newOid = msgObj['listAttr']['objectID']
            notify(ObjectCreatedEvent(newObj))
            #if (not msgOldparent) and (not msgNewparent):
                ##search from_oid -> ikslave
                #my_catalog = zapi.getUtility(ICatalog)
                #for result in my_catalog.searchResults(
                    #oid_index=msgHeader['from_oid']):
                    #print "result: %s = %s" % (result.ikName, result)
                    #if result.has_key(newOid):
                        #result.__delitem__(newOid)
                    #result[newOid] = newObj
            my_catalog = zapi.getUtility(ICatalog)
            newParentObj = None
            if not msgNewparent: # in root-folder of slave
                res = my_catalog.searchResults(oid_index=msgHeader['from_oid'])
                if len(res) > 0:
                    newParentObj = iter(res).next()
            else:
                res = my_catalog.searchResults(oid_index=msgNewparent)
                if len(res) > 0:
                    newParentObj = iter(res).next()
            if newParentObj and newParentObj.has_key(newOid):
                newParentObj.__delitem__(newOid)
            newParentObj[newOid] = newObj