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()
示例#2
0
 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()
示例#3
0
 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()
示例#4
0
 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()