示例#1
0
 def create(self, data):
     """ will create the object """
     obj = self.factory(**data)
     self.newdata = data
     IBrwsOverview(obj).setTitle(data['ikName'])
     obj.__post_init__()
     return obj
示例#2
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 IPatchPortFolder.providedBy(oobj.object):
             oneParent = oobj.object
             break
     if oneParent is not None:
         for i in range(1, obj.portCount+1):
             dataVect = {}
             dataVect['ikName'] = u'%s-%02d' % (obj.ikName, i)
             dataVect['patchpanel'] = obj
             if obj.room is not None:
                 dataVect['room'] = obj.room
             newObj = PatchPort(**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
示例#3
0
 def handleCreate(self, action):
     """create was pressed"""
     data, errors = self.extractData()
     if errors:
         self.status = self.formErrorsMessage
         return
     objList = data['connectors']
     if len(objList) < 2:
         self.status = _('insufficient connectors')
         return
     else:
         uidutil = queryUtility(IIntIds)
         con1 = objList.pop(0)
         con1_id = uidutil.getId(con1)
         while len(objList) > 0:
             con2 = objList.pop(0)
             con2_id = uidutil.getId(con2)
             print "conn: %s - %s" % (con1.ikName, con2.ikName)
             dataVect = {}
             dataVect['ikName'] = u'%s -/- %s' % (con1.ikName, con2.ikName)
             dataVect['connectors'] = [con1, con2]
             dataVect['requirements'] = []
             newObj = PhysicalLink(**dataVect)
             newObj.__post_init__()
             IBrwsOverview(newObj).setTitle(dataVect['ikName'])
             self.context[newObj.objectID] = newObj
             if hasattr(newObj, "store_refs"):
                 newObj.store_refs(**dataVect)
             notify(ObjectCreatedEvent(newObj))
             con1 = con2
             con1_id = con2_id
         url = absoluteURL(self.context, self.request) + u'/wz_create.html'
         self.request.response.redirect(url)
示例#4
0
def getTitel(item, formatter):
    """
    Titel for Overview
    """
    try:
        return IBrwsOverview(item).getTitle()
    except TypeError:
        return str(item.__class__.__name__)
示例#5
0
def getTitle(item, formatter):
    """
    Titel for Overview
    """
    if type(item) is dict:
        item = item["obj"]
    try:
        return IBrwsOverview(item).getTitle()
    except TypeError:
        return str(item.__class__.__name__)
示例#6
0
 def create(self, data):
     """ will create the object """
     # arg1 must be title for schooltool requirement
     # this will be reused later by ikName=arg1
     titleArg = data.pop('ikName')
     obj = self.factory(titleArg, **data)
     self.newdata = data
     IBrwsOverview(obj).setTitle(titleArg)
     obj.__post_init__()
     return obj
示例#7
0
 def name(self):
     """See interfaces.IBreadcrumbInfo"""
     try:
         name = IBrwsOverview(self.context).getTitle()
     except TypeError:
         name = getattr(self.context, 'title', None)
     if name is None:
         name = getattr(self.context, '__name__', None)
     if name is None and IContainmentRoot.providedBy(self.context):
         name = 'top'
     return name
示例#8
0
 def create(self, data):
     """ will create the object """
     filename = unicode(self.widgets['data'].value.filename)
     data['ikName'] = filename
     data['filename'] = filename
     data['contentType'] = unicode(
         self.widgets['data'].value.headers['content-type'])
     obj = self.factory(**data)
     self.newdata = data
     IBrwsOverview(obj).setTitle(data['ikName'])
     obj.__post_init__()
     return obj
示例#9
0
    def importAllData(self, xml_str):
        """get data file for all objects"""
        from pprint import pprint
        print "#" * 80
        data_structure = loads(xml_str)
        print 'objects'
        pprint(data_structure['objects'])
        print 'conns'
        pprint(data_structure['conns'])
        print "#" * 80
        for obj in data_structure['objects']:
            print "Obj: ", obj['ikName']
            print "myFactory: ", obj['meta']['myFactory']
            o2 = zapi.createObject(obj['meta']['myFactory'], **obj)
            print o2
            o2.importAllData(obj)
            IBrwsOverview(o2).setTitle(obj['ikName'])
            o2.__post_init__()
            c2 = o2.getFirstContainer()
            print c2
            print "len1: ", len(c2)
            c2[o2.objectID] = o2
            print "len2: ", len(c2)
        #print data_structure
        print "conn"
        my_catalog = zapi.getUtility(ICatalog)
        for conn in data_structure['conns']:
            #(('obj1Id'. 'obj1AttrName'), ('obj2Id'. 'obj2AttrName'))
            ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName)) = conn
            print "()(): ", ((obj1Id, obj1AttrName), (obj2Id, obj2AttrName))
            res1 = my_catalog.searchResults(oid_index=obj1Id)
            res2 = my_catalog.searchResults(oid_index=obj2Id)
            if len(res1) > 0 and len(res2) > 0:
                obj1 = iter(res1).next()
                obj2 = iter(res2).next()
                print "obj1: ", obj1
                print "obj2: ", obj2
                attr1 = getattr(obj1, obj1AttrName, None)
                if attr1 is not None:
                    if type(attr1) is list:
                        attr1.append(obj2)
                    else:
                        attr1 = obj2
                    obj1._p_changed = 1
                    obj2._p_changed = 1
#            for relation in 
#            res = my_catalog.searchResults(oid_index=arg_oid)
#            if len(res) > 0:
#                return iter(res).next().getDcTitle()
#            
        return True
示例#10
0
 def createAndAdd(self, data):
     obj = self.create(data)
     notify(ObjectCreatedEvent(obj))
     self.add(obj)
     oneParent = None
     for object in objectsWithInterface(IInterfaceFolder):
         oneParent = 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
示例#11
0
 def getTitle(self):
     """this title will be displayed in the head of form"""
     return _(u"Delete this Outlet: '%s'?") % \
            IBrwsOverview(self.context).getTitle()
示例#12
0
    def _xlsSheet2folder_(self, request, values, folder):
        # dbg # print "_xlsSheet2folder_(folder=%s)" % folder
        fields = fieldsForFactory(folder.contentFactory, ['objectID'])
        allAttributes = {}
        for interface in implementedBy(folder.contentFactory):
            for i_attrName in interface:
                i_attr = interface[i_attrName]
                if IField.providedBy(i_attr):
                    allAttributes[i_attrName] = i_attr
        matrix = [[]]
        for row_idx, col_idx in sorted(values.keys()):
            v = values[(row_idx, col_idx)]
            if isinstance(v, unicode):
                v = u"%s" % v # v.encode(codepage, 'backslashreplace')
            else:
                v = `v`
            v = u'%s' % v.strip()
            last_row, last_col = len(matrix), len(matrix[-1])
            while last_row <= row_idx:
                matrix.extend([[]])
                last_row = len(matrix)
            while last_col < col_idx:
                matrix[-1].extend([''])
                last_col = len(matrix[-1])
            matrix[-1].extend([v])
        attrNameList = matrix[0]
        attrValMatrix = matrix[1:]
        for attrValVector in attrValMatrix:
            attrDict = {}
            for attrIndex, attrVal in enumerate(attrValVector):
                attrDict[attrNameList[attrIndex]] = attrVal
            # ---------------------------------------
#                    if attrDict.has_key('IntID'):
#                        attrDict.pop('IntID')
            if attrDict.has_key('objectID') and \
               attrDict['objectID'] in folder:
                attrObjectID = attrDict.pop('objectID')
                oldObj = folder[attrObjectID]
                # dbg # print "update old object: ", oldObj.ikName
                for attrName, newValString in attrDict.items():
                    attrField = allAttributes[attrName]
                    if IChoice.providedBy(attrField):
                        v_widget = getMultiAdapter(\
                                        (attrField,request),
                                        interfaces.IFieldWidget)
                        v_widget.context = oldObj
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if len(newValString) > 0:
                            try:
                                newVal = v_dataconverter.toFieldValue([newValString])
                            except LookupError:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            newVal = v_dataconverter.toFieldValue([])
                    else:
                        if attrName == "isTemplate":
                            v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                        attrField,request)
                        else:
                            v_widget = getMultiAdapter(\
                                            (attrField,request),
                                            interfaces.IFieldWidget)
                        v_widget.context = oldObj
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if ICollection.providedBy(attrField):
                            if len(newValString) > 0:
                                newVal = v_dataconverter.toFieldValue(newValString.split(';'))
                            else:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            try:
                                newVal = v_dataconverter.toFieldValue(newValString)
                            except LookupError:
                                newVal = getattr(oldObj, attrName)
                    if getattr(oldObj, attrName) != newVal:
                        # dbg # print "change Value  old:'%s'  new:'%s'" % \
                        # dbg #     (getattr(oldObj, attrName), newVal)
                        setattr(oldObj, attrName, newVal)
                        dcore = IWriteZopeDublinCore(oldObj)
                        dcore.modified = datetime.utcnow()
                        if attrName == "ikName":
                            IBrwsOverview(oldObj).setTitle(newVal)
            else:
                oldObj = None
                # new Object
#                        newObj = createObject(self.factoryId)
#                        newObj.__post_init__()
                # dbg # print "new object: ", attrDict['ikName']
                dataVect = {}
                for attrName, newValString in attrDict.items():
                    attrField = allAttributes[attrName]
                    if IChoice.providedBy(attrField):
                        v_widget = getMultiAdapter(\
                                        (attrField,request),
                                        interfaces.IFieldWidget)
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if len(newValString) > 0:
                            try:
                                newVal = v_dataconverter.toFieldValue([newValString])
                            except LookupError:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            newVal = v_dataconverter.toFieldValue([])
                    else:
                        if attrName == "isTemplate":
                            v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                        attrField,request)
                        else:
                            v_widget = getMultiAdapter(\
                                            (attrField,request),
                                            interfaces.IFieldWidget)
                        v_dataconverter = queryMultiAdapter(\
                                        (attrField, v_widget),
                                        interfaces.IDataConverter)
                        if ICollection.providedBy(attrField):
                            if len(newValString) > 0:
                                try:
                                    newVal = v_dataconverter.toFieldValue(newValString.split(';'))
                                except LookupError:
                                    newVal = v_dataconverter.toFieldValue([])
                            else:
                                newVal = v_dataconverter.toFieldValue([])
                        else:
                            try:
                                newVal = v_dataconverter.toFieldValue(newValString)
                            except LookupError:
                                newVal = None
                    dataVect[str(attrName)] = newVal
                    #setattr(newObj, attrName, newVal)
                #self.context.__setitem__(newObj.objectID, newObj)
                #print "dataVect: ", dataVect
                newObj = folder.contentFactory(**dataVect)
                # new Object, but already have an object id
                if attrDict.has_key('objectID'):
                    newObj.setObjectId(attrDict['objectID'])
                newObj.__post_init__()
                if oldObj is not None:
                    dcore = IWriteZopeDublinCore(oldObj)
                    dcore.modified = datetime.utcnow()
                IBrwsOverview(newObj).setTitle(dataVect['ikName'])
                folder[newObj.objectID] = newObj
                if hasattr(newObj, "store_refs"):
                    newObj.store_refs(**dataVect)
                notify(ObjectCreatedEvent(newObj))
示例#13
0
 def handleSubmit(self, action):
     """submit was pressed"""
     if 'xlsdata' in self.widgets:
         fields = self.allFields
         codepage = self.widgets['codepage'].value[0]
         fileWidget = self.widgets['xlsdata']
         fileUpload = fileWidget.extract()
         filename = datetime.now().strftime('in_%Y%m%d%H%M%S.xls')
         f_handle, f_name = tempfile.mkstemp(filename)
         outf = open(f_name, 'wb')
         outf.write(fileUpload.read())
         outf.close()
         parseRet = xl.parse_xls(f_name, codepage)
         os.remove(f_name)
         #
         allAttributes = {}
         for interface in implementedBy(self.factory):
             for i_attrName in interface:
                 i_attr = interface[i_attrName]
                 if IField.providedBy(i_attr):
                     allAttributes[i_attrName] = i_attr
         #
         for sheet_name, values in parseRet:
             matrix = [[]]
             for row_idx, col_idx in sorted(values.keys()):
                 v = values[(row_idx, col_idx)]
                 if isinstance(v, unicode):
                     v = u"%s" % v  # v.encode(codepage, 'backslashreplace')
                 else:
                     v = ` v `
                 v = u'%s' % v.strip()
                 last_row, last_col = len(matrix), len(matrix[-1])
                 while last_row <= row_idx:
                     matrix.extend([[]])
                     last_row = len(matrix)
                 while last_col < col_idx:
                     matrix[-1].extend([''])
                     last_col = len(matrix[-1])
                 matrix[-1].extend([v])
             attrNameList = matrix[0]
             attrValMatrix = matrix[1:]
             for attrValVector in attrValMatrix:
                 attrDict = {}
                 for attrIndex, attrVal in enumerate(attrValVector):
                     attrDict[attrNameList[attrIndex]] = attrVal
                 # ---------------------------------------
                 if attrDict.has_key('IntID'):
                     attrDict.pop('IntID')
                 if attrDict.has_key('objectID'):
                     attrObjectID = attrDict.pop('objectID')
                     oldObj = self.context[attrObjectID]
                     for attrName, newValString in attrDict.items():
                         #print u"ddd4-> %s" % (attrName)
                         attrField = allAttributes[attrName]
                         #print u"type(%s): %s" % (attrField, type(attrField))
                         #                            if attrName == "rooms":
                         if IChoice.providedBy(attrField):
                             v_widget = getMultiAdapter(\
                                             (attrField,self.request),
                                             interfaces.IFieldWidget)
                             v_widget.context = oldObj
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if len(newValString) > 0:
                                 newVal = v_dataconverter.toFieldValue(
                                     [newValString])
                             else:
                                 newVal = v_dataconverter.toFieldValue([])
                         else:
                             if attrName == "isTemplate":
                                 v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                             attrField,self.request)
                             else:
                                 v_widget = getMultiAdapter(\
                                                 (attrField,self.request),
                                                 interfaces.IFieldWidget)
                             v_widget.context = oldObj
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if ICollection.providedBy(attrField):
                                 if len(newValString) > 0:
                                     newVal = v_dataconverter.toFieldValue(
                                         newValString.split(';'))
                                 else:
                                     newVal = v_dataconverter.toFieldValue(
                                         [])
                             else:
                                 newVal = v_dataconverter.toFieldValue(
                                     newValString)
                         if getattr(oldObj, attrName) != newVal:
                             setattr(oldObj, attrName, newVal)
                             dcore = IWriteZopeDublinCore(oldObj)
                             dcore.modified = datetime.utcnow()
                             if attrName == "ikName":
                                 IBrwsOverview(oldObj).setTitle(newVal)
                 else:
                     oldObj = None
                     # new Object
                     #                        newObj = createObject(self.factoryId)
                     #                        newObj.__post_init__()
                     dataVect = {}
                     for attrName, newValString in attrDict.items():
                         attrField = allAttributes[attrName]
                         if IChoice.providedBy(attrField):
                             v_widget = getMultiAdapter(\
                                             (attrField,self.request),
                                             interfaces.IFieldWidget)
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if len(newValString) > 0:
                                 newVal = v_dataconverter.toFieldValue(
                                     [newValString])
                             else:
                                 newVal = v_dataconverter.toFieldValue([])
                         else:
                             if attrName == "isTemplate":
                                 v_widget = checkbox.SingleCheckBoxFieldWidget(\
                                             attrField,self.request)
                             else:
                                 v_widget = getMultiAdapter(\
                                                 (attrField,self.request),
                                                 interfaces.IFieldWidget)
                             v_dataconverter = queryMultiAdapter(\
                                             (attrField, v_widget),
                                             interfaces.IDataConverter)
                             if ICollection.providedBy(attrField):
                                 if len(newValString) > 0:
                                     newVal = v_dataconverter.toFieldValue(
                                         newValString.split(';'))
                                 else:
                                     newVal = v_dataconverter.toFieldValue(
                                         [])
                             else:
                                 newVal = v_dataconverter.toFieldValue(
                                     newValString)
                         dataVect[str(attrName)] = newVal
                         #setattr(newObj, attrName, newVal)
                     #self.context.__setitem__(newObj.objectID, newObj)
                     #print "dataVect: ", dataVect
                     newObj = self.factory(**dataVect)
                     newObj.__post_init__()
                     if oldObj is not None:
                         dcore = IWriteZopeDublinCore(oldObj)
                         dcore.modified = datetime.utcnow()
                     IBrwsOverview(newObj).setTitle(dataVect['ikName'])
                     self.context[newObj.objectID] = newObj
                     if hasattr(newObj, "store_refs"):
                         newObj.store_refs(**dataVect)
                     notify(ObjectCreatedEvent(newObj))
     url = absoluteURL(self.context, self.request)
     self.request.response.redirect(url)
示例#14
0
 def importReqSet(self, xmlElement, importOnNode=None):
     """import Requirement from xml data
     """
     print "importReqSet(%s)" % xmlElement
     print "tags: %s, text: %s" % (xmlElement.tag, xmlElement.text)
     utilCategories = getUtility(IAdmUtilCategories,
                                 name='AdmUtilCategories')
     reqTitle = xmlElement.find('Title')
     reqTitleText = None
     if reqTitle is not None:
         reqTitleText = unicode(reqTitle.text).strip().replace("\r",
                                                               "").replace(
                                                                   "\n", "")
     reqCategoriesList = xmlElement.findall('Categories/*')
     attrib = {}
     oldReqObject = None
     str_objectID = xmlElement.get('uid')
     if str_objectID is not None:
         attrib['objectID'] = unicode(str_objectID)
         my_catalog = zapi.getUtility(ICatalog)
         res = my_catalog.searchResults(oid_index=attrib['objectID'])
         if len(res) > 0:
             oldReqObject = iter(res).next()
             print "oldReqObject: ", oldReqObject
     str_ikAuthor = xmlElement.get('author')
     if str_ikAuthor is not None:
         attrib['ikAuthor'] = unicode(str_ikAuthor)
     str_copyright = xmlElement.get('copyright')
     if str_copyright is not None:
         attrib['copyright'] = unicode(str_copyright)
     str_version = xmlElement.get('version')
     if str_version is not None:
         attrib['version'] = unicode(str_version)
     str_validAsFirst = xmlElement.get('validAsFirst')
     if str_validAsFirst is not None:
         attrib['validAsFirst'] = bool(str_validAsFirst)
     str_resubmitDate = xmlElement.get('resubmitDate')
     if str_resubmitDate is not None:
         attrib['resubmitDate'] = \
             datetime.strptime(str_resubmitDate,
                               '%Y-%m-%d %H:%M:%S')
     attrib['categories'] = []
     if reqCategoriesList is not None:
         internalCategoriesDict = utilCategories.getNamedReqDict()
         for reqCategoryElement in reqCategoriesList:
             tmpCategoryName = reqCategoryElement.text
             if internalCategoriesDict.has_key(tmpCategoryName):
                 categoryObj = internalCategoriesDict[tmpCategoryName]
                 attrib['categories'].append(categoryObj)
     if oldReqObject is not None:
         if reqTitleText is not None and \
             not reqTitleText == oldReqObject.ikName:
             print "change1: ", (oldReqObject.ikName, reqTitleText)
             oldReqObject.ikName = reqTitleText
             IBrwsOverview(oldReqObject).setTitle(reqTitleText)
         attrObjectID = attrib.pop('objectID')
         for (name, value) in attrib.items():
             if not getattr(oldReqObject, name) == value:
                 print "change2: ", (oldReqObject, name, value)
                 setattr(oldReqObject, name, value)
     else:
         obj = Requirement(reqTitleText, **attrib)
         IBrwsOverview(obj).setTitle(reqTitleText)
         obj.__post_init__()
         importOnNode[obj.objectID] = obj
         obj.store_refs(**attrib)
         oldReqObject = obj
     children = xmlElement.findall('Req')
     for child in children:
         self.importReqSet(child, importOnNode=oldReqObject)