Esempio n. 1
0
 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}')
Esempio n. 2
0
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}')
Esempio n. 3
0
    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}')
Esempio n. 4
0
 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}')
Esempio n. 5
0
    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}')
Esempio n. 6
0
    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}')
Esempio n. 7
0
    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}')
Esempio n. 8
0
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}')
Esempio n. 9
0
    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}')
Esempio n. 10
0
    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}')
Esempio n. 11
0
    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}')
Esempio n. 12
0
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}')
Esempio n. 13
0
 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)
Esempio n. 14
0
    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}')
Esempio n. 15
0
    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}')
Esempio n. 16
0
    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}')
Esempio n. 17
0
    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}')
Esempio n. 18
0
    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)
Esempio n. 19
0
    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}')
Esempio n. 20
0
 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('用户名已存在,请使用其他用户名注册!')
Esempio n. 21
0
 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)
Esempio n. 22
0
    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'})