">
+from registration.models import CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo
9
+
10
+
11
+def add_course(request):
12
+    course_name = request.POST.get('course_name', '')
13
+
14
+    course = CourseInfo.objects.create(course_name=course_name)
15
+
16
+    return response(data={
17
+        'course_id': course.course_id,
18
+    })
19
+
20
+
21
+def update_course(request):
22
+    course_id = request.POST.get('course_id', '')
23
+    course_name = request.POST.get('course_name', '')
24
+
25
+    CourseInfo.objects.filter(course_id=course_id).update(course_name=course_name)
26
+    CourseRegisterFieldInfo.objects.filter(course_id=course_id).update(course_name=course_name)
27
+    CourseRegisterInfo.objects.filter(course_id=course_id).update(course_name=course_name)
28
+
29
+    return response()
30
+
31
+
32
+def get_course_list(request):
33
+    page = request.POST.get('page', 1)
34
+    num = request.POST.get('num', 20)
35
+
36
+    course = CourseInfo.objects.filter(status=True)
37
+    count = course.count()
38
+    course, left = pagination(course, page, num)
39
+    course = [c.data for c in course]
40
+
41
+    return response(data={
42
+        'course': course,
43
+        'count': count,
44
+        'left': left,
45
+    })
46
+
47
+
48
+def delete_course(request):
49
+    course_id = request.POST.get('course_id', '')
50
+
51
+    CourseInfo.objects.filter(course_id=course_id).update(statue=False)
52
+
53
+    return response()

+ 32 - 3
api/urls.py

@@ -2,14 +2,43 @@
2 2
 
3 3
 from django.conf.urls import url
4 4
 
5
-from api import oauth_views, wx_views
5
+from api import branch_campus_admin_views, branch_campus_views, course_field_views, course_views, oauth_views, wx_views
6 6
 
7 7
 
8 8
 urlpatterns = [
9
+    url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'),
10
+    url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'),
11
+]
12
+
13
+urlpatterns += [
9 14
     url(r'^get_limit_scene_qrcode_url$', wx_views.get_limit_scene_qrcode_url, name='get_limit_scene_qrcode_url'),
10 15
 ]
11 16
 
12 17
 urlpatterns += [
13
-    url(r'^3rd/or$', oauth_views.oauth_redirect, name='3rd_or'),
14
-    url(r'^3rd/oauth_redirect$', oauth_views.oauth_redirect, name='3rd_oauth_redirect'),
18
+    url(r'^branch/campus/add$', branch_campus_views.add_branch_campus, name='add_branch_campus'),
19
+    url(r'^branch/campus/update$', branch_campus_views.update_branch_campus, name='update_branch_campus'),
20
+    url(r'^branch/campus/list$', branch_campus_views.get_branch_campus_list, name='get_branch_campus_list'),
21
+    url(r'^branch/campus/delete$', branch_campus_views.delete_branch_campus, name='delete_branch_campus'),
22
+]
23
+
24
+urlpatterns += [
25
+    url(r'^branch/campus/admin/add$', branch_campus_admin_views.add_branch_campus_admin, name='add_branch_campus_admin'),
26
+    url(r'^branch/campus/update$', branch_campus_admin_views.update_branch_campus_admin, name='update_branch_campus_admin'),
27
+    url(r'^branch/campus/list$', branch_campus_admin_views.get_branch_campus_admin_list, name='get_branch_campus_admin_list'),
28
+    url(r'^branch/campus/delete$', branch_campus_admin_views.delete_branch_campus_admin, name='delete_branch_campus_admin'),
29
+]
30
+
31
+urlpatterns += [
32
+    url(r'^course/add$', course_views.add_course, name='add_course'),
33
+    url(r'^course/update$', course_views.update_course, name='update_course'),
34
+    url(r'^course/list$', course_views.get_course_list, name='get_course_list'),
35
+    url(r'^course/delete$', course_views.delete_course, name='delete_course'),
36
+]
37
+
38
+urlpatterns += [
39
+    url(r'^course/field/add$', course_field_views.add_course_field, name='add_course_field'),
40
+    url(r'^course/field/update$', course_field_views.update_course_field, name='update_course_field'),
41
+    url(r'^course/field/get$', course_field_views.get_course_field, name='get_course_field'),
42
+    url(r'^course/field/list$', course_field_views.get_course_field_list, name='get_course_field_list'),
43
+    url(r'^course/field/delete$', course_field_views.delete_course_field, name='delete_course_field'),
15 44
 ]

+ 15 - 0
api/wx_views.py

@@ -28,3 +28,18 @@ def get_limit_scene_qrcode_url(request):
28 28
     return response(data={
29 29
         'qrurl': qrurl,
30 30
     })
31
+
32
+
33
+def get_course_field_limit_scene_qrcode_url(scene):
34
+    if not scene:
35
+        return ''
36
+
37
+    JSAPI = settings.WECHAT.get('JSAPI', {})
38
+
39
+    appid = JSAPI.get('appID', '')
40
+    appsecret = JSAPI.get('appsecret', '')
41
+
42
+    qrinfo = qrcode_limit_str_scene(scene_str=scene, appid=appid, secret=appsecret, storage=RedisStorage(r))
43
+    qrurl = qrcode_url(qrinfo.get('ticket'))
44
+
45
+    return qrurl

+ 2 - 1
registration/admin.py

@@ -2,7 +2,8 @@
2 2
 
3 3
 from django.contrib import admin
4 4
 
5
-from registration.models import BranchCampusInfo, BranchCampusAdministratorInfo, CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo
5
+from registration.models import (BranchCampusAdministratorInfo, BranchCampusInfo, CourseInfo, CourseRegisterFieldInfo,
6
+                                 CourseRegisterInfo)
6 7
 
7 8
 
8 9
 class BranchCampusInfoAdmin(admin.ModelAdmin):

+ 18 - 0
registration/migrations/0002_courseregisterfieldinfo_limit_scene_qrcode_url.py

@@ -0,0 +1,18 @@
1
+# Generated by Django 2.2.17 on 2021-02-03 23:13
2
+
3
+from django.db import migrations, models
4
+
5
+
6
+class Migration(migrations.Migration):
7
+
8
+    dependencies = [
9
+        ('registration', '0001_initial'),
10
+    ]
11
+
12
+    operations = [
13
+        migrations.AddField(
14
+            model_name='courseregisterfieldinfo',
15
+            name='limit_scene_qrcode_url',
16
+            field=models.CharField(blank=True, help_text='字段二维码', max_length=255, null=True, verbose_name='limit_scene_qrcode_url'),
17
+        ),
18
+    ]

+ 36 - 0
registration/models.py

@@ -18,6 +18,13 @@ class BranchCampusInfo(BaseModelMixin):
18 18
     def __unicode__(self):
19 19
         return '%d' % self.pk
20 20
 
21
+    @property
22
+    def data(self):
23
+        return {
24
+            'campus_id': self.campus_id,
25
+            'campus_name': self.campus_name,
26
+        }
27
+
21 28
 
22 29
 class BranchCampusAdministratorInfo(BaseModelMixin):
23 30
     PENDING = 0
@@ -49,6 +56,17 @@ class BranchCampusAdministratorInfo(BaseModelMixin):
49 56
     def __unicode__(self):
50 57
         return '%d' % self.pk
51 58
 
59
+    @property
60
+    def data(self):
61
+        return {
62
+            'admin_id': self.admin_id,
63
+            'campus_id': self.campus_id,
64
+            'campus_name': self.campus_name,
65
+            'name': self.name,
66
+            'phone': self.phone,
67
+            'user_status': self.user_status,
68
+        }
69
+
52 70
 
53 71
 class CourseInfo(BaseModelMixin):
54 72
     course_id = ShortUUIDField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True, unique=True)
@@ -62,6 +80,13 @@ class CourseInfo(BaseModelMixin):
62 80
     def __unicode__(self):
63 81
         return '%d' % self.pk
64 82
 
83
+    @property
84
+    def data(self):
85
+        return {
86
+            'course_id': self.course_id,
87
+            'course_name': self.course_name,
88
+        }
89
+
65 90
 
66 91
 class CourseRegisterFieldInfo(BaseModelMixin):
67 92
     field_id = ShortUUIDField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True, unique=True)
@@ -76,6 +101,8 @@ class CourseRegisterFieldInfo(BaseModelMixin):
76 101
     # }
77 102
     fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段列表')
78 103
 
104
+    limit_scene_qrcode_url = models.CharField(_('limit_scene_qrcode_url'), max_length=255, blank=True, null=True, help_text='字段二维码')
105
+
79 106
     class Meta:
80 107
         verbose_name = _('课程报名字段信息')
81 108
         verbose_name_plural = _('课程报名字段信息')
@@ -83,6 +110,15 @@ class CourseRegisterFieldInfo(BaseModelMixin):
83 110
     def __unicode__(self):
84 111
         return '%d' % self.pk
85 112
 
113
+    @property
114
+    def data(self):
115
+        return {
116
+            'field_id': self.field_id,
117
+            'course_id': self.course_id,
118
+            'course_name': self.course_name,
119
+            'fields': self.fields,
120
+        }
121
+
86 122
 
87 123
 class CourseRegisterInfo(BaseModelMixin):
88 124
     field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)

+ 1 - 0
registration/tests.py

@@ -1,3 +1,4 @@
1 1
 from django.test import TestCase
2 2
 
3
+
3 4
 # Create your tests here.

+ 1 - 0
registration/views.py

@@ -1,3 +1,4 @@
1 1
 from django.shortcuts import render
2 2
 
3
+
3 4
 # Create your views here.

+ 1 - 0
requirements_dj.txt

@@ -10,6 +10,7 @@ django-redis-connector==1.0.3
10 10
 django-response==1.1.1
11 11
 django-rlog==1.0.7
12 12
 django-short-url==1.1.4
13
+django-shortuuidfield==0.1.3
13 14
 django-six==1.0.4
14 15
 django-uniapi==1.0.10
15 16
 django-we==1.5.5

kodo - Gogs: Go Git Service

Nav apraksta

FFIB: c19cbf5477 url add admin 4 gadi atpakaļ
account c01f5a3b5b :art: Add coupon_expire_at 5 gadi atpakaļ
api c19cbf5477 url add admin 4 gadi atpakaļ
commands 945761de88 :art: Conpon2 5 gadi atpakaļ
coupon e7da55aaf2 :art: Add complement_code 5 gadi atpakaļ
docs 212e3994d1 MP verify file 9 gadi atpakaļ
guideline 88b564d033 fix coercing to Unicode: need string or buffer, long found 5 gadi atpakaļ
integral 020c5c128d :art: everyday_continue_send_user_coupon 5 gadi atpakaļ
kodo e7b8e3d83c 更新函院的thumb_media_id 4 gadi atpakaļ
logs 33468847a7 fix bug: operator_name decode 5 gadi atpakaļ
maintenance e683ad2315 express_list maintenance_list 排序 4 gadi atpakaļ
marketcode 88b564d033 fix coercing to Unicode: need string or buffer, long found 5 gadi atpakaļ
mch 1b420a2fba ConsumeInfoSubmitLogInfo adminuserdata 新增返回 model_id 4 gadi atpakaļ
member aa2144ebb6 :art: RightInfoAdmin 5 gadi atpakaļ
miniapp 1244a5a931 :art: Update MEMBER_CARD_ID_TAMRON 5 gadi atpakaļ
operation e7da55aaf2 :art: Add complement_code 5 gadi atpakaļ
page 15fb258bf3 Merge branch 'tamron' of http://git.xfoto.com.cn/Kodo/kodo into tamron 5 gadi atpakaļ
pre 8082cb995c :art: Custom Message 4 gadi atpakaļ
sales 88b564d033 fix coercing to Unicode: need string or buffer, long found 5 gadi atpakaļ
server 018d52f61d Update package django_xxx 8 gadi atpakaļ
shells 6270484a89 :art: fix_user_coupon_info 5 gadi atpakaļ
simditor 3e9628d0c9 iSort & Pycodestyle 5 gadi atpakaļ
staff e7da55aaf2 :art: Add complement_code 5 gadi atpakaļ
statistic 88b564d033 fix coercing to Unicode: need string or buffer, long found 5 gadi atpakaļ
utils 77224d884a :art: Support maintenance_tracking_info_subscribe 4 gadi atpakaļ
website 597ee33ba6 Pai2 => Kodo 8 gadi atpakaļ
.editorconfig 4defb80fdc gogs first init 10 gadi atpakaļ
.gitignore 4ce7f5c87b :art: Member Relative APIs 6 gadi atpakaļ
.isort.cfg afcdf74a49 add api group_data_api 10 gadi atpakaļ
TODO.md d31ffaa118 Update TODO 9 gadi atpakaļ
check.sh 95c1d32792 put isort and pep8 in check.sh 10 gadi atpakaļ
isort.sh 3e9628d0c9 iSort & Pycodestyle 5 gadi atpakaļ
manage.py 597ee33ba6 Pai2 => Kodo 8 gadi atpakaļ
pep8.sh 511533855d Change oauth to use http 8 gadi atpakaļ
requirements.txt 22a8246c88 :art: init_express_company 4 gadi atpakaļ
requirements_deploy.txt 873b42cb2f :art: TimeConvert local_string utc_dt 6 gadi atpakaļ
requirements_dev.txt 926f0ef06a Update requirements_xxx.txt 8 gadi atpakaļ
requirements_dj.txt fccbd76d05 :art: Update requirement.txt 5 gadi atpakaļ
requirements_pywe.txt 4239c95bdf :art: Update requirements.txt 5 gadi atpakaļ
requirements_redis.txt 4239c95bdf :art: Update requirements.txt 5 gadi atpakaļ
sysctl.sh 34c6774438 Opt 7 gadi atpakaļ