def Run(self): with self.protocol.lockCmd: if not self.Authorized(): self.SendUnauthorizedResp() return CBaseCommand.Run(self) with SBDB.session_scope() as session : apartment_id=self.body[BaseCommand.PN_APARTMENTID] sb_id=self.body[BaseCommand.PN_RELAYERID] sb_code=self.body.get(BaseCommand.PN_SB_CODE,None) name=self.body.get(BaseCommand.PN_NAME,None) respond=self.GetResp() if sb_id is None: respond.SetErrorCode(BaseCommand.CS_PARAMLACK) else: try: apartment=None if sb_code is None: apartment=SBDB.IncreaseVersion(session, apartment_id) else: apartment=SBDB.IncreaseVersions(session, 0,apartment_id) relayer,apartment_relayer=session.query(SBDB_ORM.Relayer,SBDB_ORM.Apartment_Relayer).join(SBDB_ORM.Apartment_Relayer).filter(and_(SBDB_ORM.Relayer.id==sb_id,SBDB_ORM.Apartment_Relayer.apartment_id==apartment_id)).first() if name is not None: apartment_relayer.name=name if sb_code is not None: relayer.uni_code=sb_code respond.body[BaseCommand.PN_VERSION]=apartment.version session.commit() except SQLAlchemyError,e: respond.SetErrorCode(BaseCommand.CS_DBEXCEPTION) logging.error("transport %d:%s",id(self.protocol.transport),e) session.rollback() respond.Send()
def Run(self): with self.protocol.lockCmd: if not self.Authorized(): self.SendUnauthorizedResp() return CBaseCommand.Run(self) with SBDB.session_scope() as session: apartment_id = self.body[BaseCommand.PN_ID] apartment_name = self.body[BaseCommand.PN_NAME] respond = self.GetResp() if apartment_id is None or apartment_name is None: respond.SetErrorCode(BaseCommand.CS_PARAMLACK) else: try: SBDB.IncreaseVersion(session, apartment_id) apartment = session.query(SBDB_ORM.Apartment).filter( SBDB_ORM.Apartment.id == apartment_id).first() apartment.name = apartment_name respond.body[ BaseCommand.PN_VERSION] = apartment.version session.commit() except SQLAlchemyError as e: respond.SetErrorCode(BaseCommand.CS_DBEXCEPTION) logging.error("transport %d:%s", id(self.protocol.transport), e) session.rollback() respond.Send()
def Run(self): with self.protocol.lockCmd: if not self.Authorized(): self.SendUnauthorizedResp() return CBaseCommand.Run(self) with SBDB.session_scope() as session: sb_id = self.body[BaseCommand.PN_RELAYERID] apartment_id = self.body[BaseCommand.PN_APARTMENTID] respond = self.GetResp() if sb_id is None: respond.SetErrorCode(BaseCommand.CS_PARAMLACK) else: try: apartment = SBDB.IncreaseVersion(session, apartment_id) session.query(SBDB_ORM.Apartment_Relayer).filter( and_( SBDB_ORM.Apartment_Relayer.relayer_id == sb_id, SBDB_ORM.Apartment_Relayer.apartment_id == apartment_id)).delete() respond.body[ BaseCommand.PN_VERSION] = apartment.version session.commit() except SQLAlchemyError as e: respond.SetErrorCode(BaseCommand.CS_DBEXCEPTION) logging.error("transport %d:%s", id(self.protocol.transport), e) session.rollback() respond.Send()
def Run(self): with self.protocol.lockCmd: if not self.Authorized(): self.SendUnauthorizedResp() return CBaseCommand.Run(self) apartment_id = self.body[BaseCommand.PN_APARTMENTID] sb_code = self.body[BaseCommand.PN_SB_CODE] sb_name = self.body[BaseCommand.PN_NAME] #account_id=self.protocol.account_id respond = self.GetResp() with SBDB.session_scope() as session: if session.query(SBDB_ORM.Relayer).join( SBDB_ORM.Apartment_Relayer).filter( and_( SBDB_ORM.Relayer.uni_code == sb_code, SBDB_ORM.Apartment_Relayer.apartment_id == apartment_id)).first() is not None: respond.SetErrorCode(BaseCommand.CS_DEVICEEXIST) try: relayer_id = SBDB.GetRelayerIdForcely(sb_code) apartment = SBDB.IncreaseVersion(session, apartment_id) apartment_relayer = SBDB_ORM.Apartment_Relayer() apartment_relayer.apartment_id = apartment_id apartment_relayer.relayer_id = relayer_id apartment_relayer.name = sb_name ''' relayer=SBDB_ORM.Relayer() relayer.apartment_id=apartment_id relayer.name=sb_name relayer.uni_code=sb_code session.add(relayer) ''' session.add(apartment_relayer) respond.body[BaseCommand.PN_VERSION] = apartment.version session.commit() # if session.query(SBDB_ORM.Device).join(SBDB_ORM.Relayer).filter(SBDB_ORM.Relayer.id==relayer.id).first(): # respond.body[BaseCommand.PN_UPDATEDATA]=True respond.body[BaseCommand.PN_ID] = relayer_id except SQLAlchemyError, e: respond.SetErrorCode(BaseCommand.CS_DBEXCEPTION) logging.error("transport %d:%s", id(self.protocol.transport), e) session.rollback() respond.Send()