Exemple #1
0
 def delete(self) -> DBResult:
     session = NBdb().get_session()
     try:
         if self.auth_type == 'user':
             auth = session.query(AuthUser).join(User). \
                 filter(AuthUser.user_id == User.id). \
                 filter(User.qq == self.auth_id). \
                 filter(AuthUser.auth_node == self.auth_node).one()
             session.delete(auth)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         elif self.auth_type == 'group':
             auth = session.query(AuthGroup).join(Group). \
                 filter(AuthGroup.group_id == Group.id). \
                 filter(Group.group_id == self.auth_id). \
                 filter(AuthGroup.auth_node == self.auth_node).one()
             session.delete(auth)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         else:
             result = DBResult(error=True,
                               info='Auth type error',
                               result=-1)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #2
0
 def permission_set(self,
                    notice: int = 0,
                    command: int = 0,
                    level: int = 0) -> DBResult:
     session = NBdb().get_session()
     # 检查群组是否在表中, 存在则直接更新状态
     try:
         exist_group = session.query(Group).filter(
             Group.group_id == self.group_id).one()
         exist_group.notice_permissions = notice
         exist_group.command_permissions = command
         exist_group.permission_level = level
         exist_group.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success', result=0)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
 def add(self, dynamic_type: int, content: str) -> DBResult:
     session = NBdb().get_session()
     try:
         exist_dynamic = session.query(Bilidynamic).\
             filter(Bilidynamic.uid == self.uid).\
             filter(Bilidynamic.dynamic_id == self.dynamic_id).one()
         exist_dynamic.content += f'\nupdate: {datetime.now()}\n{content}'
         exist_dynamic.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgrade', result=0)
     except NoResultFound:
         try:
             # 动态表中添加新动态
             new_dynamic = Bilidynamic(uid=self.uid, dynamic_id=self.dynamic_id, dynamic_type=dynamic_type,
                                       content=content, created_at=datetime.now())
             session.add(new_dynamic)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True, info='MultipleResultsFound', result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #4
0
 def add(self) -> DBResult:
     session = NBdb().get_session()
     try:
         exist_pixivtag = session.query(PixivTag).filter(
             PixivTag.tagname == self.tagname).one()
         result = DBResult(error=False, info='pixivtag exist', result=0)
     except NoResultFound:
         try:
             # 动态表中添加新动态
             new_tag = PixivTag(tagname=self.tagname,
                                created_at=datetime.now())
             session.add(new_tag)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #5
0
 def delete(self) -> DBResult:
     session = NBdb().get_session()
     try:
         # 清空群成员表中该用户
         for exist_user in session.query(UserGroup).filter(
                 UserGroup.user_id == self.id().result).all():
             session.delete(exist_user)
         # 删除技能
         self.skill_clear()
         # 删除状态和假期
         self.status_del()
         exist_user = session.query(User).filter(User.qq == self.qq).one()
         session.delete(exist_user)
         session.commit()
         result = DBResult(error=False, info='Success', result=0)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #6
0
 def permission_info(self) -> DBResult:
     session = NBdb().get_session()
     res = {}
     # 检查群组是否在表中, 存在则直接更新状态
     try:
         notice, command, level = session.query(Group.notice_permissions,
                                                Group.command_permissions,
                                                Group.permission_level).\
             filter(Group.group_id == self.group_id).one()
         res['notice'] = notice
         res['command'] = command
         res['level'] = level
         result = DBResult(error=False, info='Success', result=res)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=res)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=res)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=res)
     finally:
         session.close()
     return result
Exemple #7
0
 def add(self, name: str) -> DBResult:
     session = NBdb().get_session()
     try:
         # qq群已存在则更新群名称
         exist_group = session.query(Group).filter(
             Group.group_id == self.group_id).one()
         exist_group.name = name
         exist_group.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgraded', result=0)
     except NoResultFound:
         # 不存在则添加新群组
         try:
             new_group = Group(group_id=self.group_id,
                               name=name,
                               notice_permissions=0,
                               command_permissions=0,
                               permission_level=0,
                               created_at=datetime.now())
             session.add(new_group)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #8
0
 def subscription_del(self, sub: DBSubscription) -> DBResult:
     if self.exist() and sub.exist():
         session = NBdb().get_session()
         # 查询成员-群组表中用户-群关系
         try:
             # 用户-群关系已存在, 删除
             exist_subscription = session.query(GroupSub). \
                 filter(GroupSub.group_id == self.id().result). \
                 filter(GroupSub.sub_id == sub.id().result).one()
             session.delete(exist_subscription)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except NoResultFound:
             result = DBResult(error=True, info='NoResultFound', result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or subscription not exist',
                           result=-1)
     return result
Exemple #9
0
 def mailbox_del(self, mailbox: DBEmailBox) -> DBResult:
     if self.exist() and mailbox.exist():
         session = NBdb().get_session()
         try:
             # 群邮箱已存在, 更新信息
             exist_mailbox = session.query(GroupEmailBox). \
                 filter(GroupEmailBox.group_id == self.id().result). \
                 filter(GroupEmailBox.email_box_id == mailbox.id().result).one()
             session.delete(exist_mailbox)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except NoResultFound:
             result = DBResult(error=True, info='NoResultFound', result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or mailbox not exist',
                           result=-1)
     return result
Exemple #10
0
 def skill_del(self, skill: DBSkill) -> DBResult:
     if self.exist() and skill.exist():
         session = NBdb().get_session()
         # 查询用户已有技能
         try:
             # 已有技能, 删除
             exist_skill = session.query(UserSkill). \
                 filter(UserSkill.skill_id == skill.id().result). \
                 filter(UserSkill.user_id == self.id().result).one()
             session.delete(exist_skill)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except NoResultFound:
             result = DBResult(error=True, info='NoResultFound', result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Skill or user not exist',
                           result=-1)
     return result
Exemple #11
0
 def add(self, up_name: str, live_info: str = None) -> DBResult:
     session = NBdb().get_session()
     try:
         # 已存在则更新描述
         exist_subscription = session.query(Subscription).filter(Subscription.sub_type == self.sub_type).\
             filter(Subscription.sub_id == self.sub_id).one()
         exist_subscription.up_name = up_name
         exist_subscription.live_info = live_info
         exist_subscription.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgraded', result=0)
     except NoResultFound:
         # 不存在则添加新订阅信息
         try:
             new_subscription = Subscription(sub_type=self.sub_type,
                                             sub_id=self.sub_id,
                                             up_name=up_name,
                                             live_info=live_info,
                                             created_at=datetime.now())
             session.add(new_subscription)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #12
0
 def add(self, description: str) -> DBResult:
     session = NBdb().get_session()
     try:
         # 已存在则更新描述
         exist_skill = session.query(Skill).filter(
             Skill.name == self.name).one()
         exist_skill.description = description
         exist_skill.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgraded', result=0)
     except NoResultFound:
         # 不存在则添加新技能
         try:
             new_skill = Skill(name=self.name,
                               description=description,
                               created_at=datetime.now())
             session.add(new_skill)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #13
0
 def add(self,
         date: str,
         header: str,
         sender: str,
         to: str = None,
         body: str = None,
         html: str = None) -> DBResult:
     session = NBdb().get_session()
     try:
         new_email = Email(mail_hash=self.mail_hash,
                           date=date,
                           header=header,
                           sender=sender,
                           to=to,
                           body=body,
                           html=html,
                           created_at=datetime.now())
         session.add(new_email)
         session.commit()
         result = DBResult(error=False, info='Success added', result=0)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #14
0
 def add_global_cool_down_event(cls,
                                stop_at: datetime,
                                description: str = None) -> DBResult:
     session = NBdb().get_session()
     try:
         exist_event = session.query(CoolDownEvent).filter(
             CoolDownEvent.event_type == 'global').one()
         exist_event.stop_at = stop_at
         exist_event.description = description
         exist_event.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgraded', result=0)
     except NoResultFound:
         try:
             new_event = CoolDownEvent(event_type='global',
                                       stop_at=stop_at,
                                       description=description,
                                       created_at=datetime.now())
             session.add(new_event)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #15
0
 def member_del(self, user: DBUser) -> DBResult:
     if self.exist() and user.exist():
         session = NBdb().get_session()
         # 查询成员-群组表中用户-群关系
         try:
             # 用户-群关系已存在, 删除
             exist_user = session.query(UserGroup). \
                 filter(UserGroup.user_id == user.id().result). \
                 filter(UserGroup.group_id == self.id().result).one()
             session.delete(exist_user)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except NoResultFound:
             result = DBResult(error=True, info='NoResultFound', result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or user not exist',
                           result=-1)
     return result
Exemple #16
0
 def clear_time_out_event(cls):
     session = NBdb().get_session()
     events = session.query(CoolDownEvent).order_by(CoolDownEvent.id).all()
     for event in events:
         try:
             if datetime.now() >= event.stop_at:
                 session.delete(event)
                 session.commit()
         except Exception:
             session.rollback()
             continue
Exemple #17
0
 def mailbox_add(self,
                 mailbox: DBEmailBox,
                 mailbox_info: str = None) -> DBResult:
     if self.exist() and mailbox.exist():
         session = NBdb().get_session()
         try:
             # 群邮箱已存在, 更新信息
             exist_mailbox = session.query(GroupEmailBox). \
                 filter(GroupEmailBox.group_id == self.id().result). \
                 filter(GroupEmailBox.email_box_id == mailbox.id().result).one()
             exist_mailbox.box_info = mailbox_info
             exist_mailbox.updated_at = datetime.now()
             session.commit()
             result = DBResult(error=False,
                               info='Success upgraded',
                               result=0)
         except NoResultFound:
             # 不存在关系则添加新邮箱
             try:
                 new_mailbox = GroupEmailBox(
                     email_box_id=mailbox.id().result,
                     group_id=self.id().result,
                     box_info=mailbox_info,
                     created_at=datetime.now())
                 session.add(new_mailbox)
                 session.commit()
                 result = DBResult(error=False,
                                   info='Success added',
                                   result=0)
             except Exception as e:
                 session.rollback()
                 result = DBResult(error=True, info=repr(e), result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or mailbox not exist',
                           result=-1)
     return result
Exemple #18
0
 def vocation_set(self,
                  stop_time: datetime,
                  reason: str = None) -> DBResult:
     if self.exist():
         session = NBdb().get_session()
         # 检查用户在假期表中是否存在
         try:
             # 存在则设置假期状态信息
             exist_status = session.query(Vocation).filter(
                 Vocation.user_id == self.id().result).one()
             exist_status.status = 1
             exist_status.stop_at = stop_time
             exist_status.reason = reason
             exist_status.updated_at = datetime.now()
             session.commit()
             result = DBResult(error=False,
                               info='Success upgraded',
                               result=0)
         except NoResultFound:
             # 不存在则假期表中添加信息
             try:
                 new_status = Vocation(user_id=self.id().result,
                                       status=1,
                                       stop_at=stop_time,
                                       reason=reason,
                                       created_at=datetime.now())
                 session.add(new_status)
                 session.commit()
                 result = DBResult(error=False,
                                   info='Success set',
                                   result=0)
             except Exception as e:
                 session.rollback()
                 result = DBResult(error=True, info=repr(e), result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True, info='User not exist', result=-1)
     return result
Exemple #19
0
 def add(self, sub_type: str = None, group_id: int = None, user_id: int = None, user_name: str = None,
         raw_data: str = None, msg_data: str = None) -> DBResult:
     session = NBdb().get_session()
     try:
         new_event = History(time=self.time, self_id=self.self_id,
                             post_type=self.post_type, detail_type=self.detail_type, sub_type=sub_type,
                             group_id=group_id, user_id=user_id, user_name=user_name,
                             raw_data=raw_data, msg_data=msg_data, created_at=datetime.now())
         session.add(new_event)
         session.commit()
         result = DBResult(error=False, info='Success added', result=0)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #20
0
 def subscription_add(self,
                      sub: DBSubscription,
                      group_sub_info: str = None) -> DBResult:
     if self.exist() and sub.exist():
         session = NBdb().get_session()
         try:
             # 订阅关系已存在, 更新信息
             exist_subscription = session.query(GroupSub). \
                 filter(GroupSub.group_id == self.id().result). \
                 filter(GroupSub.sub_id == sub.id().result).one()
             exist_subscription.group_sub_info = group_sub_info
             exist_subscription.updated_at = datetime.now()
             session.commit()
             result = DBResult(error=False,
                               info='Success upgraded',
                               result=0)
         except NoResultFound:
             # 不存在关系则添加新成员
             try:
                 subscription = GroupSub(sub_id=sub.id().result,
                                         group_id=self.id().result,
                                         group_sub_info=group_sub_info,
                                         created_at=datetime.now())
                 session.add(subscription)
                 session.commit()
                 result = DBResult(error=False,
                                   info='Success added',
                                   result=0)
             except Exception as e:
                 session.rollback()
                 result = DBResult(error=True, info=repr(e), result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or subscription not exist',
                           result=-1)
     return result
Exemple #21
0
 def member_add(self, user: DBUser, user_group_nickname: str) -> DBResult:
     if self.exist() and user.exist():
         session = NBdb().get_session()
         # 查询成员-群组表中用户-群关系
         try:
             # 用户-群关系已存在, 更新用户群昵称
             exist_user = session.query(UserGroup). \
                 filter(UserGroup.user_id == user.id().result). \
                 filter(UserGroup.group_id == self.id().result).one()
             exist_user.user_group_nickname = user_group_nickname
             exist_user.updated_at = datetime.now()
             session.commit()
             result = DBResult(error=False,
                               info='Success upgraded',
                               result=0)
         except NoResultFound:
             # 不存在关系则添加新成员
             try:
                 new_user = UserGroup(
                     user_id=user.id().result,
                     group_id=self.id().result,
                     user_group_nickname=user_group_nickname,
                     created_at=datetime.now())
                 session.add(new_user)
                 session.commit()
                 result = DBResult(error=False,
                                   info='Success added',
                                   result=0)
             except Exception as e:
                 session.rollback()
                 result = DBResult(error=True, info=repr(e), result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or user not exist',
                           result=-1)
     return result
Exemple #22
0
 def able_member_clear(self) -> DBResult:
     if self.exist():
         session = NBdb().get_session()
         # 查询成员-技能表中用户-技能关系
         try:
             for exist_user_skill in session.query(UserSkill).filter(
                     UserSkill.skill_id == self.id().result).all():
                 session.delete(exist_user_skill)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True, info='Skill not exist', result=-1)
     return result
Exemple #23
0
 def skill_add(self, skill: DBSkill, skill_level: int) -> DBResult:
     if self.exist() and skill.exist():
         session = NBdb().get_session()
         # 查询用户已有技能
         try:
             # 已有技能, 更新等级
             exist_skill = session.query(UserSkill). \
                 filter(UserSkill.skill_id == skill.id().result). \
                 filter(UserSkill.user_id == self.id().result).one()
             exist_skill.skill_level = skill_level
             exist_skill.updated_at = datetime.now()
             session.commit()
             result = DBResult(error=False,
                               info='Success upgraded',
                               result=0)
         except NoResultFound:
             # 不存在则添加新技能
             try:
                 new_skill = UserSkill(user_id=self.id().result,
                                       skill_id=skill.id().result,
                                       skill_level=skill_level,
                                       created_at=datetime.now())
                 session.add(new_skill)
                 session.commit()
                 result = DBResult(error=False,
                                   info='Success added',
                                   result=0)
             except Exception as e:
                 session.rollback()
                 result = DBResult(error=True, info=repr(e), result=-1)
         except MultipleResultsFound:
             result = DBResult(error=True,
                               info='MultipleResultsFound',
                               result=-1)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Skill or user not exist',
                           result=-1)
     return result
Exemple #24
0
 def sub_group_clear(self) -> DBResult:
     if self.exist():
         session = NBdb().get_session()
         try:
             for exist_group_sub in session.query(GroupSub).filter(
                     GroupSub.sub_id == self.id().result).all():
                 session.delete(exist_group_sub)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Subscription not exist',
                           result=-1)
     return result
Exemple #25
0
 def status_del(self) -> DBResult:
     if self.exist():
         session = NBdb().get_session()
         try:
             exist_status = session.query(Vocation).filter(
                 Vocation.user_id == self.id().result).one()
             session.delete(exist_status)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Status or user not exist',
                           result=-1)
     return result
Exemple #26
0
 def delete(self) -> DBResult:
     session = NBdb().get_session()
     try:
         exist_box = session.query(EmailBox).filter(
             EmailBox.address == self.address).one()
         session.delete(exist_box)
         session.commit()
         result = DBResult(error=False, info='Success', result=0)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #27
0
 def mailbox_clear(self) -> DBResult:
     if self.exist():
         session = NBdb().get_session()
         # 查询成员-群组表中用户-群关系
         try:
             for exist_mailbox in \
                     session.query(GroupEmailBox).filter(GroupEmailBox.group_id == self.id().result).all():
                 session.delete(exist_mailbox)
             session.commit()
             result = DBResult(error=False, info='Success', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
         finally:
             session.close()
     else:
         result = DBResult(error=True,
                           info='Group or mailbox not exist',
                           result=-1)
     return result
Exemple #28
0
 def add(self, title: str, description: str, tags: str, illust_id: str,
         url: str) -> DBResult:
     session = NBdb().get_session()
     try:
         exist_pixivision = session.query(Pixivision).filter(
             Pixivision.aid == self.aid).one()
         exist_pixivision.title = title
         exist_pixivision.description = description
         exist_pixivision.tags = tags
         exist_pixivision.illust_id = illust_id
         exist_pixivision.url = url
         exist_pixivision.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgrade', result=0)
     except NoResultFound:
         try:
             # 动态表中添加新动态
             new_pixivision = Pixivision(aid=self.aid,
                                         title=title,
                                         description=description,
                                         tags=tags,
                                         illust_id=illust_id,
                                         url=url,
                                         created_at=datetime.now())
             session.add(new_pixivision)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #29
0
 def add(self,
         server_host: str,
         password: str,
         port: int = 993) -> DBResult:
     session = NBdb().get_session()
     try:
         # 已存在则更新
         exist_box = session.query(EmailBox).filter(
             EmailBox.address == self.address).one()
         exist_box.server_host = server_host
         exist_box.port = port
         exist_box.password = password
         exist_box.updated_at = datetime.now()
         session.commit()
         result = DBResult(error=False, info='Success upgraded', result=0)
     except NoResultFound:
         # 不存在则添加
         try:
             new_box = EmailBox(address=self.address,
                                server_host=server_host,
                                password=password,
                                port=port,
                                created_at=datetime.now())
             session.add(new_box)
             session.commit()
             result = DBResult(error=False, info='Success added', result=0)
         except Exception as e:
             session.rollback()
             result = DBResult(error=True, info=repr(e), result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result
Exemple #30
0
 def delete(self) -> DBResult:
     session = NBdb().get_session()
     try:
         # 清空持已订阅这个sub的群组
         self.sub_group_clear()
         exist_subscription = session.query(Subscription).filter(Subscription.sub_type == self.sub_type).\
             filter(Subscription.sub_id == self.sub_id).one()
         session.delete(exist_subscription)
         session.commit()
         result = DBResult(error=False, info='Success', result=0)
     except NoResultFound:
         result = DBResult(error=True, info='NoResultFound', result=-1)
     except MultipleResultsFound:
         result = DBResult(error=True,
                           info='MultipleResultsFound',
                           result=-1)
     except Exception as e:
         session.rollback()
         result = DBResult(error=True, info=repr(e), result=-1)
     finally:
         session.close()
     return result