def saveProperty( dEntity, pProperty, defValues, userProfile, prpName, seq ): try: dProperty = dEntity.property_set.create( code = prpName, smOwningTeam = userProfile.userTeam ) setDefaults2Obj( dProperty, pProperty, ['code'] ) setDefaults2Obj( dProperty, defValues ) dProperty.save() transaction.commit() except Exception as e: transaction.rollback() prpName = '{0}.{1}'.format( prpName.split('.')[0] , seq ) saveProperty( dEntity, pProperty, defValues, userProfile, prpName, seq +1 ) 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 Exception as e: transaction.rollback() #log return