def submit(self): content = DatabaseList.objects.filter(id=self.id).first() mail = Account.objects.filter(username=self.assigned).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: if content.url: try: util.dingding( content= '工单提交通知\n工单编号:%s\n发起人:%s\n地址:%s\n工单说明:%s\n状态:已提交\n备注:%s' % (self.workId, self.user, self.addr_ip, self.text, content.before), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: if mail.email: mess_info = { 'workid': self.workId, 'to_user': self.user, 'addr': self.addr_ip, 'text': self.text, 'note': content.before } try: put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=2) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def push_message(message=None, type=None, user=None, to_addr=None, work_id=None, status=None): try: tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['mail']: try: put_mess = send_email.send_email(to_addr=to_addr) put_mess.send_mail(mail_data=message, type=type) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') if tag.message['ding']: un_init = util.init_conf() webhook = ast.literal_eval(un_init['message']) util.dingding( content= '# <font face=\"微软雅黑\">工单提交通知</font> # \n <br> \n **工单编号:** %s \n \n **提交人员:** <font color=\"#000080\">%s</font><br /> \n \n **状态:** <font color=\"#FF9900\">%s</font><br /> \n' % (work_id, user, status), url=webhook['webhook']) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
def con_close(self): content = DatabaseList.objects.filter(id=self.order.bundle_id).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: util.dingding( content= '# <font face=\"微软雅黑\">工单执行通知</font> \n # \n <br> \n **工单编号:** %s \n \n **发起人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n **平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#38C759\">已执行</font><br /> \n \n **备注:** %s \n ' % (self.order.work_id, self.order.username, self.from_user, self.addr_ip, self.order.text, content.after), url=ding_url()) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['mail']: try: if mail.email: mess_info = { 'workid': self.order.work_id, 'to_user': self.order.username, 'addr': self.addr_ip, 'text': self.order.text, 'note': content.after } put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def push(self): content = DatabaseList.objects.filter( id=self._tmpData['bundle_id']).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: try: if content.url: util.dingding( content='工单驳回通知\n工单编号:%s\n发起人:%s\n地址:%s\n驳回说明:%s\n状态:驳回' % (self._tmpData['work_id'], self.to_user, self.addr_ip, self.text), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': self._tmpData['work_id'], 'to_user': self.to_user, 'addr': self.addr_ip, 'rejected': self.text } put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=1) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def con_close(self): content = DatabaseList.objects.filter(id=self.order.bundle_id).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: util.dingding( content= '工单执行通知\n工单编号:%s\n发起人:%s\n地址:%s\n工单备注:%s\n状态:已执行\n备注:%s' % (self.order.work_id, self.order.username, self.addr_ip, self.order.text, content.after), url=ding_url()) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['mail']: try: if mail.email: mess_info = { 'workid': self.order.work_id, 'to_user': self.order.username, 'addr': self.addr_ip, 'text': self.order.text, 'note': content.after } put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def agreed(self): ''' :argument 将执行的结果通过站内信,email,dingding 发送 :param self.from_user self.to_user self.title self.order self.addr_ip :return: none ''' Usermessage.objects.get_or_create( from_user=self.from_user, time=util.date(), title=self.title, content='该工单已审核通过!', to_user=self.to_user, state='unread' ) content = DatabaseList.objects.filter(id=self.order.bundle_id).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: try: if content.url: if self.statue == 'normal': util.dingding('# 【<font face=\"微软雅黑\">工单执行通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **发起人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n **平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#38C759\">已执行</font><br /> \n \n **执行结果:** <font color=\"#38C759\">正常</font><br /> \n \n **业务备注:** %s \n ' % (self.order.work_id, self.order.username, self.from_user,self.addr_ip, self.order.text, content.after), url=content.url) else: util.dingding( '# 【<font face=\"微软雅黑\">工单执行通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **发起人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n **平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#38C759\">已执行</font><br /> \n \n **执行结果:** <font color=\"#38C759\">正常</font><br /> \n \n **业务备注:** %s \n ' % (self.order.work_id, self.order.username, self.from_user, self.addr_ip, self.order.text, content.after), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': self.order.work_id, 'to_user': self.order.username, 'addr': self.addr_ip, 'text': self.order.text, 'note': content.after} put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def agreed(self): ''' :argument 将执行的结果通过站内信,email,dingding 发送 :param self.from_user self.to_user self.title self.order self.addr_ip :return: none ''' Usermessage.objects.get_or_create(from_user=self.from_user, time=util.date(), title=self.title, content='该工单已审核通过!', to_user=self.to_user, state='unread') content = DatabaseList.objects.filter(id=self.order.bundle_id).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: try: if content.url: util.dingding( content= '工单执行通知\n工单编号:%s\n发起人:%s\n地址:%s\n工单备注:%s\n状态:已执行\n备注:%s' % (self.order.work_id, self.order.username, self.addr_ip, self.order.text, content.after), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': self.order.work_id, 'to_user': self.order.username, 'addr': self.addr_ip, 'text': self.order.text, 'note': content.after } put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def push_message(message=None, type=None, user=None, to_addr=None, work_id=None, status=None): try: put_mess = send_email.send_email(to_addr=to_addr) put_mess.send_mail(mail_data=message, type=type) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') else: try: util.dingding(content='查询申请通知\n工单编号:%s\n发起人:%s\n状态:%s' % (work_id, user, status), url=WEBHOOK) except ValueError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
def submit(self): ''' :argument 更改该工单SqlOrder表中的status :param self.workId self.user self.addr_ip self.text self.assigned self.id :return: none ''' content = DatabaseList.objects.filter(id=self.id).first() mail = Account.objects.filter(username=self.assigned).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: if content.url: try: util.dingding( content='工单转发通知\n工单编号:%s\n发起人:%s\n当前审批人:%s\n地址:%s\n工单说明:%s\n状态:已提交\n备注:%s' % (self.workId, self.user,self.assigned, self.addr_ip, self.text, content.before), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['feishu']: try: user_mail = Account.objects.filter(username=self.assigned).values('email').first() user = {'mail': user_mail.get('email')} fs_send_msg( msg='工单转发通知\n工单编号:%s\n发起人:%s\n当前审批人:%s\n地址:%s\n工单说明:%s\n状态:已提交\n备注:%s' % (self.workId, self.user,self.assigned, self.addr_ip, self.text, content.before),user=user) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--飞书推送失败: {e}') if tag.message['mail']: if mail.email: mess_info = { 'workid': self.workId, 'to_user': self.user, 'addr': self.addr_ip, 'text': self.text, 'note': content.before} try: put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=99) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def submit(self): ''' :argument 更改该工单SqlOrder表中的status :param self.workId self.user self.addr_ip self.text self.assigned self.id :return: none ''' content = DatabaseList.objects.filter(id=self.id).first() mail = Account.objects.filter(username=self.assigned).first() tag = globalpermissions.objects.filter(authorization='global').first() try: util.dingding( '# 【<font face=\"微软雅黑\">工单提交通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **提交人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n**平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#FF9900\">已提交</font><br /> \n \n **业务备注:** 测试' % (self.workId, self.user, self.to_user, self.addr_ip, self.text), url='https://oapi.dingtalk.com/robot/send?access_token=3c5909159e71b1472390a95b5100469aa5d88386962c100d63d0583401e7d90b') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') # if tag is None or tag.dingding == 0: # pass # else: # if content.url: # try: # util.dingding('# 【<font face=\"微软雅黑\">工单提交通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **提交人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n**平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#FF9900\">已提交</font><br /> \n \n **业务备注:** %s \n ' # % (self.workId, self.user, self.to_user,self.addr_ip, self.text, content.before), url=content.url) # except Exception as e: # CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: if mail.email: mess_info = { 'workid': self.workId, 'to_user': self.user, 'addr': self.addr_ip, 'text': self.text, 'note': content.before} try: put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=2) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def execute(self): ''' :argument 更改该工单SqlOrder表中的status :param self._tmpData self.addr_ip self.text self.to_user :return: none ''' content = DatabaseList.objects.filter(id=self._tmpData['bundle_id']).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: if content.url: util.dingding( content='工单驳回通知\n工单编号:%s\n发起人:%s\n操作人:%s\n地址:%s\n驳回说明:%s\n状态:驳回' % (self._tmpData['work_id'], self.to_user,self.from_user, self.addr_ip, self.text), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['feishu']: try: user_mail = Account.objects.filter(username=self.to_user).values('email').first() user = {'mail': user_mail.get('email')} fs_send_msg( msg='工单驳回通知\n工单编号:%s\n发起人:%s\n操作人:%s\n地址:%s\n驳回说明:%s\n状态:驳回' % (self._tmpData['work_id'], self.to_user,self.from_user, self.addr_ip, self.text),user=user) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--飞书推送失败: {e}') if tag.message['mail']: try: if mail.email: mess_info = { 'workid': self._tmpData['work_id'], 'to_user': self.to_user, 'addr': self.addr_ip, 'rejected': self.text} put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=1) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def push_message(message=None, type=None, user=None, to_addr=None, work_id=None, status=None): try: tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['mail']: put_mess = send_email.send_email(to_addr=to_addr, ssl=tag.message['ssl']) put_mess.send_mail(mail_data=message, type=type) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') else: try: if tag.message['ding']: un_init = util.init_conf() webhook = ast.literal_eval(un_init['message']) util.dingding(content='权限申请通知\n工单编号:%s\n发起人:%s\n状态:%s' % (work_id, user, status), url=webhook['webhook']) except ValueError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
def post(self, request, args=None): try: username = request.data['username'] password = request.data['password'] group = request.data.get('group', 'guest') email = request.data['email'] realname = request.data['realname'] department = request.data['department'] auth_group = ','.join(json.loads(request.data['auth_group'])) _send_mail = send_email(to_addr=email) _status, _message = _send_mail.email_check() if _status != 200: return Response(data=_message) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if group == 'admin' or group == 'perform': user = Account.objects.create_user( username=username, password=password, department=department, group=group, is_staff=1, email=email, auth_group=auth_group, real_name=realname) user.save() return Response('%s 用户注册成功!' % username) elif group == 'guest': user = Account.objects.create_user( username=username, password=password, department=department, group=group, email=email, auth_group=auth_group, real_name=realname ) user.save() return Response('%s 用户注册成功!' % username) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(e)
def con_close(self): Usermessage.objects.get_or_create( from_user=self.from_user, time=util.date(), title=self.title, content='该工单已审核通过!', to_user=self.to_user, state='unread' ) content = DatabaseList.objects.filter(id=self.order.bundle_id).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: if content.url: util.dingding( content='工单执行通知\n工单编号:%s\n发起人:%s\n审核人:%s\n地址:%s\n工单备注:%s\n状态:已执行\n备注:%s' % ( self.order.work_id, self.order.username,self.order.assigned, self.addr_ip, self.order.text, content.after), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['feishu']: try: user_mail = Account.objects.filter(username=self.order.username).values('email').first() user = {'mail': user_mail.get('email')} fs_send_msg( msg='工单执行通知\n工单编号:%s\n发起人:%s\n审核人:%s\n地址:%s\n工单备注:%s\n状态:已执行\n备注:%s' % (self.order.work_id, self.order.username,self.order.assigned, self.addr_ip, self.order.text, content.after),user=user) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--飞书推送失败: {e}') if tag.message['mail']: try: if mail.email: mess_info = { 'workid': self.order.work_id, 'to_user': self.order.username, 'addr': self.addr_ip, 'text': self.order.text, 'note': content.after} put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def submit(self): ''' :argument 更改该工单SqlOrder表中的status :param self.workId self.user self.addr_ip self.text self.assigned self.id :return: none ''' content = DatabaseList.objects.filter(id=self.id).first() mail = Account.objects.filter(username=self.assigned).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: util.dingding( '# <font face=\"微软雅黑\">工单提交通知</font> # \n <br> \n **工单编号:** %s \n \n **提交人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n**平台地址:** http://%s \n \n **环境:** %s \n \n **服务:** %s \n \n **迭代版本:** %s \n \n **工单说明:** %s \n \n **状态:** <font color=\"#FF9900\">已提交</font><br /> \n \n **备注:** %s \n ' % (self.workId, self.user, self.assigned, self.addr_ip, self.env, self.service, self.version, self.text, content.before), url=ding_url()) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['mail']: if mail.email: mess_info = { 'workid': self.workId, 'to_user': self.user, 'addr': self.addr_ip, 'text': self.text, 'note': content.before } try: put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=99) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def submit(self): ''' :argument 更改该工单SqlOrder表中的status :param self.workId self.user self.addr_ip self.text self.assigned self.id :return: none ''' content = DatabaseList.objects.filter(id=self.id).first() mail = Account.objects.filter(username=self.assigned).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: if content.url: try: util.dingding('# 【<font face=\"微软雅黑\">工单提交通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **提交人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n**平台地址:** http://%s \n \n **工单备注:** %s \n \n **执行状态:** <font color=\"#38C759\">已提交</font><br /> \n \n **执行状态:** <font color=\"#38C759\">已提交</font><br /> \n \n **业务备注:** %s \n ' % (self.workId, self.user, self.to_user,self.addr_ip, self.text, content.before), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: if mail.email: mess_info = { 'workid': self.workId, 'to_user': self.user, 'addr': self.addr_ip, 'text': self.text, 'note': content.before} try: put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=2) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def execute(self): ''' :argument 更改该工单SqlOrder表中的status :param self._tmpData self.addr_ip self.text self.to_user :return: none ''' content = DatabaseList.objects.filter(id=self._tmpData['bundle_id']).first() mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag is None or tag.dingding == 0: pass else: try: if content.url: util.dingding('# 【<font face=\"微软雅黑\">工单驳回通知</font>】 \n # \n <br> \n **工单编号:** %s \n \n **发起人员:** <font color=\"#000080\">%s</font><br /> \n \n **审核人员:** <font color=\"#000080\">%s</font><br /> \n \n **平台地址:** http://%s \n \n **驳回说明:** %s \n \n **状态:** 驳回 \n "' % (self._tmpData['work_id'], self.to_user,self.from_user, self.addr_ip, self.text), url=content.url) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': self._tmpData['work_id'], 'to_user': self.to_user, 'addr': self.addr_ip, 'rejected': self.text} put_mess = send_email.send_email(to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=1) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def put(self, request, args=None): request.data self.dispatch() if args == 'changepwd': try: username = request.data['username'] password = request.data['new'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: user = Account.objects.get(username__exact=username) user.set_password(password) user.save() return Response('%s--密码修改成功!' % username) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'changemail': try: username = request.data['username'] mail = request.data['mail'] real = request.data['real'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: _send_mail = send_email(to_addr=mail) _status, _message = _send_mail.email_check() if _status != 200: return Response(data=_message) Account.objects.filter(username=username).update(email=mail, real_name=real) return Response('E-mail/真实姓名修改成功!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500)
def execute(self): ''' :argument 更改该工单SqlOrder表中的status :param self._tmpData self.addr_ip self.text self.to_user :return: none ''' mail = Account.objects.filter(username=self.to_user).first() tag = globalpermissions.objects.filter(authorization='global').first() if tag.message['ding']: try: util.dingding( content='工单驳回通知\n工单编号:%s\n发起人:%s\n地址:%s\n驳回说明:%s\n状态:驳回' % (self._tmpData['work_id'], self.to_user, self.addr_ip, self.text), url=ding_url()) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--钉钉推送失败: {e}') if tag.message['mail']: try: if mail.email: mess_info = { 'workid': self._tmpData['work_id'], 'to_user': self.to_user, 'addr': self.addr_ip, 'rejected': self.text} put_mess = send_email.send_email(to_addr=mail.email, ssl=tag.message['ssl']) put_mess.send_mail(mail_data=mess_info, type=1) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}--邮箱推送失败: {e}')
def post(self, request, args=None): try: userdata = json.loads(request.data['userinfo']) _send_mail = send_email(to_addr=userdata['email']) _status, _message = _send_mail.email_check() if _status != 200: return Response(data=_message) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: user = Account.objects.create_user( username=userdata['username'], password=userdata['password'], department=userdata['department'], group='guest', email=userdata['email'], real_name=userdata['realname']) user.save() return Response('%s 用户注册成功!' % userdata['username']) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse('用户名已存在,请使用其他用户名注册!')
def post(self, request, args=None): try: data = json.loads(request.data['data']) tmp = json.loads(request.data['sql']) user = request.data['user'] type = request.data['type'] id = request.data['id'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: x = [x.rstrip(';') for x in tmp] sql = ';'.join(x) sql = sql.strip(' ').rstrip(';') workId = util.workId() SqlOrder.objects.get_or_create(username=user, date=util.date(), work_id=workId, status=2, basename=data['basename'], sql=sql, type=type, text=data['text'], backup=data['backup'], bundle_id=id, assigned=data['assigned']) content = DatabaseList.objects.filter(id=id).first() mail = Account.objects.filter( username=data['assigned']).first() tag = globalpermissions.objects.filter( authorization='global').first() ret_info = '已提交,请等待管理员审核!' if tag is None or tag.dingding == 0: pass else: if content.url: try: util.dingding( content= '工单提交通知\n工单编号:%s\n发起人:%s\n地址:%s\n工单说明:%s\n状态:已提交\n备注:%s' % (workId, user, addr_ip, data['text'], content.before), url=content.url) except: ret_info = '工单执行成功!但是钉钉推送失败,请查看错误日志排查错误.' if tag is None or tag.email == 0: pass else: if mail.email: mess_info = { 'workid': workId, 'to_user': user, 'addr': addr_ip, 'text': data['text'], 'note': content.before } try: put_mess = send_email.send_email( to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=2) except: ret_info = '工单执行成功!但是邮箱推送失败,请查看错误日志排查错误.' return Response(ret_info) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500)
def put(self, request, args=None): try: type = request.data['type'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') else: if type == 0: try: from_user = request.data['from_user'] to_user = request.data['to_user'] text = request.data['text'] id = request.data['id'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: SqlOrder.objects.filter(id=id).update(status=0) _tmpData = SqlOrder.objects.filter(id=id).values( 'work_id', 'bundle_id').first() title = '工单:' + _tmpData['work_id'] + '驳回通知' Usermessage.objects.get_or_create(from_user=from_user, time=util.date(), title=title, content=text, to_user=to_user, state='unread') content = DatabaseList.objects.filter( id=_tmpData['bundle_id']).first() mail = Account.objects.filter(username=to_user).first() tag = globalpermissions.objects.filter( authorization='global').first() ret_info = '操作成功,该请求已驳回!' if tag is None or tag.dingding == 0: pass else: try: if content.url: util.dingding( content= '工单驳回通知\n工单编号:%s\n发起人:%s\n地址:%s\n驳回说明:%s\n状态:驳回' % (_tmpData['work_id'], to_user, addr_ip, text), url=content.url) except: ret_info = '工单执行成功!但是钉钉推送失败,请查看错误日志排查错误.' if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': _tmpData['work_id'], 'to_user': to_user, 'addr': addr_ip, 'rejected': text } put_mess = send_email.send_email( to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=1) except: ret_info = '工单执行成功!但是邮箱推送失败,请查看错误日志排查错误.' return Response(ret_info) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif type == 1: try: from_user = request.data['from_user'] to_user = request.data['to_user'] id = request.data['id'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: SqlOrder.objects.filter(id=id).update(status=3) c = SqlOrder.objects.filter(id=id).first() title = f'工单:{c.work_id}审核通过通知' ''' 根据工单编号拿出对应sql的拆解数据 ''' SQL_LIST = DatabaseList.objects.filter( id=c.bundle_id).first() ''' 发送sql语句到inception中执行 ''' with call_inception.Inception( LoginDic={ 'host': SQL_LIST.ip, 'user': SQL_LIST.username, 'password': SQL_LIST.password, 'db': c.basename, 'port': SQL_LIST.port }) as f: res = f.Execute(sql=c.sql, backup=c.backup) ''' 修改该工单编号的state状态 ''' SqlOrder.objects.filter(id=id).update(status=1) ''' 遍历返回结果插入到执行记录表中 ''' for i in res: SqlRecord.objects.get_or_create( date=util.date(), state=i['stagestatus'], sql=i['sql'], area=SQL_LIST.computer_room, name=SQL_LIST.connection_name, error=i['errormessage'], base=c.basename, workid=c.work_id, person=c.username, reviewer=c.assigned, affectrow=i['affected_rows'], sequence=i['sequence'], backup_dbname=i['backup_dbname']) ''' 通知消息 ''' Usermessage.objects.get_or_create(from_user=from_user, time=util.date(), title=title, content='该工单已审核通过!', to_user=to_user, state='unread') ''' Dingding ''' content = DatabaseList.objects.filter( id=c.bundle_id).first() mail = Account.objects.filter(username=to_user).first() tag = globalpermissions.objects.filter( authorization='global').first() ret_info = '操作成功,该请求已同意!并且已在相应库执行!详细执行信息请前往执行记录页面查看!' if tag is None or tag.dingding == 0: pass else: try: if content.url: util.dingding( content= '工单执行通知\n工单编号:%s\n发起人:%s\n地址:%s\n工单备注:%s\n状态:同意\n备注:%s' % (c.work_id, c.username, addr_ip, c.text, content.after), url=content.url) except: ret_info = '工单执行成功!但是钉钉推送失败,请查看错误日志排查错误.' if tag is None or tag.email == 0: pass else: try: if mail.email: mess_info = { 'workid': c.work_id, 'to_user': c.username, 'addr': addr_ip, 'text': c.text, 'note': content.after } put_mess = send_email.send_email( to_addr=mail.email) put_mess.send_mail(mail_data=mess_info, type=0) except: ret_info = '工单执行成功!但是邮箱推送失败,请查看错误日志排查错误.' return Response(ret_info) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif type == 'test': try: base = request.data['base'] id = request.data['id'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: sql = SqlOrder.objects.filter(id=id).first() data = DatabaseList.objects.filter( id=sql.bundle_id).first() info = { 'host': data.ip, 'user': data.username, 'password': data.password, 'db': base, 'port': data.port } try: with call_inception.Inception(LoginDic=info) as test: res = test.Check(sql=sql.sql) return Response({'result': res, 'status': 200}) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return Response({'status': '500'})