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
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
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)
def getTitel(item, formatter): """ Titel for Overview """ try: return IBrwsOverview(item).getTitle() except TypeError: return str(item.__class__.__name__)
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__)
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
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
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
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
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
def getTitle(self): """this title will be displayed in the head of form""" return _(u"Delete this Outlet: '%s'?") % \ IBrwsOverview(self.context).getTitle()
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))
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)
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)