Example #1
0
 def post(self, request, args: str = None):
     try:
         id = request.data['id']
         info = json.loads(request.data['opid'])
     except KeyError as e:
         CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
         return HttpResponse(status=500)
     else:
         try:
             sql = []
             for i in info:
                 info = SqlOrder.objects.raw(
                     "select core_sqlorder.*,core_databaselist.connection_name,\
                     core_databaselist.computer_room from core_sqlorder INNER JOIN \
                     core_databaselist on core_sqlorder.bundle_id = core_databaselist.id \
                     WHERE core_sqlorder.id = %s"
                     % id)
                 data = util.ser(info)
                 _data = SqlRecord.objects.filter(sequence=i).first()
                 roll = rollback.rollbackSQL(db=_data.backup_dbname, opid=i)
                 link = _data.backup_dbname + '.' + roll
                 spa = rollback.roll(backdb=link, opid=i)
                 sql.append(spa)
             _h = sorted([i[0][0] for i in sql])
             return Response({'data': data[0], 'sql': _h, 'type': 1})
         except Exception as e:
             CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
             return HttpResponse(status=500)
Example #2
0
    def post(self, request, args: str = None):
        '''

        :argument 当工单执行后sql回滚功能接口api

        :param args: 根据获得order_id 返回对应的回滚sql

        :return: {'data': data[0], 'sql': rollback_sql, 'type': 1}

        '''

        try:
            order_id = request.data['id']
            tmp = list(set(json.loads(request.data['opid'])))
            info = [x for x in tmp if x.find("0_0_") == -1]
        except KeyError as e:
            CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
            return HttpResponse(status=500)
        else:
            try:
                sql = []
                rollback_sql = []
                dataset = SqlOrder.objects.raw(
                    "select core_sqlorder.*,core_databaselist.connection_name,\
                    core_databaselist.computer_room from core_sqlorder INNER JOIN \
                    core_databaselist on core_sqlorder.bundle_id = core_databaselist.id \
                    WHERE core_sqlorder.id = %s" % order_id)
                data = util.ser(dataset)
                for i in info:
                    _data = SqlRecord.objects.filter(sequence=i).first()
                    roll = rollback.rollbackSQL(db=_data.backup_dbname, opid=i)
                    link = _data.backup_dbname + '.' + roll['tablename']
                    sql.append(rollback.roll(backdb=link, opid=i))
                for i in sql:
                    for c in i:
                        rollback_sql.append(c['rollback_statement'])
                rollback_sql = sorted(rollback_sql)
                if rollback_sql == []: return HttpResponse(status=500)
                rollback_sql = [{'sql': x} for x in rollback_sql]
                return Response({
                    'data': data[0],
                    'sql': rollback_sql,
                    'type': 1
                })
            except Exception as e:
                CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
                return HttpResponse(status=500)
Example #3
0
    def post(self, request, args: str = None):

        '''

        :argument 当工单执行后sql回滚功能接口api

        :param args: 根据获得order_id 返回对应的回滚sql

        :return: {'data': data[0], 'sql': rollback_sql, 'type': 1}

        '''

        try:
            order_id = request.data['id']
            info = list(set(json.loads(request.data['opid'])))
        except KeyError as e:
            CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
            return HttpResponse(status=500)
        else:
            try:
                sql = []
                rollback_sql = []
                for i in info:
                    info = SqlOrder.objects.raw(
                        "select core_sqlorder.*,core_databaselist.connection_name,\
                        core_databaselist.computer_room from core_sqlorder INNER JOIN \
                        core_databaselist on core_sqlorder.bundle_id = core_databaselist.id \
                        WHERE core_sqlorder.id = %s"
                        % order_id)
                    data = util.ser(info)
                    _data = SqlRecord.objects.filter(sequence=i).first()
                    roll = rollback.rollbackSQL(db=_data.backup_dbname, opid=i)
                    link = _data.backup_dbname + '.' + roll['tablename']
                    sql.append(rollback.roll(backdb=link, opid=i))
                for i in sql:
                    for c in i:
                        rollback_sql.append(c['rollback_statement'])
                rollback_sql = sorted(rollback_sql)
                if rollback_sql == []: return HttpResponse(status=500)
                rollback_sql = [{'sql': x} for x in rollback_sql]
                return Response({'data': data[0], 'sql': rollback_sql, 'type': 1})
            except Exception as e:
                CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}')
                return HttpResponse(status=500)