Merge branch 'master' of http://git.xfoto.com.cn/Hanyuan/hanyuan

FFIB 3 lat temu
rodzic
commit
d7ca8dd4e4
3 zmienionych plików z 61 dodań i 4 usunięć
  1. 1 2
      api/branch_campus_views.py
  2. 2 2
      api/course_views.py
  3. 58 0
      commands/management/commands/sync_fields.py

+ 1 - 2
api/branch_campus_views.py

@@ -52,10 +52,9 @@ def delete_branch_campus(request):
52 52
 
53 53
     try:
54 54
         campus = BranchCampusInfo.objects.get(id=campus_id)
55
-    except:
55
+    except BranchCampusInfo.DoesNotExist:
56 56
         return response()
57 57
 
58
-
59 58
     if campus.campus_type == BranchCampusInfo.MAIN:
60 59
         return response(40001, '', '总院不可删除')
61 60
 

+ 2 - 2
api/course_views.py

@@ -6,7 +6,8 @@ from django_query import get_query_value
6 6
 from django_response import response
7 7
 from paginator import pagination
8 8
 
9
-from registration.models import BranchCampusAdministratorInfo, CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo, BranchCampusInfo
9
+from registration.models import (BranchCampusAdministratorInfo, BranchCampusInfo, CourseInfo, CourseRegisterFieldInfo,
10
+                                 CourseRegisterInfo)
10 11
 
11 12
 
12 13
 def add_course(request):
@@ -79,7 +80,6 @@ def get_course_list(request):
79 80
         admin = BranchCampusAdministratorInfo.objects.get(admin_id=admin_id, user_status=BranchCampusAdministratorInfo.ACTIVATED)
80 81
     except BranchCampusAdministratorInfo.DoesNotExist:
81 82
         admin = None
82
-    
83 83
 
84 84
     courses = CourseInfo.objects.filter(status=True)
85 85
     if admin and admin.data.get('campus_type', BranchCampusInfo.BRANCH) == BranchCampusInfo.BRANCH:

+ 58 - 0
commands/management/commands/sync_fields.py

@@ -0,0 +1,58 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+import copy
4
+import logging
5
+
6
+from django_six import CompatibilityBaseCommand
7
+
8
+from registration.models import (CourseRegisterFieldInfo, CourseRegisterFieldPoolInfo, CourseRegisterInfo,
9
+                                 UserCourseRegisterInfo)
10
+
11
+
12
+logger = logging.getLogger('console')
13
+
14
+
15
+class Command(CompatibilityBaseCommand):
16
+    def handle(self, *args, **options):
17
+
18
+        logger.info('Hanyuan sync fields is dealing')
19
+
20
+        fields = CourseRegisterFieldPoolInfo.objects.all()
21
+        fields = {field.field_key: field.data for field in fields}
22
+        print('>>> CourseRegisterFieldPoolInfo: ', fields, '\n')
23
+
24
+        course_register_field_infos = CourseRegisterFieldInfo.objects.all()
25
+        for course_register_field_info in course_register_field_infos:
26
+            course_fields = course_register_field_info.fields
27
+            new_course_fields = [fields.get(field.get('key')) or field for field in course_fields]
28
+            print('>>> CourseRegisterFieldInfo: ', new_course_fields)
29
+            if course_fields != new_course_fields:
30
+                print('>>> CourseRegisterFieldInfo: Changed')
31
+                course_register_field_info.fields = new_course_fields
32
+                course_register_field_info.save()
33
+
34
+        course_register_infos = CourseRegisterInfo.objects.all()
35
+        for course_register_info in course_register_infos:
36
+            course_fields = course_register_info.fields
37
+            new_course_fields = [{**field, **fields.get(field.get('key'), {})} for field in course_fields]
38
+            print('>>> CourseRegisterInfo: ', new_course_fields)
39
+            if course_fields != new_course_fields:
40
+                print('>>> CourseRegisterInfo: Changed')
41
+                course_register_info.fields = new_course_fields
42
+                course_register_info.save()
43
+
44
+        user_course_register_infos = UserCourseRegisterInfo.objects.all()
45
+        for user_course_register_info in user_course_register_infos:
46
+            course_fields = user_course_register_info.fields
47
+            new_course_fields = []
48
+            for course_field in course_fields:
49
+                course_fields_fields = course_field.get('fields') or []
50
+                new_course_fields_fields = [{**field, **fields.get(field.get('key'), {})} for field in course_fields_fields]
51
+                new_course_field = copy.deepcopy(course_field)
52
+                new_course_field['fields'] = new_course_fields_fields
53
+                new_course_fields.append(new_course_field)
54
+            print('>>> UserCourseRegisterInfo: ', new_course_fields)
55
+            if course_fields != new_course_fields:
56
+                print('>>> UserCourseRegisterInfo: Changed')
57
+                user_course_register_info.fields = new_course_fields
58
+                user_course_register_info.save()