:art: UserCourseRegisterInfo

huangqimin001 преди 4 години
родител
ревизия
1f922baf2c
променени са 4 файла, в които са добавени 85 реда и са изтрити 6 реда
  1. 31 2
      api/course_register_views.py
  2. 1 0
      api/urls.py
  3. 7 2
      registration/admin.py
  4. 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)

+ 46 - 2
registration/models.py

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