From bdb7a9ec2dfaafb28667743339b84141da191ae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 7 Dec 2023 10:01:37 +0800 Subject: [PATCH 1/6] Update conf_e.py --- server/conf_e.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/conf_e.py b/server/conf_e.py index d24e00d0..cb5b416d 100644 --- a/server/conf_e.py +++ b/server/conf_e.py @@ -1,5 +1,6 @@ # 基本配置 SECRET_KEY = 'xxxxxx' +BASE_PROJECT_CODE = 'xxxxxx' # 一旦配置不要轻易改变 BASE_URL = 'http://127.0.0.1:8000' BASE_URL_IN = 'http://127.0.0.1:8000' BASE_URL_OUT = 'http://127.0.0.1:8000' @@ -13,6 +14,9 @@ EMAIL_USE_TLS = True # 数据库配置 +CACHE_LOCATION = "redis://127.0.0.1:6379/2" +CELERY_BROKER_URL = "redis://127.0.0.1:6379/3" +CELERY_TASK_DEFAULT_QUEUE = BASE_PROJECT_CODE DEBUG = True DATABASES = { 'default': { From 479eb91b99a78abdd99a6b6cd0b1b78290ba7ceb Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 21 Jan 2024 00:23:49 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20base=20=E5=A2=9E=E5=8A=A0=E6=9C=80?= =?UTF-8?q?=E5=A4=A7=E8=8E=B7=E5=8F=96=E5=88=97=E8=A1=A8=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/pagination.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/utils/pagination.py b/apps/utils/pagination.py index d437e4b3..cd1b1a0e 100755 --- a/apps/utils/pagination.py +++ b/apps/utils/pagination.py @@ -11,7 +11,7 @@ class MyPagination(PageNumberPagination): def paginate_queryset(self, queryset, request, view=None): if request.query_params.get('pageoff', None) or request.query_params.get('page', None) == '0': - if queryset.count() < 800: + if queryset.count() < 3000: return None raise ParseError('单次请求数据量大,请分页获取') return super().paginate_queryset(queryset, request, view=view) From 7973a0093bcd30ca1d3d0bb573826ef591711903 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 7 Dec 2023 09:37:54 +0800 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20base=20=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=AD=97=E5=85=B8=E5=8F=8A=E5=85=B6=E5=B5=8C?= =?UTF-8?q?=E5=A5=97=E5=86=85=E5=AE=B9=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/tools.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/apps/utils/tools.py b/apps/utils/tools.py index 18dc6661..7033a83d 100755 --- a/apps/utils/tools.py +++ b/apps/utils/tools.py @@ -9,10 +9,11 @@ import requests from io import BytesIO from rest_framework.serializers import ValidationError + def tran64(s): missing_padding = len(s) % 4 if missing_padding != 0: - s = s+'='* (4 - missing_padding) + s = s+'=' * (4 - missing_padding) return s @@ -202,4 +203,37 @@ def check_phone_e(phone): re_phone = r'^1\d{10}$' if not re.match(re_phone, phone): raise ValidationError('手机号格式错误') - return phone \ No newline at end of file + return phone + + +def compare_dicts(dict1, dict2, ignore_order=False): + if ignore_order: + for key in sorted(dict1.keys()): + if key not in dict2 or not compare_values(dict1[key], dict2[key], ignore_order): + return False + return True + else: + return dict1 == dict2 + + +def compare_lists_of_dicts(list1, list2, ignore_order=False): + """比较两个列表,这里的列表包含字典(对象)""" + if ignore_order: + # 转换列表中的字典为元组列表,然后排序进行比较 + sorted_list1 = sorted((tuple(sorted(d.items())) for d in list1)) + sorted_list2 = sorted((tuple(sorted(d.items())) for d in list2)) + return sorted_list1 == sorted_list2 + else: + # 按顺序比较列表中的字典 + return all(compare_dicts(obj1, obj2) for obj1, obj2 in zip(list1, list2)) + + +def compare_values(val1, val2, ignore_order=False): + """通用比较函数,也可以处理字典和列表。""" + if isinstance(val1, list) and isinstance(val2, list): + # 假设这里我们关心列表中对象的顺序 + return compare_lists_of_dicts(val1, val2, ignore_order) + elif isinstance(val1, dict) and isinstance(val2, dict): + return compare_dicts(val1, val2, ignore_order) + else: + return val1 == val2 From e4a258088b6ab347c8736c623ef928591d866c93 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 10 Jan 2024 10:11:43 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/system/views.py | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/apps/system/views.py b/apps/system/views.py index 63fc343f..49b40bca 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -40,7 +40,7 @@ from rest_framework.viewsets import GenericViewSet from cron_descriptor import get_description import locale from drf_yasg.utils import swagger_auto_schema -from server.settings import get_sysconfig, update_sysconfig +from server.settings import get_sysconfig, update_sysconfig, update_dict # logger.info('请求成功! response_code:{};response_headers:{}; # response_body:{}'.format(response_code, response_headers, response_body[:251])) @@ -692,7 +692,16 @@ class SysBaseConfigView(APIView): 获取系统基本信息 """ - config = get_sysconfig() + project_code = request.query_params.get('project_code', '') + if project_code: + from apps.develop.models import Project + try: + project = Project.objects.get(code=project_code) + config = project.config_json + except Project.DoesNotExist: + raise ParseError('项目不存在') + else: + config = get_sysconfig() base_dict = {key: config[key] for key in self.read_keys if key in config} return Response(base_dict) @@ -710,7 +719,21 @@ class SysConfigView(MyLoggingMixin, APIView): reload = False if request.query_params.get('reload', None): reload = True +<<<<<<< HEAD return Response(get_sysconfig(reload=reload)) +======= + project_code = request.query_params.get('project_code', '') + if project_code: + from apps.develop.models import Project + try: + project = Project.objects.get(code=project_code) + config = project.config_json + except Project.DoesNotExist: + raise ParseError('项目不存在') + else: + config = get_sysconfig(reload=reload) + return Response(config) +>>>>>>> 1eec1c2 (feat: base- 基于项目code返回或更改配置信息) @swagger_auto_schema(request_body=Serializer) def put(self, request, format=None): @@ -720,5 +743,17 @@ class SysConfigView(MyLoggingMixin, APIView): 修改config json """ data = request.data - update_sysconfig(data) + project_code = data.get('project_code', '') + if project_code: + from apps.develop.models import Project + try: + project = Project.objects.get(code=project_code) + config = project.config_json + new_config = update_dict(config, data) + project.config_json = new_config + project.save() + except Project.DoesNotExist: + raise ParseError('项目不存在') + else: + update_sysconfig(data) return Response() From 8e96afac4c80cb97564c0eba456a454a50275e76 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sun, 21 Jan 2024 22:30:38 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0gitignore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6f559e20..ac50f179 100755 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ celerybeat-schedule.bak celerybeat-schedule.dat celerybeat-schedule.dir db.sqlite3 +apps.zip server/conf.py server/conf.ini server/conf.json From fce6d86f075031595dafbfb798e67e6c2fa20557 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 10 Jan 2024 10:11:43 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20=E5=A4=84=E7=90=86=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/system/views.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/apps/system/views.py b/apps/system/views.py index 49b40bca..b6c7e4d6 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -719,9 +719,6 @@ class SysConfigView(MyLoggingMixin, APIView): reload = False if request.query_params.get('reload', None): reload = True -<<<<<<< HEAD - return Response(get_sysconfig(reload=reload)) -======= project_code = request.query_params.get('project_code', '') if project_code: from apps.develop.models import Project @@ -733,7 +730,6 @@ class SysConfigView(MyLoggingMixin, APIView): else: config = get_sysconfig(reload=reload) return Response(config) ->>>>>>> 1eec1c2 (feat: base- 基于项目code返回或更改配置信息) @swagger_auto_schema(request_body=Serializer) def put(self, request, format=None):