def createTestRelationship(): testEntity1 = createTestEntity() testEntity1.save() testEntity2 = createTestEntity() testEntity2.save() relationshipdata = { 'refEntity': testEntity1, 'relatedName': 'testPropertyModel', 'baseMin': 'testBaseMin', 'baseMax': 'testBaseMax', 'refMin': 'testRefMin', 'refMax': 'testRefMax', 'onRefDelete': 'testOnRefDelete', 'typeRelation': 'testTypeRelation', 'entity': testEntity2, 'isPrimary': True, 'isLookUpResult': True, 'isNullable': True, 'isRequired': True, 'isReadOnly': True, 'isEssential': True, 'isForeign': False, 'isSensitive' : False, 'crudType': 'testCrudType', 'dbName': 'testDbName' } testRelationShip = Relationship(**relationshipdata) testRelationShip.save() return testRelationShip
def createTestRelationship(): testEntity1 = createTestEntity() testEntity1.save() testEntity2 = createTestEntity() testEntity2.save() relationshipdata = { 'refEntity': testEntity1, 'relatedName': 'testPropertyModel', 'baseMin': 'testBaseMin', 'baseMax': 'testBaseMax', 'refMin': 'testRefMin', 'refMax': 'testRefMax', 'onRefDelete': 'testOnRefDelete', 'typeRelation': 'testTypeRelation', 'entity': testEntity2, 'isPrimary': True, 'isLookUpResult': True, 'isNullable': True, 'isRequired': True, 'isReadOnly': True, 'isEssential': True, 'isForeign': False, 'isSensitive' : False, 'crudType': 'testCrudType', 'dbName': 'testDbName', 'smUUID': 'f8735797cf1d8431d891c2d10f0a67be' } testRelationShip = Relationship(**relationshipdata) testRelationShip.save() return testRelationShip
def saveRelation( dProject, dEntity, dModel, pProperty, defValues, userProfile, prpName, seq ): refName = pProperty['refEntity'] if refName in ['self', "'self'"]: refName = dEntity.code pRefEntity = pEntities.get( refName , None ) if pRefEntity is None: if not 'notes' in pProperty: pProperty[ 'notes' ] = '' pProperty[ 'notes' ] += 'refEntity ( {0} ) not found;'.format( refName ) saveProperty( dEntity, pProperty, defValues, userProfile, prpName, seq ) return dRefEntity = pRefEntity['dataEntity'] try: dRelation = Relationship( code = prpName , entity = dEntity , refEntity = dRefEntity , smOwningTeam = userProfile.userTeam ) setDefaults2Obj( dRelation, pProperty, ['refEntity', 'code'] ) setDefaults2Obj( dRelation, defValues ) dRelation.save() transaction.commit() except IntegrityError: transaction.rollback() prpName = '{0}.{1}'.format( prpName.split('.')[0] , seq ) if not 'notes' in pProperty: pProperty[ 'notes' ] = '' pProperty[ 'notes' ] += 'duplicate field {0} rename to {1};'.format( prpName.split('.')[0], prpName ) saveRelation( dProject, dEntity, dModel, pProperty, defValues, userProfile, prpName, seq + 1 ) return except Exception as e: transaction.rollback() #log return
def saveRelation(dProject, dEntity, dModel, pProperty, defValues, userProfile, prpName, seq): refName = pProperty['refEntity'] if refName in ['self', "'self'"]: refName = dEntity.code pRefEntity = pEntities.get(refName , None) if pRefEntity is None: if not 'notes' in pProperty: pProperty[ 'notes' ] = '' pProperty[ 'notes' ] += 'refEntity ( {0} ) not found;'.format(refName) saveProperty(dEntity, pProperty, defValues, userProfile, prpName, seq) return dRefEntity = pRefEntity['dataEntity'] try: dRelation = Relationship( code=prpName , entity=dEntity , refEntity=dRefEntity , smOwningTeam=userProfile.userTeam ) setDefaults2Obj(dRelation, pProperty, ['refEntity', 'code']) setDefaults2Obj(dRelation, defValues) dRelation.save() transaction.commit() except IntegrityError: transaction.rollback() prpName = '{0}.{1}'.format(prpName.split('.')[0] , seq) if not 'notes' in pProperty: pProperty[ 'notes' ] = '' pProperty[ 'notes' ] += 'duplicate field {0} rename to {1};'.format(prpName.split('.')[0], prpName) saveRelation(dProject, dEntity, dModel, pProperty, defValues, userProfile, prpName, seq + 1) return except : transaction.rollback() # log return
def __write(self): # Logging info self.__logger.info("Ecriture dans la base de donnee...") # Los elementos superXXX son referencias de tipo caracter, fdsModel = ('code', 'category', 'modelPrefix',) fdsEntity = ('code',) # fdsProperty = ( 'code', 'alias', 'physicalName', 'foreignEntity' ) fdsProperty = ('code',) booProperty = ('isPrimary', 'isNullable', 'isRequired', 'isSensitive', 'isEssential',) fdsRelationship = ('code', 'baseMin', 'baseMax', 'refMin', 'refMax',) # need for setSecurityInfo data = {} # We populate the database if (self.__tree != None): # A file has been loaded xProjects = self.__tree.getiterator("domain") # ------------------------------------------------------------------------------ xModels = xProjects[0].getiterator("model") for xModel in xModels: dModel = Model() dModel.project = self.project modelUdps = [] for child in xModel: if child.tag in fdsModel: setattr(dModel, child.tag, child.text) elif child.tag == 'udps': for xUdp in child: modelUdps.append((xUdp.tag, xUdp.get('text'))) try: setSecurityInfo(dModel, data, self.userProfile, True ) dModel.save() except: self.__logger.info("Error dModel.save") return self.__logger.info("Model..." + dModel.code) # ------------------------------------------------------------------------------ xEntitys = xModel.getiterator("concept") for xEntity in xEntitys: dEntity = Entity() dEntity.model = dModel for child in xEntity: if (child.tag in fdsEntity): if (child.text is not None): setattr(dEntity, child.tag, child.text) elif (child.tag == 'physicalName'): setattr(dEntity, 'dbName' , child.text) try: setSecurityInfo(dEntity, data, self.userProfile, True ) dEntity.save() except: self.__logger.info("Error dEntity.save") return self.__logger.info("Entity..." + dEntity.code) # ------------------------------------------------------------------------------ xProperties = xEntity.getiterator("property") for xProperty in xProperties: dProperty = Property() dProperty.entity = dEntity for child in xProperty: if child.tag in fdsProperty: if (child.text is not None): setattr(dProperty, child.tag, child.text) elif child.tag in booProperty: bValue = toBoolean(child.text) setattr(dProperty, child.tag, bValue) try: setSecurityInfo(dProperty, data, self.userProfile, True ) dProperty.save() except: self.__logger.info("Error prpDom.save") return # Relationship ------------------------------------------------------------------- xForeigns = xEntity.getiterator("foreign") for xForeign in xForeigns: dForeign = Relationship() dForeign.entity = dEntity dForeign.refEntity = dEntity for child in xForeign: if child.tag in fdsRelationship: setattr(dForeign, child.tag, child.text) elif (child.tag == 'baseConcept'): setattr(dForeign, 'dbName' , child.text) elif (child.tag == 'alias'): setattr(dForeign, 'relatedName' , child.text) elif child.tag in booProperty: bValue = toBoolean(child.text) setattr(dForeign, child.tag, bValue) try: setSecurityInfo(dForeign, data, self.userProfile, True ) dForeign.save() except Exception, e: self.__logger.info("Error dForeign.save" + str(e)) return