:art: registration

huangqimin001 4 ans auparavant
Parent
Commettre
bfba2ba12a

+ 1 - 0
hanyuan/settings.py

@@ -56,6 +56,7 @@ INSTALLED_APPS = [
56 56
     'django_we',
57 57
     'commands',
58 58
     'api',
59
+    'registration',
59 60
 ]
60 61
 
61 62
 MIDDLEWARE = [

+ 0 - 0
registration/__init__.py


+ 32 - 0
registration/admin.py

@@ -0,0 +1,32 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.contrib import admin
4
+
5
+from registration.models import BranchCampusInfo, BranchCampusAdministratorInfo, CourseInfo, CourseRegisterFieldInfo, CourseRegisterInfo
6
+
7
+
8
+class BranchCampusInfoAdmin(admin.ModelAdmin):
9
+    list_display = ('campus_id', 'campus_name', 'updated_at', 'created_at')
10
+
11
+
12
+class BranchCampusAdministratorInfoAdmin(admin.ModelAdmin):
13
+    list_display = ('admin_id', 'campus_id', 'campus_name', 'name', 'phone', 'user_status', 'updated_at', 'created_at')
14
+
15
+
16
+class CourseInfoAdmin(admin.ModelAdmin):
17
+    list_display = ('course_id', 'course_name', 'updated_at', 'created_at')
18
+
19
+
20
+class CourseRegisterFieldInfoAdmin(admin.ModelAdmin):
21
+    list_display = ('field_id', 'course_id', 'course_name', 'fields', 'updated_at', 'created_at')
22
+
23
+
24
+class CourseRegisterInfoAdmin(admin.ModelAdmin):
25
+    list_display = ('field_id', 'course_id', 'course_name', 'fields', 'updated_at', 'created_at')
26
+
27
+
28
+admin.site.register(BranchCampusInfo, BranchCampusInfoAdmin)
29
+admin.site.register(BranchCampusAdministratorInfo, BranchCampusAdministratorInfoAdmin)
30
+admin.site.register(CourseInfo, CourseInfoAdmin)
31
+admin.site.register(CourseRegisterFieldInfo, CourseRegisterFieldInfoAdmin)
32
+admin.site.register(CourseRegisterInfo, CourseRegisterInfoAdmin)

+ 5 - 0
registration/apps.py

@@ -0,0 +1,5 @@
1
+from django.apps import AppConfig
2
+
3
+
4
+class RegistrationConfig(AppConfig):
5
+    name = 'registration'

+ 99 - 0
registration/migrations/0001_initial.py

@@ -0,0 +1,99 @@
1
+# Generated by Django 2.2.17 on 2021-02-03 22:02
2
+
3
+from django.db import migrations, models
4
+import jsonfield.fields
5
+import shortuuidfield.fields
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    initial = True
11
+
12
+    dependencies = [
13
+    ]
14
+
15
+    operations = [
16
+        migrations.CreateModel(
17
+            name='BranchCampusAdministratorInfo',
18
+            fields=[
19
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
21
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
22
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
23
+                ('admin_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='管理员唯一标识', max_length=22, null=True, unique=True)),
24
+                ('campus_id', models.CharField(blank=True, db_index=True, help_text='分院唯一标识', max_length=32, null=True, verbose_name='campus_id')),
25
+                ('campus_name', models.CharField(blank=True, help_text='分院名称', max_length=255, null=True, verbose_name='campus_name')),
26
+                ('name', models.CharField(blank=True, help_text='管理员姓名', max_length=255, null=True, verbose_name='name')),
27
+                ('phone', models.CharField(blank=True, db_index=True, help_text='管理员电话', max_length=11, null=True, verbose_name='phone')),
28
+                ('user_status', models.IntegerField(choices=[(0, '待审核'), (1, '已激活'), (2, '已禁用'), (3, '已删除')], db_index=True, default=0, help_text='管理员状态', verbose_name='user_status')),
29
+            ],
30
+            options={
31
+                'verbose_name': '分院管理员信息',
32
+                'verbose_name_plural': '分院管理员信息',
33
+            },
34
+        ),
35
+        migrations.CreateModel(
36
+            name='BranchCampusInfo',
37
+            fields=[
38
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
39
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
40
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
41
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
42
+                ('campus_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='分院唯一标识', max_length=22, null=True, unique=True)),
43
+                ('campus_name', models.CharField(blank=True, help_text='分院名称', max_length=255, null=True, verbose_name='campus_name')),
44
+            ],
45
+            options={
46
+                'verbose_name': '分院信息',
47
+                'verbose_name_plural': '分院信息',
48
+            },
49
+        ),
50
+        migrations.CreateModel(
51
+            name='CourseInfo',
52
+            fields=[
53
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
54
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
55
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
56
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
57
+                ('course_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='课程唯一标识', max_length=22, null=True, unique=True)),
58
+                ('course_name', models.CharField(blank=True, help_text='课程名称', max_length=255, null=True, verbose_name='course_name')),
59
+            ],
60
+            options={
61
+                'verbose_name': '课程信息',
62
+                'verbose_name_plural': '课程信息',
63
+            },
64
+        ),
65
+        migrations.CreateModel(
66
+            name='CourseRegisterFieldInfo',
67
+            fields=[
68
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
69
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
70
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
71
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
72
+                ('field_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='字段唯一标识', max_length=22, null=True, unique=True)),
73
+                ('course_id', models.CharField(blank=True, db_index=True, help_text='课程唯一标识', max_length=32, null=True, verbose_name='course_id')),
74
+                ('course_name', models.CharField(blank=True, help_text='课程名称', max_length=255, null=True, verbose_name='course_name')),
75
+                ('fields', jsonfield.fields.JSONField(blank=True, default=[], help_text='字段列表', null=True, verbose_name='fields')),
76
+            ],
77
+            options={
78
+                'verbose_name': '课程报名字段信息',
79
+                'verbose_name_plural': '课程报名字段信息',
80
+            },
81
+        ),
82
+        migrations.CreateModel(
83
+            name='CourseRegisterInfo',
84
+            fields=[
85
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
86
+                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
87
+                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
88
+                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
89
+                ('field_id', models.CharField(blank=True, db_index=True, help_text='字段唯一标识', max_length=32, null=True, verbose_name='field_id')),
90
+                ('course_id', models.CharField(blank=True, db_index=True, help_text='课程唯一标识', max_length=32, null=True, verbose_name='course_id')),
91
+                ('course_name', models.CharField(blank=True, help_text='课程名称', max_length=255, null=True, verbose_name='course_name')),
92
+                ('fields', jsonfield.fields.JSONField(blank=True, default=[], help_text='字段信息', null=True, verbose_name='fields')),
93
+            ],
94
+            options={
95
+                'verbose_name': '课程报名信息',
96
+                'verbose_name_plural': '课程报名信息',
97
+            },
98
+        ),
99
+    ]

+ 0 - 0
registration/migrations/__init__.py


+ 100 - 0
registration/models.py

@@ -0,0 +1,100 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.db import models
4
+from django.utils.translation import ugettext_lazy as _
5
+from django_models_ext import BaseModelMixin
6
+from jsonfield import JSONField
7
+from shortuuidfield import ShortUUIDField
8
+
9
+
10
+class BranchCampusInfo(BaseModelMixin):
11
+    campus_id = ShortUUIDField(_('campus_id'), max_length=32, blank=True, null=True, help_text='分院唯一标识', db_index=True, unique=True)
12
+    campus_name = models.CharField(_('campus_name'), max_length=255, blank=True, null=True, help_text='分院名称')
13
+
14
+    class Meta:
15
+        verbose_name = _('分院信息')
16
+        verbose_name_plural = _('分院信息')
17
+
18
+    def __unicode__(self):
19
+        return '%d' % self.pk
20
+
21
+
22
+class BranchCampusAdministratorInfo(BaseModelMixin):
23
+    PENDING = 0
24
+    ACTIVATED = 1
25
+    DISABLED = 2
26
+    DELETED = 3
27
+
28
+    USER_STATUS_TUPLE = (
29
+        (PENDING, '待审核'),
30
+        (ACTIVATED, '已激活'),
31
+        (DISABLED, '已禁用'),
32
+        (DELETED, '已删除'),
33
+    )
34
+
35
+    admin_id = ShortUUIDField(_('admin_id'), max_length=32, blank=True, null=True, help_text='管理员唯一标识', db_index=True, unique=True)
36
+
37
+    campus_id = models.CharField(_('campus_id'), max_length=32, blank=True, null=True, help_text='分院唯一标识', db_index=True)
38
+    campus_name = models.CharField(_('campus_name'), max_length=255, blank=True, null=True, help_text='分院名称')
39
+
40
+    name = models.CharField(_('name'), max_length=255, blank=True, null=True, help_text='管理员姓名')
41
+    phone = models.CharField(_('phone'), max_length=11, blank=True, null=True, help_text='管理员电话', db_index=True)
42
+
43
+    user_status = models.IntegerField(_('user_status'), choices=USER_STATUS_TUPLE, default=PENDING, help_text='管理员状态', db_index=True)
44
+
45
+    class Meta:
46
+        verbose_name = _(u'分院管理员信息')
47
+        verbose_name_plural = _(u'分院管理员信息')
48
+
49
+    def __unicode__(self):
50
+        return '%d' % self.pk
51
+
52
+
53
+class CourseInfo(BaseModelMixin):
54
+    course_id = ShortUUIDField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True, unique=True)
55
+    course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
56
+    # TODO:权限
57
+
58
+    class Meta:
59
+        verbose_name = _('课程信息')
60
+        verbose_name_plural = _('课程信息')
61
+
62
+    def __unicode__(self):
63
+        return '%d' % self.pk
64
+
65
+
66
+class CourseRegisterFieldInfo(BaseModelMixin):
67
+    field_id = ShortUUIDField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True, unique=True)
68
+
69
+    course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
70
+    course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
71
+
72
+    # {
73
+    #     "type": "input",  # input, select, file
74
+    #     "name": "",
75
+    #     "options": ["男", "女"],  # type=select
76
+    # }
77
+    fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段列表')
78
+
79
+    class Meta:
80
+        verbose_name = _('课程报名字段信息')
81
+        verbose_name_plural = _('课程报名字段信息')
82
+
83
+    def __unicode__(self):
84
+        return '%d' % self.pk
85
+
86
+
87
+class CourseRegisterInfo(BaseModelMixin):
88
+    field_id = models.CharField(_('field_id'), max_length=32, blank=True, null=True, help_text='字段唯一标识', db_index=True)
89
+
90
+    course_id = models.CharField(_('course_id'), max_length=32, blank=True, null=True, help_text='课程唯一标识', db_index=True)
91
+    course_name = models.CharField(_('course_name'), max_length=255, blank=True, null=True, help_text='课程名称')
92
+
93
+    fields = JSONField(_('fields'), default=[], blank=True, null=True, help_text='字段信息')
94
+
95
+    class Meta:
96
+        verbose_name = _('课程报名信息')
97
+        verbose_name_plural = _('课程报名信息')
98
+
99
+    def __unicode__(self):
100
+        return '%d' % self.pk

+ 3 - 0
registration/tests.py

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

+ 3 - 0
registration/views.py

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