def GenerateTableData(basename=None, name=None, signal=None): ''' :argument 生成表结构数据 ''' signal = int(signal) dic_data = SqlDictionary.objects.filter(BaseName=basename, Name=name).values('TableName') dic_data.query.group_by = ['TableName'] # 不重复表名 dic = [] if signal == 1 or signal is None: for i in dic_data[:signal * 3]: tmp = SqlDictionary.objects.filter(TableName=i['TableName'], BaseName=basename).all() serializers = SQLGeneratDic(tmp, many=True) dic.append(serializers.data) else: for i in dic_data[signal * 3 - 3:signal * 3]: tmp = SqlDictionary.objects.filter(TableName=i['TableName'], BaseName=basename).all() serializers = SQLGeneratDic(tmp, many=True) dic.append(serializers.data) return dic
def put(self, request, args: str = None): ''' :argument 生成, 删除字典 删除字段 添加字段 修改备注 修改表备注 添加表 删除表 ''' if args == 'Generation': # 一次性自动扫描数据库表结构并且把信息插入sqldic表 try: con_id = request.data['id'] basename = json.loads(request.data['basename']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: _connection = DatabaseList.objects.filter( id=con_id).first() for i in basename: if SqlDictionary.objects.filter( BaseName=i, Name=_connection.connection_name).first(): pass else: adminpremisson.DicGenerate(_connection, i) return HttpResponse('数据库字典生成成功!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'deldic': try: Name = request.data['name'] BaseName = request.data['basename'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: for i in BaseName: SqlDictionary.objects.filter(Name=Name, BaseName=i).delete() if SqlDictionary.objects.filter(Name=Name).first(): pass else: per = grained.objects.all().values( 'username', 'permissions') for i in per: for c in i['permissions']: if isinstance(i['permissions'][c], list) and c == 'diccon': i['permissions'][c] = list( filter(lambda x: x != Name, i['permissions'][c])) grained.objects.filter( username=i['username']).update( permissions=i['permissions']) return Response('字典已删除!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'delfield': try: data = json.loads(request.data['data']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: SqlDictionary.objects.filter(BaseName=data['basename'], TableName=data['tablename'], Name=data['name'], Field=data['field']).delete() return Response('%s 该字段已删除!' % data['field']) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'edittableinfo': try: basename = request.data['basename'] tablename = request.data['tablename'] name = request.data['name'] signal = request.data['hello'] comment = request.data['comment'] singleid = request.data['singleid'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if singleid == '0': SqlDictionary.objects.filter( BaseName=basename, TableName=tablename).update(TableComment=comment) tmp = adminpremisson.GenerateTableData( basename=basename, name=name, signal=signal) return Response(tmp) else: SqlDictionary.objects.filter( BaseName=basename, TableName=tablename).update(TableComment=comment) tmp = SqlDictionary.objects.filter( BaseName=basename, Name=name, TableName=tablename).all() serializers = SQLGeneratDic(tmp, many=True) return Response([serializers.data]) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return Response('%s 表备注更新失败,请联系cookie' % tablename) elif args == 'editfelid': try: basename = request.data['basename'] tablename = request.data['tablename'] comment = request.data['comment'] felid = request.data['felid'] name = request.data['name'] signal = request.data['hello'] singleid = request.data['singleid'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if singleid == '0': SqlDictionary.objects.filter( BaseName=basename, TableName=tablename, Field=felid).update(Extra=comment) tmp = adminpremisson.GenerateTableData( basename=basename, name=name, signal=signal) return Response(tmp) else: SqlDictionary.objects.filter( BaseName=basename, TableName=tablename, Field=felid).update(Extra=comment) tmp = SqlDictionary.objects.filter( BaseName=basename, Name=name, TableName=tablename).all() serializers = SQLGeneratDic(tmp, many=True) return Response([serializers.data]) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return Response('%s 表备注更新失败,请联系cookie' % felid) elif args == 'addtable': try: basename = request.data['basename'] tablename = request.data['tablename'] name = request.data['name'] text = json.loads(request.data['text']) tablecomment = request.data['tablecomment'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if tablename == '' or basename == '': return Response('请选择对应数据库后提交!') for i in text: SqlDictionary.objects.get_or_create( BaseName=basename, TableName=tablename, Field=i['value'], Type=i['type'], Name=name, Extra=i['extra'], TableComment=tablecomment) return Response('表数据已添加成功!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'deltable': try: basename = request.data['basename'] tablename = request.data['tablename'] ConnectionName = request.data['ConnectionName'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: SqlDictionary.objects.filter(BaseName=basename, TableName=tablename, Name=ConnectionName).delete() return Response('ok')
def put(self, request, args=None): if args == 'info': try: basename = request.data['basename'] name = request.data['name'] TableInfoPage = int(request.data['hello']) TableList = int(request.data['tablelist']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: DictionaryInfo = SqlDictionary.objects.filter( BaseName=basename, Name=name).values('TableName') DictionaryInfo.query.group_by = ['TableName'] # 不重复表名 all = [] for i in DictionaryInfo: tmp = SqlDictionary.objects.filter( TableName=i['TableName'], BaseName=basename).all() _serializers = SQLGeneratDic(tmp, many=True) all.append(_serializers.data) dic = [] for i in DictionaryInfo[TableInfoPage * 3 - 3:TableInfoPage * 3]: tmp = SqlDictionary.objects.filter( TableName=i['TableName'], BaseName=basename).all() _serializers = SQLGeneratDic(tmp, many=True) dic.append(_serializers.data) tablecomment = [] for i in DictionaryInfo[TableList * 10 - 10:TableList * 10]: tmp = SqlDictionary.objects.filter( TableName=i['TableName'], BaseName=basename, Name=name).values('TableComment') tmp.query.group_by = ['TableComment'] tablecomment.append({'table': i, 'comment': tmp}) return Response({ 'dic': dic, 'tablelist': tablecomment, 'tablepage': len(DictionaryInfo), 'all': all }) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'tablelist': try: basename = request.data['basename'] name = request.data['name'] TableList = int(request.data['tablelist']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: DictionaryInfo = SqlDictionary.objects.filter( BaseName=basename, Name=name).values('TableName') DictionaryInfo.query.group_by = ['TableName'] # 不重复表名 tablecomment = [] for i in DictionaryInfo[TableList * 10 - 10:TableList * 10]: tmp = SqlDictionary.objects.filter( TableName=i['TableName'], BaseName=basename, Name=name).values('TableComment') tmp.query.group_by = ['TableComment'] tablecomment.append({'table': i, 'comment': tmp}) return Response(tablecomment) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'single': try: basename = request.data['basename'] name = request.data['name'] tablename = request.data['tablename'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: tmp = SqlDictionary.objects.filter( BaseName=basename, Name=name, TableName=tablename).all() _serializers = SQLGeneratDic(tmp, many=True) return Response([_serializers.data]) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'datalist': try: basename = request.data['basename'] name = request.data['name'] signal = request.data['hello'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: tmp = adminpremisson.GenerateTableData(basename=basename, name=name, signal=signal) return Response(tmp) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'getdiclist': try: name = request.data['name'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: data = SqlDictionary.objects.filter( Name=name).values('BaseName') data.query.distinct = ['BaseName'] return Response(data) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500)
def put(self, request, args: str = None): if args == 'Generation': # 一次性自动扫描数据库表结构并且把信息插入sqldic表 try: id = request.data['id'] basename = json.loads(request.data['basename']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: for i in basename: if SqlDictionary.objects.filter(BaseName=i).first(): return HttpResponse('该数据库字典已存在,不可重复生成!') else: adminpremisson.DicGenerate(id, i) return HttpResponse('数据库字典生成成功!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'deldic': try: Name = request.data['name'] BaseName = request.data['basename'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: for i in BaseName: SqlDictionary.objects.filter(Name=Name, BaseName=i).delete() return Response('字典已删除!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'edittableinfo': try: basename = request.data['basename'] tablename = request.data['tablename'] name = request.data['name'] signal = request.data['hello'] comment = request.data['comment'] singleid = request.data['singleid'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if singleid == '0': SqlDictionary.objects.filter( BaseName=basename, TableName=tablename).update(TableComment=comment) tmp = adminpremisson.GenerateTableData( basename=basename, name=name, signal=signal) return Response(tmp) else: SqlDictionary.objects.filter( BaseName=basename, TableName=tablename).update(TableComment=comment) tmp = SqlDictionary.objects.filter( BaseName=basename, Name=name, TableName=tablename).all() serializers = SQLGeneratDic(tmp, many=True) return Response([serializers.data]) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return Response('%s 表备注更新失败,请联系cookie' % tablename) elif args == 'editfelid': try: basename = request.data['basename'] tablename = request.data['tablename'] comment = request.data['comment'] felid = request.data['felid'] name = request.data['name'] signal = request.data['hello'] singleid = request.data['singleid'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if singleid == '0': SqlDictionary.objects.filter( BaseName=basename, TableName=tablename, Field=felid).update(Extra=comment) tmp = adminpremisson.GenerateTableData( basename=basename, name=name, signal=signal) return Response(tmp) else: SqlDictionary.objects.filter( BaseName=basename, TableName=tablename, Field=felid).update(Extra=comment) tmp = SqlDictionary.objects.filter( BaseName=basename, Name=name, TableName=tablename).all() serializers = SQLGeneratDic(tmp, many=True) return Response([serializers.data]) except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return Response('%s 表备注更新失败,请联系cookie' % felid) elif args == 'addtable': try: basename = request.data['basename'] tablename = request.data['tablename'] name = request.data['name'] text = json.loads(request.data['text']) except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: try: if tablename == '' or basename == '': return Response('请选择对应数据库后提交!') for i in text: SqlDictionary.objects.get_or_create( BaseName=basename, TableName=tablename, Field=i['value'], Type=i['type'], Name=name, Extra=i['extra'], TableComment=i['tablecomment']) return Response('表数据已添加成功!') except Exception as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) elif args == 'deltable': try: basename = request.data['basename'] tablename = request.data['tablename'] ConnectionName = request.data['ConnectionName'] except KeyError as e: CUSTOM_ERROR.error(f'{e.__class__.__name__}: {e}') return HttpResponse(status=500) else: SqlDictionary.objects.filter(BaseName=basename, TableName=tablename, Name=ConnectionName).delete() return Response('ok')