@@ -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 |
+ }) |
@@ -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 |
] |
@@ -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) |
@@ -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 |
+ ] |
@@ -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 |
+ } |