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

FFIB преди 4 години
родител
ревизия
39e17e712e
променени са 5 файла, в които са добавени 121 реда и са изтрити 6 реда
  1. 31 2
      api/course_register_views.py
  2. 1 0
      api/urls.py
  3. 7 2
      registration/admin.py
  4. 36 0
      registration/migrations/0007_auto_20210301_1824.py
  5. 46 2
      registration/models.py

+ 31 - 2
api/course_register_views.py

@@ -3,8 +3,9 @@
3 3
 from __future__ import division
4 4
 
5 5
 from django_response import response
6
+from paginator import pagination
6 7
 
7
-from registration.models import CourseRegisterInfo
8
+from registration.models import CourseRegisterInfo, UserCourseRegisterInfo
8 9
 
9 10
 
10 11
 def course_register(request):
@@ -14,6 +15,34 @@ def course_register(request):
14 15
     course_name = request.POST.get('course_name', '')
15 16
     fields = request.POST.get('fields', [])
16 17
 
17
-    CourseRegisterInfo.objects.create(user_id=user_id, field_id=field_id, course_id=course_id, course_name=course_name, fields=fields)
18
+    CourseRegisterInfo.objects.update_or_create(user_id=user_id, field_id=field_id, course_id=course_id, defaults={
19
+        'course_name': course_name,
20
+        'fields': fields,
21
+    })
22
+
23
+    registers = CourseRegisterInfo.objects.filter(user_id=user_id, course_id=course_id, status=True)
24
+    registers = [register.data for register in registers]
25
+
26
+    UserCourseRegisterInfo.objects.update_or_create(user_id, course_id, defaults={
27
+        'course_name': course_name,
28
+        'fields': registers,
29
+    })
18 30
 
19 31
     return response()
32
+
33
+
34
+def course_register_list(request):
35
+    course_id = request.POST.get('course_id', '')
36
+    page = request.POST.get('page', 1)
37
+    num = request.POST.get('num', 20)
38
+
39
+    registers = UserCourseRegisterInfo.objects.filter(course_id=course_id, status=True).order_by('-pk')
40
+    count = registers.count()
41
+    registers, left = pagination(registers, page, num)
42
+    registers = [register.data for register in registers]
43
+
44
+    return response(data={
45
+        'logs': registers,
46
+        'count': count,
47
+        'left': left,
48
+    })

+ 1 - 0
api/urls.py

@@ -56,4 +56,5 @@ urlpatterns += [
56 56
 
57 57
 urlpatterns += [
58 58
     url(r'^course/register$', course_register_views.course_register, name='course_register'),
59
+    url(r'^course/register/list$', course_register_views.course_register_list, name='course_register_list'),
59 60
 ]

+ 7 - 2
registration/admin.py

@@ -6,7 +6,7 @@ from django.contrib.auth.hashers import make_password
6 6
 
7 7
 from api.wx_views import get_course_field_limit_scene_qrcode_url
8 8
 from registration.models import (BranchCampusAdministratorInfo, BranchCampusInfo, CourseInfo, CourseRegisterFieldInfo,
9
-                                 CourseRegisterFieldPoolInfo, CourseRegisterInfo)
9
+                                 CourseRegisterFieldPoolInfo, CourseRegisterInfo, UserCourseRegisterInfo)
10 10
 
11 11
 
12 12
 class BranchCampusInfoAdmin(admin.ModelAdmin):
@@ -47,9 +47,14 @@ class CourseRegisterInfoAdmin(admin.ModelAdmin):
47 47
     list_display = ('user_id', 'field_id', 'course_id', 'course_name', 'fields', 'updated_at', 'created_at')
48 48
 
49 49
 
50
+class UserCourseRegisterInfoAdmin(admin.ModelAdmin):
51
+    list_display = ('user_id', 'course_id', 'course_name', 'fields', 'updated_at', 'created_at')
52
+
53
+
50 54
 admin.site.register(BranchCampusInfo, BranchCampusInfoAdmin)
51 55
 admin.site.register(BranchCampusAdministratorInfo, BranchCampusAdministratorInfoAdmin)
52 56
 admin.site.register(CourseInfo, CourseInfoAdmin)
57
+admin.site.register(CourseRegisterFieldPoolInfo, CourseRegisterFieldPoolInfoAdmin)
53 58
 admin.site.register(CourseRegisterFieldInfo, CourseRegisterFieldInfoAdmin)
54 59
 admin.site.register(CourseRegisterInfo, CourseRegisterInfoAdmin)
55
-admin.site.register(CourseRegisterFieldPoolInfo, CourseRegisterFieldPoolInfoAdmin)
60
+admin.site.register(UserCourseRegisterInfo, UserCourseRegisterInfoAdmin)

+ 36 - 0
registration/migrations/0007_auto_20210301_1824.py

@@ -0,0 +1,36 @@
1
+# Generated by Django 2.2.17 on 2021-03-01 10:24
2
+
3
+from django.db import migrations, models
4
+import jsonfield.fields
5
+
6
+
7
+class Migration(migrations.Migration):
8
+
9
+    dependencies = [
10
+        ('registration', '0006_courseinfo_authorities'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AlterUniqueTogether(
15
+            name='courseregisterinfo',
16
+            unique_together={('user_id', 'course_id', 'field_id')},
17
+        ),
18
+        migrations.CreateModel(
19
+            name='UserCourseRegisterInfo',
20
+            fields=[
21
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
22
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
23
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
24
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
25
+                ('user_id', models.CharField(blank=True, db_index=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')),
26
+                ('course_id', models.CharField(blank=True, db_index=True, help_text='课程唯一标识', max_length=32, null=True, verbose_name='course_id')),
27
+                ('course_name', models.CharField(blank=True, help_text='课程名称', max_length=255, null=True, verbose_name='course_name')),
28
+                ('fields', jsonfield.fields.JSONField(blank=True, default=[], help_text='字段信息', null=True, verbose_name='fields')),
29
+            ],
30
+            options={
31
+                'verbose_name': '用户课程报名信息',
32
+                'verbose_name_plural': '用户课程报名信息',
33
+                'unique_together': {('user_id', 'course_id')},
34
+            },
35
+        ),
36
+    ]

+ 46 - 2
registration/models.py

@@ -182,16 +182,60 @@ class CourseRegisterFieldInfo(BaseModelMixin):
182 182
 class CourseRegisterInfo(BaseModelMixin):
183 183
     user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True)
184 184
 
185
-    field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)
186
-
187 185
     course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
188 186
     course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
189 187
 
188
+    field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)
189
+
190 190
     fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
191 191
 
192 192
     class Meta:
193 193
         verbose_name = _('课程报名信息')
194 194
         verbose_name_plural = _('课程报名信息')
195 195
 
196
+        unique_together = (
197
+            ('user_id', 'course_id', 'field_id'),
198
+        )
199
+
200
+    def __unicode__(self):
201
+        return '%d' % self.pk
202
+
203
+    @property
204
+    def data(self):
205
+        return {
206
+            'field_id': self.field_id,
207
+            'course_id': self.course_id,
208
+            'course_name': self.course_name,
209
+            'fields': self.fields,
210
+        }
211
+
212
+
213
+class UserCourseRegisterInfo(BaseModelMixin):
214
+    user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识', db_index=True)
215
+
216
+    course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
217
+    course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
218
+
219
+    # {
220
+    #     'field_id': '',
221
+    #     'fields': []
222
+    # }
223
+    fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
224
+
225
+    class Meta:
226
+        verbose_name = _('用户课程报名信息')
227
+        verbose_name_plural = _('用户课程报名信息')
228
+
229
+        unique_together = (
230
+            ('user_id', 'course_id'),
231
+        )
232
+
196 233
     def __unicode__(self):
197 234
         return '%d' % self.pk
235
+
236
+    @property
237
+    def data(self):
238
+        return {
239
+            'user_id': self.user_id,
240
+            'fields': self.fields,
241
+        }