From 98506190b8d90eaefed11c11ecf344f4fc880203 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 09:45:37 +0800 Subject: [PATCH 01/12] add test.txt --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt diff --git a/test.txt b/test.txt new file mode 100644 index 0000000..e69de29 -- Gitee From 5caf9261a54783492b7817b4b97cf624720380e3 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 11:03:48 +0800 Subject: [PATCH 02/12] text1 --- a | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 a diff --git a/a b/a new file mode 100644 index 0000000..e69de29 -- Gitee From 63f6de0afd377027ea9ae9c8855f065bb7336e4c Mon Sep 17 00:00:00 2001 From: xudongliang <1049526151@qq.com> Date: Sun, 28 Apr 2019 11:08:36 +0800 Subject: [PATCH 03/12] add new file --- new_file.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 new_file.txt diff --git a/new_file.txt b/new_file.txt new file mode 100644 index 0000000..e69de29 -- Gitee From 8324c7cd7c5472f3c603f973aa5615c5fea56753 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:04:23 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6test.?= =?UTF-8?q?txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.txt diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000 -- Gitee From 43c64f09bd34d9bee29d9f7918d53232cbffae7b Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:05:14 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- a | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 a diff --git a/a b/a deleted file mode 100644 index e69de29..0000000 -- Gitee From 98123b844b85bb5f7afb508d94f444b667f22cde Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:05:21 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6manag?= =?UTF-8?q?e.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manage.py | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 manage.py diff --git a/manage.py b/manage.py deleted file mode 100644 index edcf256..0000000 --- a/manage.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -import os -import sys - -if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "boxuegu.settings") - try: - from django.core.management import execute_from_command_line - except ImportError: - # The above import may fail for some other reason. Ensure that the - # issue is really that Django is missing to avoid masking other - # exceptions on Python 2. - try: - import django - except ImportError: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) - raise - execute_from_command_line(sys.argv) -- Gitee From 4a1723c8f5d8987184304f93cf5d8b2c2f18bdb0 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:05:23 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6new?= =?UTF-8?q?=5Ffile.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- new_file.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 new_file.txt diff --git a/new_file.txt b/new_file.txt deleted file mode 100644 index e69de29..0000000 -- Gitee From 34fe17f961fabebcfa99a0d1de99ef7f226aefa6 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:06:54 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=9B=AE=E5=BD=95apps?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/courses/__init__.py | 1 - apps/courses/admin.py | 3 - apps/courses/adminx.py | 87 -------------- apps/courses/apps.py | 6 - apps/courses/migrations/0001_initial.py | 84 ------------- .../migrations/0002_auto_20170402_1713.py | 20 ---- .../migrations/0003_auto_20170404_2243.py | 20 ---- .../migrations/0004_auto_20170404_2248.py | 20 ---- .../migrations/0005_course_course_org.py | 22 ---- .../courses/migrations/0006_course_teacher.py | 22 ---- .../migrations/0007_course_is_banner.py | 20 ---- apps/courses/migrations/0008_bannercourse.py | 26 ---- apps/courses/migrations/__init__.py | 0 apps/courses/models.py | 111 ------------------ apps/courses/tests.py | 3 - apps/courses/urls.py | 5 - apps/courses/views.py | 0 apps/operation/__init__.py | 1 - apps/operation/admin.py | 3 - apps/operation/adminx.py | 44 ------- apps/operation/apps.py | 6 - apps/operation/migrations/0001_initial.py | 90 -------------- apps/operation/migrations/__init__.py | 0 apps/operation/models.py | 77 ------------ apps/operation/tests.py | 3 - apps/operation/views.py | 3 - apps/organization/__init__.py | 1 - apps/organization/admin.py | 3 - apps/organization/adminx.py | 26 ---- apps/organization/apps.py | 6 - apps/organization/forms.py | 34 ------ apps/organization/migrations/0001_initial.py | 68 ----------- .../migrations/0002_courseorg_category.py | 20 ---- .../migrations/0003_teacher_image.py | 20 ---- .../migrations/0004_auto_20170405_1203.py | 25 ---- .../migrations/0005_teacher_age.py | 20 ---- .../0006_remove_courseorg_course_nums.py | 19 --- .../migrations/0007_courseorg_tag.py | 20 ---- .../migrations/0008_auto_20170418_2339.py | 20 ---- apps/organization/migrations/__init__.py | 0 apps/organization/models.py | 79 ------------- apps/organization/tests.py | 3 - apps/organization/urls.py | 5 - apps/organization/views.py | 0 apps/users/__init__.py | 1 - apps/users/admin.py | 12 -- apps/users/adminx.py | 91 -------------- apps/users/apps.py | 6 - apps/users/forms.py | 57 --------- apps/users/migrations/0001_initial.py | 51 -------- .../0002_banner_emailverifyrecord.py | 45 ------- .../migrations/0003_auto_20170409_1014.py | 20 ---- apps/users/migrations/__init__.py | 0 apps/users/models.py | 63 ---------- apps/users/tests.py | 3 - apps/users/urls.py | 5 - apps/users/views.py | 0 apps/utils/__init__.py | 0 apps/utils/mixin_utils.py | 8 -- 59 files changed, 1408 deletions(-) delete mode 100644 apps/courses/__init__.py delete mode 100644 apps/courses/admin.py delete mode 100644 apps/courses/adminx.py delete mode 100644 apps/courses/apps.py delete mode 100644 apps/courses/migrations/0001_initial.py delete mode 100644 apps/courses/migrations/0002_auto_20170402_1713.py delete mode 100644 apps/courses/migrations/0003_auto_20170404_2243.py delete mode 100644 apps/courses/migrations/0004_auto_20170404_2248.py delete mode 100644 apps/courses/migrations/0005_course_course_org.py delete mode 100644 apps/courses/migrations/0006_course_teacher.py delete mode 100644 apps/courses/migrations/0007_course_is_banner.py delete mode 100644 apps/courses/migrations/0008_bannercourse.py delete mode 100644 apps/courses/migrations/__init__.py delete mode 100644 apps/courses/models.py delete mode 100644 apps/courses/tests.py delete mode 100644 apps/courses/urls.py delete mode 100644 apps/courses/views.py delete mode 100644 apps/operation/__init__.py delete mode 100644 apps/operation/admin.py delete mode 100644 apps/operation/adminx.py delete mode 100644 apps/operation/apps.py delete mode 100644 apps/operation/migrations/0001_initial.py delete mode 100644 apps/operation/migrations/__init__.py delete mode 100644 apps/operation/models.py delete mode 100644 apps/operation/tests.py delete mode 100644 apps/operation/views.py delete mode 100644 apps/organization/__init__.py delete mode 100644 apps/organization/admin.py delete mode 100644 apps/organization/adminx.py delete mode 100644 apps/organization/apps.py delete mode 100644 apps/organization/forms.py delete mode 100644 apps/organization/migrations/0001_initial.py delete mode 100644 apps/organization/migrations/0002_courseorg_category.py delete mode 100644 apps/organization/migrations/0003_teacher_image.py delete mode 100644 apps/organization/migrations/0004_auto_20170405_1203.py delete mode 100644 apps/organization/migrations/0005_teacher_age.py delete mode 100644 apps/organization/migrations/0006_remove_courseorg_course_nums.py delete mode 100644 apps/organization/migrations/0007_courseorg_tag.py delete mode 100644 apps/organization/migrations/0008_auto_20170418_2339.py delete mode 100644 apps/organization/migrations/__init__.py delete mode 100644 apps/organization/models.py delete mode 100644 apps/organization/tests.py delete mode 100644 apps/organization/urls.py delete mode 100644 apps/organization/views.py delete mode 100644 apps/users/__init__.py delete mode 100644 apps/users/admin.py delete mode 100644 apps/users/adminx.py delete mode 100644 apps/users/apps.py delete mode 100644 apps/users/forms.py delete mode 100644 apps/users/migrations/0001_initial.py delete mode 100644 apps/users/migrations/0002_banner_emailverifyrecord.py delete mode 100644 apps/users/migrations/0003_auto_20170409_1014.py delete mode 100644 apps/users/migrations/__init__.py delete mode 100644 apps/users/models.py delete mode 100644 apps/users/tests.py delete mode 100644 apps/users/urls.py delete mode 100644 apps/users/views.py delete mode 100644 apps/utils/__init__.py delete mode 100644 apps/utils/mixin_utils.py diff --git a/apps/courses/__init__.py b/apps/courses/__init__.py deleted file mode 100644 index 4bca724..0000000 --- a/apps/courses/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = "courses.apps.CoursesConfig" \ No newline at end of file diff --git a/apps/courses/admin.py b/apps/courses/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/apps/courses/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/apps/courses/adminx.py b/apps/courses/adminx.py deleted file mode 100644 index 5e61be7..0000000 --- a/apps/courses/adminx.py +++ /dev/null @@ -1,87 +0,0 @@ - - -import xadmin -from .models import Course, Lesson, Video, CourseResource, BannerCourse - -# 添加课程的时候可以顺便添加章节 -class LessonInline: - model = Lesson - extra = 0 - - -# 添加课程的时候可以顺便添加课程资源 -class CourseResourceInline: - model = CourseResource - extra = 0 - - -class CourseAdmin: - list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', - 'click_nums', 'add_time'] - search_fields = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', - 'click_nums'] - list_filter = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', 'click_nums', 'add_time'] - - ordering = ['-click_nums'] - - # readonly_fields 和 exclude 的字段不要重复,否则会冲突 - readonly_fields = ['click_nums'] - exclude = ['fav_nums'] - - #Inline # 添加课程的时候可以顺便添加章节、课程资源 - inlines = [LessonInline, CourseResourceInline] - - #重新在这里写一遍的原因是,避免数据重复 - def queryset(self): - qs = super(CourseAdmin, self).queryset() - qs = qs.filter(is_banner=False) - return qs - - -class BannerCourseAdmin(object): - list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', - 'click_nums', 'add_time'] - search_fields = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', - 'click_nums'] - list_filter = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', - 'click_nums', 'add_time'] - ordering = ['-click_nums'] - - # readonly_fields 和 exclude 的字段不要重复,否则会冲突 - readonly_fields = ['click_nums'] - exclude = ['fav_nums'] - - #Inline # 添加课程的时候可以顺便添加章节、课程资源 - inlines = [LessonInline, CourseResourceInline] - - #把轮播图从 User model 里转移到 Course model 里 - def queryset(self): - qs = super(BannerCourseAdmin, self).queryset() - qs = qs.filter(is_banner=True) - return qs - - -class LessonAdmin: - list_display = ['course', 'name', 'add_time'] - search_fields = ['course', 'name'] - # course 是一个对象,xadmin 不能搜索,需要指定搜索 course 对象里哪一个属性 - list_filter = ['course__name', 'name', 'add_time'] - - -class VideoAdmin: - list_display = ['lesson', 'name', 'add_time'] - search_fields = ['lesson', 'name'] - list_filter = ['lesson', 'name', 'add_time'] - - -class CourseResourceAdmin: - list_display = ['course', 'name', 'download', 'add_time'] - search_fields = ['course', 'name', 'download'] - list_filter = ['course__name', 'name', 'add_time'] - - -xadmin.site.register(Course, CourseAdmin) -xadmin.site.register(BannerCourse, BannerCourseAdmin) -xadmin.site.register(Lesson, LessonAdmin) -xadmin.site.register(Video, VideoAdmin) -xadmin.site.register(CourseResource, CourseResourceAdmin) diff --git a/apps/courses/apps.py b/apps/courses/apps.py deleted file mode 100644 index 88f6eab..0000000 --- a/apps/courses/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class CoursesConfig(AppConfig): - name = 'courses' - verbose_name = '课程管理' diff --git a/apps/courses/migrations/0001_initial.py b/apps/courses/migrations/0001_initial.py deleted file mode 100644 index 0a8f6b2..0000000 --- a/apps/courses/migrations/0001_initial.py +++ /dev/null @@ -1,84 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-01 09:11 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Course', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name='课程名')), - ('desc', models.CharField(max_length=300, verbose_name='课程描述')), - ('detail', models.TextField(verbose_name='课程详情')), - ('degree', models.CharField(choices=[('cj', '初级'), ('zj', '中级'), ('gj', '高级')], max_length=2, verbose_name='难度')), - ('learn_times', models.IntegerField(default=0, verbose_name='学习时长(分钟数)')), - ('study_num', models.IntegerField(default=0, verbose_name='学习人数')), - ('fav_nums', models.IntegerField(default=0, verbose_name='收藏人数')), - ('image', models.ImageField(upload_to='courses/%Y/%m', verbose_name='封面图')), - ('click_nums', models.IntegerField(default=0, verbose_name='点击数')), - ('category', models.CharField(default='后端', max_length=20, verbose_name='课程类别')), - ('tag', models.CharField(default='', max_length=10, verbose_name='课程标签')), - ('youneed_konw', models.CharField(default='', max_length=300, verbose_name='课前须知')), - ('teacher_tell', models.CharField(default='', max_length=300, verbose_name='老师告诉你能学什么')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ], - options={ - 'verbose_name_plural': '课程', - 'verbose_name': '课程', - }, - ), - migrations.CreateModel( - name='CourseResource', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100, verbose_name='课件名')), - ('download', models.FileField(upload_to='course/resource/%Y/%m', verbose_name='资源文件')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='课程')), - ], - options={ - 'verbose_name_plural': '课程资源', - 'verbose_name': '课程资源', - }, - ), - migrations.CreateModel( - name='Lesson', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100, verbose_name='章节名')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='课程')), - ], - options={ - 'verbose_name_plural': '章节', - 'verbose_name': '章节', - }, - ), - migrations.CreateModel( - name='Video', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=100, verbose_name='视频名')), - ('url', models.URLField(default='www.baidu.com', verbose_name='访问地址')), - ('learn_times', models.IntegerField(default=0, verbose_name='视频时长(分钟数)')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='章节')), - ], - options={ - 'verbose_name_plural': '视频', - 'verbose_name': '视频', - }, - ), - ] diff --git a/apps/courses/migrations/0002_auto_20170402_1713.py b/apps/courses/migrations/0002_auto_20170402_1713.py deleted file mode 100644 index 37541af..0000000 --- a/apps/courses/migrations/0002_auto_20170402_1713.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-02 17:13 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0001_initial'), - ] - - operations = [ - migrations.RenameField( - model_name='course', - old_name='study_num', - new_name='students', - ), - ] diff --git a/apps/courses/migrations/0003_auto_20170404_2243.py b/apps/courses/migrations/0003_auto_20170404_2243.py deleted file mode 100644 index 5ad1a68..0000000 --- a/apps/courses/migrations/0003_auto_20170404_2243.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-04 22:43 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0002_auto_20170402_1713'), - ] - - operations = [ - migrations.AlterField( - model_name='course', - name='name', - field=models.CharField(max_length=50, verbose_name='课程名字'), - ), - ] diff --git a/apps/courses/migrations/0004_auto_20170404_2248.py b/apps/courses/migrations/0004_auto_20170404_2248.py deleted file mode 100644 index a0d59ba..0000000 --- a/apps/courses/migrations/0004_auto_20170404_2248.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-04 22:48 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0003_auto_20170404_2243'), - ] - - operations = [ - migrations.AlterField( - model_name='course', - name='name', - field=models.CharField(max_length=52, verbose_name='课程名字'), - ), - ] diff --git a/apps/courses/migrations/0005_course_course_org.py b/apps/courses/migrations/0005_course_course_org.py deleted file mode 100644 index f514a3a..0000000 --- a/apps/courses/migrations/0005_course_course_org.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-06 14:22 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0004_auto_20170405_1203'), - ('courses', '0004_auto_20170404_2248'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='course_org', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='organization.CourseOrg', verbose_name='课程机构'), - ), - ] diff --git a/apps/courses/migrations/0006_course_teacher.py b/apps/courses/migrations/0006_course_teacher.py deleted file mode 100644 index 1cfd4a0..0000000 --- a/apps/courses/migrations/0006_course_teacher.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-07 13:42 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0004_auto_20170405_1203'), - ('courses', '0005_course_course_org'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='teacher', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='organization.Teacher', verbose_name='讲师'), - ), - ] diff --git a/apps/courses/migrations/0007_course_is_banner.py b/apps/courses/migrations/0007_course_is_banner.py deleted file mode 100644 index 971a09d..0000000 --- a/apps/courses/migrations/0007_course_is_banner.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-09 14:11 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0006_course_teacher'), - ] - - operations = [ - migrations.AddField( - model_name='course', - name='is_banner', - field=models.BooleanField(default=False, verbose_name='是否是轮播图'), - ), - ] diff --git a/apps/courses/migrations/0008_bannercourse.py b/apps/courses/migrations/0008_bannercourse.py deleted file mode 100644 index 7eca00f..0000000 --- a/apps/courses/migrations/0008_bannercourse.py +++ /dev/null @@ -1,26 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-05-25 15:44 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('courses', '0007_course_is_banner'), - ] - - operations = [ - migrations.CreateModel( - name='BannerCourse', - fields=[ - ], - options={ - 'verbose_name': '轮播课程', - 'verbose_name_plural': '轮播课程', - 'proxy': True, - }, - bases=('courses.course',), - ), - ] diff --git a/apps/courses/migrations/__init__.py b/apps/courses/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/courses/models.py b/apps/courses/models.py deleted file mode 100644 index 6c52a5a..0000000 --- a/apps/courses/models.py +++ /dev/null @@ -1,111 +0,0 @@ -from datetime import datetime - -from django.db import models - -from organization.models import CourseOrg, Teacher -# Create your models here. - - -class Course(models.Model): - """课程信息表""" - course_org = models.ForeignKey(CourseOrg, verbose_name='课程学校', null=True, blank=True) - name = models.CharField(max_length=52, verbose_name='课程名字') - desc = models.CharField(max_length=300, verbose_name='课程描述') - teacher = models.ForeignKey(Teacher, verbose_name='讲师', null=True, blank=True) - detail = models.TextField(verbose_name='课程详情') - degree = models.CharField(choices=(('cj', '初级'), ('zj', '中级'), ('gj', '高级')), max_length=2, verbose_name='难度') - # 使用分钟做后台记录(存储最小单位)前台转换 - learn_times = models.IntegerField(default=0, verbose_name='学习时长(分钟数)') - # 保存学习人数:点击开始学习才算 - students = models.IntegerField(default=0, verbose_name='学习人数') - fav_nums = models.IntegerField(default=0, verbose_name='收藏人数') - image = models.ImageField(upload_to='courses/%Y/%m', verbose_name='封面图', max_length=100) - click_nums = models.IntegerField(default=0, verbose_name='点击数') - is_banner = models.BooleanField(default=False, verbose_name=u'是否是轮播图') - category = models.CharField(default='后端', max_length=20, verbose_name='课程类别') - tag = models.CharField(default='', verbose_name='课程标签', max_length=10) - youneed_konw = models.CharField(default='', max_length=300, verbose_name='课前须知') - teacher_tell = models.CharField(default='', max_length=300, verbose_name='老师告诉你能学什么') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '课程' - verbose_name_plural = verbose_name - - def get_zj_nums(self): - # 获取课程章节数的方法 - return self.lesson_set.all().count() - - def get_learn_users(self): - # 获取学习这门课程的用户 - return self.usercourse_set.all()[:5] - - def get_course_lesson(self): - return self.lesson_set.all() - - def __str__(self): - return self.name - - -class BannerCourse(Course): - class Meta: - verbose_name = u'轮播课程' - verbose_name_plural = verbose_name - # 如果不设置 proxy ,就会再生成一个 BannerCourse 数据表 - proxy = True - - -# 章节信息 -class Lesson(models.Model): - """章节模型""" - # 因为一个课程对应很多章节。所以在章节表中将课程设置为外键。 - # 作为一个字段来让我们可以知道这个章节对应那个课程 - course = models.ForeignKey(Course, verbose_name='课程') - name = models.CharField(max_length=100, verbose_name='章节名') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '章节' - verbose_name_plural = verbose_name - - def get_lesson_video(self): - return self.video_set.all() - - def __str__(self): - return self.name - - -class Video(models.Model): - """每章视频""" - # 因为一个章节对应很多视频。所以在视频表中将章节设置为外键。 - # 作为一个字段来存储让我们可以知道这个视频对应哪个章节. - lesson = models.ForeignKey(Lesson, verbose_name='章节') - name = models.CharField(max_length=100, verbose_name='视频名') - url = models.URLField(max_length=200, verbose_name='访问地址', default='www.baidu.com') - # 使用分钟做后台记录(存储最小单位)前台转换 - learn_times = models.IntegerField(default=0, verbose_name='视频时长(分钟数)') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '视频' - verbose_name_plural = verbose_name - - def __str__(self): - return self.name - - -class CourseResource(models.Model): - """课程资源""" - # 因为一个课程对应很多资源。所以在课程资源表中将课程设置为外键。 - # 作为一个字段来让我们可以知道这个资源对应那个课程 - course = models.ForeignKey(Course, verbose_name='课程') - name = models.CharField(max_length=100, verbose_name='课件名') - download = models.FileField(upload_to='course/resource/%Y/%m', verbose_name='资源文件', max_length=100) - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = u'课程资源' - verbose_name_plural = verbose_name - - def __str__(self): - return self.name diff --git a/apps/courses/tests.py b/apps/courses/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/apps/courses/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/courses/urls.py b/apps/courses/urls.py deleted file mode 100644 index ba57aee..0000000 --- a/apps/courses/urls.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.conf.urls import url - -urlpatterns = [ - -] diff --git a/apps/courses/views.py b/apps/courses/views.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/operation/__init__.py b/apps/operation/__init__.py deleted file mode 100644 index be1f1a6..0000000 --- a/apps/operation/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = "operation.apps.OperationConfig" \ No newline at end of file diff --git a/apps/operation/admin.py b/apps/operation/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/apps/operation/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/apps/operation/adminx.py b/apps/operation/adminx.py deleted file mode 100644 index 950bc00..0000000 --- a/apps/operation/adminx.py +++ /dev/null @@ -1,44 +0,0 @@ - - -from .models import UserAsk, CourseComments, UserFavorite, UserMessage, UserCourse -import xadmin - - -class UserAskAdmin: - list_display = ['name', 'mobile', 'course_name', 'add_time'] - search_fields = ['name', 'mobile', 'course_name'] - list_filter = ['name', 'mobile', 'course_name', 'add_time'] - - -class CourseCommentsAdmin: - list_display = ['user', 'course', 'comments', 'add_time'] - search_fields = ['user', 'course', 'comments'] - list_filter = ['user__nick_name', 'course__name', 'comments', 'add_time'] - - -# 用户收藏 -class UserFavoriteAdmin: - list_display = ['user', 'fav_id', 'fav_type', 'add_time'] - search_fields = ['user', 'fav_id', 'fav_type'] - list_filter = ['user__nick_name', 'fav_id', 'fav_type', 'add_time'] - - -# 用户消息 -class UserMessageAdmin: - list_display = ['user', 'message', 'has_read', 'add_time'] - search_fields = ['user', 'message', 'has_read'] - # 这里的 user 不是 ForeignKey ,具体请看 models.py - list_filter = ['user', 'message', 'has_read', 'add_time'] - - -class UserCourseAdmin: - list_display = ['user', 'course', 'add_time'] - search_fields = ['user', 'course'] - list_filter = ['user__nick_name', 'course__name', 'add_time'] - - -xadmin.site.register(UserAsk, UserAskAdmin) -xadmin.site.register(CourseComments, CourseCommentsAdmin) -xadmin.site.register(UserFavorite, UserFavoriteAdmin) -xadmin.site.register(UserMessage, UserMessageAdmin) -xadmin.site.register(UserCourse, UserCourseAdmin) diff --git a/apps/operation/apps.py b/apps/operation/apps.py deleted file mode 100644 index 37bfabd..0000000 --- a/apps/operation/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class OperationConfig(AppConfig): - name = 'operation' - verbose_name = '用户操作' diff --git a/apps/operation/migrations/0001_initial.py b/apps/operation/migrations/0001_initial.py deleted file mode 100644 index 569146d..0000000 --- a/apps/operation/migrations/0001_initial.py +++ /dev/null @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-02 06:12 -from __future__ import unicode_literals - -import datetime -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('courses', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='CourseComments', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('comments', models.CharField(max_length=200, verbose_name='评论')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='课程')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')), - ], - options={ - 'verbose_name': '课程评论', - 'verbose_name_plural': '课程评论', - }, - ), - migrations.CreateModel( - name='UserAsk', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20, verbose_name='姓名')), - ('mobile', models.CharField(max_length=11, verbose_name='手机')), - ('course_name', models.CharField(max_length=50, verbose_name='课程名')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ], - options={ - 'verbose_name': '用户咨询', - 'verbose_name_plural': '用户咨询', - }, - ), - migrations.CreateModel( - name='UserCourse', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='课程')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')), - ], - options={ - 'verbose_name': '用户学习过的课程', - 'verbose_name_plural': '用户学习过的课程', - }, - ), - migrations.CreateModel( - name='UserFavorite', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('fav_id', models.IntegerField(default=0, verbose_name='收藏数据 Id')), - ('fav_type', models.IntegerField(choices=[(1, '课程'), (2, '课程机构'), (3, '讲师')], default=1, verbose_name='收藏类型')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户')), - ], - options={ - 'verbose_name': '用户收藏', - 'verbose_name_plural': '用户收藏', - }, - ), - migrations.CreateModel( - name='UserMessage', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('user', models.IntegerField(default=0, verbose_name='接受用户')), - ('message', models.CharField(max_length=500, verbose_name='消息内容')), - ('has_read', models.BooleanField(default=False, verbose_name='是否已读')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ], - options={ - 'verbose_name': '用户消息', - 'verbose_name_plural': '用户消息', - }, - ), - ] diff --git a/apps/operation/migrations/__init__.py b/apps/operation/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/operation/models.py b/apps/operation/models.py deleted file mode 100644 index 94a311f..0000000 --- a/apps/operation/models.py +++ /dev/null @@ -1,77 +0,0 @@ -from datetime import datetime - -from django.db import models - -# Create your models here. - -from users.models import UserProfile -from courses.models import Course - -class UserAsk(models.Model): - """用户我要学习表单""" - name = models.CharField(max_length=20, verbose_name='姓名') - mobile = models.CharField(max_length=11, verbose_name='手机') - course_name = models.CharField(max_length=50, verbose_name='课程名') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '用户咨询' - verbose_name_plural = verbose_name - - -class CourseComments(models.Model): - """用户对于课程评论""" - user = models.ForeignKey(UserProfile, verbose_name='用户') - course = models.ForeignKey(Course, verbose_name='课程') - comments = models.CharField(max_length=200, verbose_name='评论') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '课程评论' - verbose_name_plural = verbose_name - - -class UserFavorite(models.Model): - """用户对于课程,学校,讲师的收藏""" - user = models.ForeignKey(UserProfile, verbose_name='用户') - # ID 是课程的或者是 讲师、课程学校的 ID - fav_id = models.IntegerField(default=0, verbose_name='收藏数据 Id') - fav_type = models.IntegerField(choices=( (1, '课程'), (2, '课程学校'), (3, '讲师') ), default=1, verbose_name='收藏类型') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '用户收藏' - verbose_name_plural = verbose_name - - # 初始化判断是否收藏 - # has_fav = False - # if request.user.is_authenticated(): - # if UserProfile.objects.filter(user=request.user, fav_id=course_org.id, fav_type=2): - # has_fav = True - - -class UserMessage(models.Model): - """用户消息表""" - - # 如果 为 0 代表全局消息,否则就是用户的 ID - user = models.IntegerField(default=0, verbose_name='接受用户') - message = models.CharField(max_length=500, verbose_name='消息内容') - has_read = models.BooleanField(default=False, verbose_name='是否已读') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '用户消息' - verbose_name_plural = verbose_name - - -# CourseComments 和 UserCourse 字段差不多,可以使用 UserCourse 继承 CourseComments -class UserCourse(models.Model): - """用户课程表""" - user = models.ForeignKey(UserProfile, verbose_name='用户') - course = models.ForeignKey(Course, verbose_name='课程') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '用户学习过的课程' - verbose_name_plural = verbose_name - diff --git a/apps/operation/tests.py b/apps/operation/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/apps/operation/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/operation/views.py b/apps/operation/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/apps/operation/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/apps/organization/__init__.py b/apps/organization/__init__.py deleted file mode 100644 index 6c8cb02..0000000 --- a/apps/organization/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = "organization.apps.OrganizationConfig" \ No newline at end of file diff --git a/apps/organization/admin.py b/apps/organization/admin.py deleted file mode 100644 index 8c38f3f..0000000 --- a/apps/organization/admin.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.contrib import admin - -# Register your models here. diff --git a/apps/organization/adminx.py b/apps/organization/adminx.py deleted file mode 100644 index bcc5cb5..0000000 --- a/apps/organization/adminx.py +++ /dev/null @@ -1,26 +0,0 @@ - - -import xadmin -from .models import CityDict, CourseOrg, Teacher - - -class CityDictAdmin: - list_display = ['name', 'desc', 'add_time'] - search_fields = ['name', 'desc'] - list_filter = ['name', 'desc', 'add_time'] - - -class CourseOrgAdmin: - list_display = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time'] - search_fields = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city'] - list_filter = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city__name', 'add_time'] - - -class TeacherAdmin: - list_display = ['org', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time'] - search_fields = ['org', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums'] - list_filter = ['org__name', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time'] - -xadmin.site.register(CityDict, CityDictAdmin) -xadmin.site.register(CourseOrg, CourseOrgAdmin) -xadmin.site.register(Teacher, TeacherAdmin) diff --git a/apps/organization/apps.py b/apps/organization/apps.py deleted file mode 100644 index 70055e7..0000000 --- a/apps/organization/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class OrganizationConfig(AppConfig): - name = 'organization' - verbose_name = '学校管理' \ No newline at end of file diff --git a/apps/organization/forms.py b/apps/organization/forms.py deleted file mode 100644 index b050e1b..0000000 --- a/apps/organization/forms.py +++ /dev/null @@ -1,34 +0,0 @@ - - -import re - -from django import forms -from operation.models import UserAsk - - -# class UserAskForm(forms.Form): -# name = forms.CharField(required=True, min_length=2, max_length=20) -# phone = forms.CharField(required=True, min_length=11, max_length=11) -# course_name = forms.CharField(required=True, min_length=5, max_length=50) - - -class UserAskForm(forms.ModelForm): - # 还可以新增字段 - # price = forms.CharField(required=True, min_length=2, max_length=20) - - - class Meta: - model = UserAsk - fields = ['name', 'mobile', 'course_name'] - - - # def clean_name(self): - # def clean_course_name(self): - def clean_mobile(self): - # 手机号验证 - mobile = self.cleaned_data['mobile'] - p = re.compile('^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}') - if p.match(mobile): - # 这里还能返回外键 - return mobile - raise forms.ValidationError('手机号码格式不对', code='mobile_inval') diff --git a/apps/organization/migrations/0001_initial.py b/apps/organization/migrations/0001_initial.py deleted file mode 100644 index 87a8952..0000000 --- a/apps/organization/migrations/0001_initial.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-02 04:49 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='CityDict', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=20, verbose_name='城市')), - ('desc', models.TextField(verbose_name='城市描述')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ], - options={ - 'verbose_name': '城市', - 'verbose_name_plural': '城市', - }, - ), - migrations.CreateModel( - name='CourseOrg', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name='机构名称')), - ('desc', models.TextField(verbose_name='机构描述')), - ('click_nums', models.IntegerField(default=0, verbose_name='点击数')), - ('fav_nums', models.IntegerField(default=0, verbose_name='收藏数')), - ('image', models.ImageField(upload_to='org/%Y/%m', verbose_name='封面图')), - ('address', models.CharField(max_length=150, verbose_name='机构地址')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('city', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.CityDict', verbose_name='所在城市')), - ], - options={ - 'verbose_name': '课程机构', - 'verbose_name_plural': '课程机构', - }, - ), - migrations.CreateModel( - name='Teacher', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=50, verbose_name='教师名字')), - ('work_years', models.IntegerField(default=0, verbose_name='工作年限')), - ('work_company', models.CharField(max_length=50, verbose_name='就职公司')), - ('work_position', models.CharField(max_length=50, verbose_name='公司职位')), - ('points', models.CharField(max_length=50, verbose_name='教学特点')), - ('click_nums', models.IntegerField(default=0, verbose_name='点击数')), - ('fav_nums', models.IntegerField(default=0, verbose_name='收藏数')), - ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), - ('org', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='organization.CourseOrg', verbose_name='所属机构')), - ], - options={ - 'verbose_name': '教师', - 'verbose_name_plural': '教师', - }, - ), - ] diff --git a/apps/organization/migrations/0002_courseorg_category.py b/apps/organization/migrations/0002_courseorg_category.py deleted file mode 100644 index d45667d..0000000 --- a/apps/organization/migrations/0002_courseorg_category.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-04 22:23 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='courseorg', - name='category', - field=models.CharField(choices=[('pxjg', '培训机构'), ('gr', '个人'), ('gx', '高校')], default='pxjg', max_length=20, verbose_name='机构类别'), - ), - ] diff --git a/apps/organization/migrations/0003_teacher_image.py b/apps/organization/migrations/0003_teacher_image.py deleted file mode 100644 index e3e5161..0000000 --- a/apps/organization/migrations/0003_teacher_image.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-04 22:35 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0002_courseorg_category'), - ] - - operations = [ - migrations.AddField( - model_name='teacher', - name='image', - field=models.ImageField(default='', upload_to='teacher/%Y/%m', verbose_name='头像'), - ), - ] diff --git a/apps/organization/migrations/0004_auto_20170405_1203.py b/apps/organization/migrations/0004_auto_20170405_1203.py deleted file mode 100644 index 89667b9..0000000 --- a/apps/organization/migrations/0004_auto_20170405_1203.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-05 12:03 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0003_teacher_image'), - ] - - operations = [ - migrations.AddField( - model_name='courseorg', - name='course_nums', - field=models.IntegerField(default=0, verbose_name='课程数'), - ), - migrations.AddField( - model_name='courseorg', - name='students', - field=models.IntegerField(default=0, verbose_name='学习人数'), - ), - ] diff --git a/apps/organization/migrations/0005_teacher_age.py b/apps/organization/migrations/0005_teacher_age.py deleted file mode 100644 index 199a188..0000000 --- a/apps/organization/migrations/0005_teacher_age.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-08 17:28 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0004_auto_20170405_1203'), - ] - - operations = [ - migrations.AddField( - model_name='teacher', - name='age', - field=models.IntegerField(default=30, verbose_name='年龄'), - ), - ] diff --git a/apps/organization/migrations/0006_remove_courseorg_course_nums.py b/apps/organization/migrations/0006_remove_courseorg_course_nums.py deleted file mode 100644 index 4e0542f..0000000 --- a/apps/organization/migrations/0006_remove_courseorg_course_nums.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-09 10:52 -from __future__ import unicode_literals - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0005_teacher_age'), - ] - - operations = [ - migrations.RemoveField( - model_name='courseorg', - name='course_nums', - ), - ] diff --git a/apps/organization/migrations/0007_courseorg_tag.py b/apps/organization/migrations/0007_courseorg_tag.py deleted file mode 100644 index 97f26b8..0000000 --- a/apps/organization/migrations/0007_courseorg_tag.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-09 14:21 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0006_remove_courseorg_course_nums'), - ] - - operations = [ - migrations.AddField( - model_name='courseorg', - name='tag', - field=models.CharField(default='全国知名', max_length=10, verbose_name='机构标签'), - ), - ] diff --git a/apps/organization/migrations/0008_auto_20170418_2339.py b/apps/organization/migrations/0008_auto_20170418_2339.py deleted file mode 100644 index 6a3e412..0000000 --- a/apps/organization/migrations/0008_auto_20170418_2339.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-18 23:39 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('organization', '0007_courseorg_tag'), - ] - - operations = [ - migrations.AlterField( - model_name='courseorg', - name='image', - field=models.ImageField(default='', upload_to='org/%Y/%m', verbose_name='封面图'), - ), - ] diff --git a/apps/organization/migrations/__init__.py b/apps/organization/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/organization/models.py b/apps/organization/models.py deleted file mode 100644 index 5bee061..0000000 --- a/apps/organization/models.py +++ /dev/null @@ -1,79 +0,0 @@ -from datetime import datetime - -from django.db import models - -# Create your models here. - - -class CityDict(models.Model): - """城市字典""" - name = models.CharField(max_length=20, verbose_name='城市') - # 城市描述:备用不一定展示出来 - desc = models.TextField(verbose_name='城市描述') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '城市' - verbose_name_plural = verbose_name - - def __str__(self): - return self.name - - -class CourseOrg(models.Model): - """课程学校""" - name = models.CharField(max_length=50, verbose_name='学校名称') - # 学校类别: - category = models.CharField(max_length=20, choices=( ('pxjg', '培训学校'), ('gr', '个人'), ('gx', '高校') ), default='pxjg', verbose_name='学校类别' ) - # 学校描述,后面会替换为富文本展示 - desc = models.TextField(verbose_name='学校描述') - tag = models.CharField(default=u'全国知名', max_length=10, verbose_name=u'学校标签') - click_nums = models.IntegerField(default=0, verbose_name='点击数') - fav_nums = models.IntegerField(default=0, verbose_name='收藏数') - image = models.ImageField(default='', upload_to='org/%Y/%m', verbose_name='封面图', max_length=100) - address = models.CharField(max_length=150, verbose_name='学校地址') - # 一个城市可以有很多课程学校,通过将city设置外键,变成课程学校的一个字段 - # 可以让我们通过学校找到城市 - city = models.ForeignKey(CityDict, verbose_name='所在城市') - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - students = models.IntegerField(default=0, verbose_name='学习人数') - - class Meta: - verbose_name = '课程学校' - verbose_name_plural = verbose_name - - def get_teacher_nums(self): - return self.teacher_set.all().count() - - def course_nums(self): - return self.course_set.all().count() - - def __str__(self): - return self.name - - -class Teacher(models.Model): - """讲师""" - # 一个学校会有很多老师,所以我们在讲师表添加外键并把课程学校名称保存下来 - # 可以使我们通过讲师找到对应的学校 - org = models.ForeignKey(CourseOrg, verbose_name='所属学校') - name = models.CharField(max_length=50, verbose_name='教师名字') - work_years = models.IntegerField(default=0, verbose_name='工作年限') - work_company = models.CharField(max_length=50, verbose_name='就职公司') - work_position = models.CharField(max_length=50, verbose_name='公司职位') - points = models.CharField(max_length=50, verbose_name='教学特点') - click_nums = models.IntegerField(default=0, verbose_name='点击数') - fav_nums = models.IntegerField(default=0, verbose_name='收藏数') - age = models.IntegerField(default=30, verbose_name='年龄') - image = models.ImageField(default='', upload_to='teacher/%Y/%m', verbose_name='头像', max_length=100) - add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '教师' - verbose_name_plural = verbose_name - - def get_course_nums(self): - return self.course_set.all().count() - - def __str__(self): - return self.name diff --git a/apps/organization/tests.py b/apps/organization/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/apps/organization/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/organization/urls.py b/apps/organization/urls.py deleted file mode 100644 index ba57aee..0000000 --- a/apps/organization/urls.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.conf.urls import url - -urlpatterns = [ - -] diff --git a/apps/organization/views.py b/apps/organization/views.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/users/__init__.py b/apps/users/__init__.py deleted file mode 100644 index 5d64f7e..0000000 --- a/apps/users/__init__.py +++ /dev/null @@ -1 +0,0 @@ -default_app_config = "users.apps.UsersConfig" \ No newline at end of file diff --git a/apps/users/admin.py b/apps/users/admin.py deleted file mode 100644 index 918e311..0000000 --- a/apps/users/admin.py +++ /dev/null @@ -1,12 +0,0 @@ -from django.contrib import admin - -# Register your models here. - -from .models import UserProfile - - -class UserProfileAdmin(admin.ModelAdmin): - pass - - -admin.site.register(UserProfile, UserProfileAdmin) \ No newline at end of file diff --git a/apps/users/adminx.py b/apps/users/adminx.py deleted file mode 100644 index 4a20973..0000000 --- a/apps/users/adminx.py +++ /dev/null @@ -1,91 +0,0 @@ -# encoding: utf-8 -from courses.models import Course, Video, Lesson, CourseResource - - -import xadmin -from django.contrib.auth.models import Group, Permission - -from operation.models import CourseComments, UserFavorite, UserMessage, UserCourse, UserAsk -from organization.models import CityDict, Teacher, CourseOrg -from xadmin.models import Log - -# 和X admin的view绑定 -from xadmin import views - -from .models import EmailVerifyRecord, Banner, UserProfile - - -class BaseSetting(object): - """X admin的全局配置设置""" - # 主题功能开启 - enable_themes = True - use_bootswatch = True - - -class GlobalSettings(object): - """xadmin 全局配置参数信息设置""" - site_title = "博学谷后台管理站" - site_footer = "mtianyan's admin" - # 收起菜单 - # menu_style = "accordion" - - def get_site_menu(self): - return ( - {'title': '学校管理', 'menus': ( - {'title': '所在城市', 'url': self.get_model_url(CityDict, 'changelist')}, - {'title': '学校信息', 'url': self.get_model_url(CourseOrg, 'changelist')}, - {'title': '学校讲师', 'url': self.get_model_url(Teacher, 'changelist')}, - )}, - {'title': '课程管理', 'menus': ( - {'title': '课程信息', 'url': self.get_model_url(Course, 'changelist')}, - {'title': '章节信息', 'url': self.get_model_url(Lesson, 'changelist')}, - {'title': '视频信息', 'url': self.get_model_url(Video, 'changelist')}, - {'title': '课程资源', 'url': self.get_model_url(CourseResource, 'changelist')}, - {'title': '课程评论', 'url': self.get_model_url(CourseComments, 'changelist')}, - )}, - - {'title': '用户管理', 'menus': ( - {'title': '用户信息', 'url': self.get_model_url(UserProfile, 'changelist')}, - {'title': '用户验证', 'url': self.get_model_url(EmailVerifyRecord, 'changelist')}, - {'title': '用户课程', 'url': self.get_model_url(UserCourse, 'changelist')}, - {'title': '用户收藏', 'url': self.get_model_url(UserFavorite, 'changelist')}, - {'title': '用户消息', 'url': self.get_model_url(UserMessage, 'changelist')}, - )}, - - - {'title': '系统管理', 'menus': ( - {'title': '用户咨询', 'url': self.get_model_url(UserAsk, 'changelist')}, - {'title': '首页轮播', 'url': self.get_model_url(Banner, 'changelist')}, - {'title': '用户分组', 'url': self.get_model_url(Group, 'changelist')}, - {'title': '用户权限', 'url': self.get_model_url(Permission, 'changelist')}, - {'title': '日志记录', 'url': self.get_model_url(Log, 'changelist')}, - )}, - ) - - -class EmailVerifyRecordAdmin(object): - """创建admin的管理类,这里不再是继承admin,而是继承object""" - # 配置后台我们需要显示的列 - list_display = ['code', 'email', 'send_type', 'send_time'] - # 配置搜索字段,不做时间搜索 - search_fields = ['code', 'email', 'send_type'] - # 配置筛选字段 - list_filter = ['code', 'email', 'send_type', 'send_time'] - - -class BannerAdmin(object): - """创建banner的管理类""" - list_display = ['title', 'image', 'url', 'index', 'add_time'] - search_fields = ['title', 'image', 'url', 'index'] - list_filter = ['title', 'image', 'url', 'index', 'add_time'] - - -# 将model与admin管理器进行关联注册 -xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin) -xadmin.site.register(Banner, BannerAdmin) - -# 将Xadmin全局管理器与我们的view绑定注册。 -xadmin.site.register(views.BaseAdminView, BaseSetting) - -# 将头部与脚部信息进行注册: -xadmin.site.register(views.CommAdminView, GlobalSettings) diff --git a/apps/users/apps.py b/apps/users/apps.py deleted file mode 100644 index 7c95a8a..0000000 --- a/apps/users/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class UsersConfig(AppConfig): - name = 'users' - verbose_name = '用户信息' diff --git a/apps/users/forms.py b/apps/users/forms.py deleted file mode 100644 index 6919b26..0000000 --- a/apps/users/forms.py +++ /dev/null @@ -1,57 +0,0 @@ - -from django import forms -from captcha.fields import CaptchaField - -from .models import UserProfile - -class LoginForm(forms.Form): - """ - 登录表单 - """ - - username = forms.CharField(required=True) - password = forms.CharField(required=True, min_length=5) - - -class RegisterForm(forms.Form): - """ - 注册表单 - """ - - email = forms.EmailField(required=True) - password = forms.CharField(required=True, min_length=5) - captcha = CaptchaField(error_messages={'invalid': '验证码错误!'}) - - -class ForgetForm(forms.Form): - """ - 忘记密码表单 - """ - email = forms.EmailField(required=True) - captcha = CaptchaField(error_messages={'invalid': '验证码错误!'}) - - -class ModifyPwdForm(forms.Form): - """ - 验证两次密码表单 - """ - password1 = forms.CharField(required=True, min_length=5) - password2 = forms.CharField(required=True, min_length=5) - - -class UploadImageForm(forms.ModelForm): - """ - 上传图片验证表单 - """ - class Meta: - model = UserProfile - fields = ['image'] - - -class UserInfoForm(forms.ModelForm): - """ - 用户表单 - """ - class Meta: - model = UserProfile - fields = ['nick_name', 'gender', 'birthday', 'address', 'mobile'] \ No newline at end of file diff --git a/apps/users/migrations/0001_initial.py b/apps/users/migrations/0001_initial.py deleted file mode 100644 index d31196c..0000000 --- a/apps/users/migrations/0001_initial.py +++ /dev/null @@ -1,51 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-01 08:04 -from __future__ import unicode_literals - -import django.contrib.auth.models -import django.contrib.auth.validators -from django.db import migrations, models -import django.utils.timezone - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('auth', '0008_alter_user_username_max_length'), - ] - - operations = [ - migrations.CreateModel( - name='UserProfile', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), - ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), - ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')), - ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), - ('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')), - ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), - ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), - ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), - ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), - ('nick_name', models.CharField(default='', max_length=50, verbose_name='昵称')), - ('birthday', models.DateField(blank=True, null=True, verbose_name='生日')), - ('gender', models.CharField(choices=[('male', '男'), ('female', '女')], default='female', max_length=6, verbose_name='性别')), - ('address', models.CharField(default='', max_length=100, verbose_name='地址')), - ('mobile', models.CharField(blank=True, max_length=11, null=True, verbose_name='手机号')), - ('image', models.ImageField(default='image?default.png', upload_to='image/%Y/%m', verbose_name='头像')), - ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), - ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), - ], - options={ - 'verbose_name': '用户信息', - 'verbose_name_plural': '用户信息', - }, - managers=[ - ('objects', django.contrib.auth.models.UserManager()), - ], - ), - ] diff --git a/apps/users/migrations/0002_banner_emailverifyrecord.py b/apps/users/migrations/0002_banner_emailverifyrecord.py deleted file mode 100644 index 385d0cc..0000000 --- a/apps/users/migrations/0002_banner_emailverifyrecord.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-01 09:11 -from __future__ import unicode_literals - -import datetime -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='Banner', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('title', models.CharField(max_length=100, verbose_name='标题')), - ('image', models.ImageField(upload_to='banner/%Y/%m', verbose_name='轮播图')), - ('url', models.URLField(verbose_name='访问地址')), - ('index', models.IntegerField(default=100, verbose_name='顺序')), - ('add_time', models.DateField(default=datetime.datetime.now, verbose_name='添加时间')), - ], - options={ - 'verbose_name_plural': '轮播图', - 'verbose_name': '轮播图', - }, - ), - migrations.CreateModel( - name='EmailVerifyRecord', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=20, verbose_name='验证码')), - ('email', models.EmailField(max_length=50, verbose_name='邮箱')), - ('send_type', models.CharField(choices=[('register', '邮箱'), ('forget', '修改密码'), ('update_email', '修改密码')], max_length=18, verbose_name='验证码类型')), - ('send_time', models.DateField(default=datetime.datetime.now, verbose_name='发送时间')), - ], - options={ - 'verbose_name_plural': '邮箱验证码', - 'verbose_name': '邮箱验证码', - }, - ), - ] diff --git a/apps/users/migrations/0003_auto_20170409_1014.py b/apps/users/migrations/0003_auto_20170409_1014.py deleted file mode 100644 index ad1480e..0000000 --- a/apps/users/migrations/0003_auto_20170409_1014.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.10.5 on 2017-04-09 10:14 -from __future__ import unicode_literals - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0002_banner_emailverifyrecord'), - ] - - operations = [ - migrations.AlterField( - model_name='emailverifyrecord', - name='send_type', - field=models.CharField(choices=[('register', '邮箱'), ('forget', '修改密码'), ('update_email', '修改邮箱')], max_length=18, verbose_name='验证码类型'), - ), - ] diff --git a/apps/users/migrations/__init__.py b/apps/users/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/users/models.py b/apps/users/models.py deleted file mode 100644 index b41ef28..0000000 --- a/apps/users/models.py +++ /dev/null @@ -1,63 +0,0 @@ -from datetime import datetime - -from django.db import models - -from django.contrib.auth.models import AbstractUser -# Create your models here. - - -class UserProfile(AbstractUser): - # 用户信息 - # 昵称 - nick_name = models.CharField(max_length=50, verbose_name='昵称', default='') - # 生日,可以为空 - birthday = models.DateField(null=True, blank=True, verbose_name='生日') - # 性别 只能男或女,默认女 - gender = models.CharField(max_length=6, choices=(('male', '男'), ('female', '女')), default='female', verbose_name='性别') - # 地址 - address = models.CharField(max_length=100, default='', verbose_name='地址') - # 电话 - mobile = models.CharField(max_length=11, null=True, blank=True, verbose_name='手机号') - # 头像 默认使用default.png - image = models.ImageField(max_length=100, upload_to='image/%Y/%m', default='image?default.png', verbose_name='头像') - - class Meta: - verbose_name = '用户信息' - verbose_name_plural = verbose_name - - def get_unread_nums(self): - # 获取用户未读数据数量 - from operation.models import UserMessage - return UserMessage.objects.filter(user=self.id, has_read=False).count() - - def __str__(self): - return self.username - - -class EmailVerifyRecord(models.Model): - """邮箱验证码model""" - code = models.CharField(max_length=20, verbose_name='验证码') - email = models.EmailField(max_length=50, verbose_name='邮箱') - send_type = models.CharField(max_length=18, choices=(('register', '邮箱'), ('forget', '修改密码'), ('update_email', '修改邮箱')), - verbose_name='验证码类型') - send_time = models.DateField(default=datetime.now, verbose_name='发送时间') - - class Meta: - verbose_name = '邮箱验证码' - verbose_name_plural = '邮箱验证码' - - -class Banner(models.Model): - """轮播图模型类""" - title = models.CharField(max_length=100, verbose_name='标题') - image = models.ImageField(upload_to='banner/%Y/%m', max_length=100, verbose_name='轮播图') - url = models.URLField(max_length=200, verbose_name='访问地址') - index = models.IntegerField(default=100, verbose_name='顺序') - add_time = models.DateField(default=datetime.now, verbose_name='添加时间') - - class Meta: - verbose_name = '轮播图' - verbose_name_plural = verbose_name - - def __str__(self): - return self.title \ No newline at end of file diff --git a/apps/users/tests.py b/apps/users/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/apps/users/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/apps/users/urls.py b/apps/users/urls.py deleted file mode 100644 index f763ba6..0000000 --- a/apps/users/urls.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.conf.urls import url, include - -urlpatterns = [ - -] diff --git a/apps/users/views.py b/apps/users/views.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/utils/__init__.py b/apps/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/apps/utils/mixin_utils.py b/apps/utils/mixin_utils.py deleted file mode 100644 index d6c1b67..0000000 --- a/apps/utils/mixin_utils.py +++ /dev/null @@ -1,8 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.utils.decorators import method_decorator - - -class LoginRequiredMixin(object): - @method_decorator(login_required(login_url='/login/')) - def dispatch(self, request, *args, **kwargs): - return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs) -- Gitee From 3a173bc5d1ad256c2b7d0693bf4757387e32a99a Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:07:07 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6READM?= =?UTF-8?q?E.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ------------------------------------------------ 1 file changed, 48 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index 9c896a8..0000000 --- a/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# 优学在线 - -#### 介绍 -一个在线教育的网站,主要涉及学校、讲师、用户、课程的管理和展示 -系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。 -个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 -导航栏: 公开课,授课讲师,授课机构,全局搜索。 -点击公开课–> 课程列表,排序-搜索。热门课程推荐,课程的分页。 -点击课程–> 课程详情页中对课程进行收藏,取消收藏。富文本展示课程内容。 -点击开始学习–> 课程的章节信息,课程的评论信息。课程资源的下载链接。 -点击授课讲师–>授课讲师列表页,对讲师进行人气排序以及分页,右边有讲师排行榜。 -点击讲师的详情页面–> 对讲师进行收藏和分享,以及讲师的全部课程。 -导航栏: 授课学校有分页,排序筛选功能。 -学校列表页右侧有快速提交我要学习的表单。 -点击学校–> 左侧:学校首页,学校课程,学校介绍,学校讲师。 - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 码云特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file -- Gitee From c9d65521294bace5c8d8bbf9bac4453817aa4f1f Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:07:08 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6READM?= =?UTF-8?q?E.en.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 README.en.md diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 743e83b..0000000 --- a/README.en.md +++ /dev/null @@ -1,47 +0,0 @@ -# 优学在线 - -#### Description -一个在线教育的网站,主要涉及学校、讲师、用户、课程的管理和展示 -系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。 -个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。 -导航栏: 公开课,授课讲师,授课机构,全局搜索。 -点击公开课–> 课程列表,排序-搜索。热门课程推荐,课程的分页。 -点击课程–> 课程详情页中对课程进行收藏,取消收藏。富文本展示课程内容。 -点击开始学习–> 课程的章节信息,课程的评论信息。课程资源的下载链接。 -点击授课讲师–>授课讲师列表页,对讲师进行人气排序以及分页,右边有讲师排行榜。 -点击讲师的详情页面–> 对讲师进行收藏和分享,以及讲师的全部课程。 -导航栏: 授课学校有分页,排序筛选功能。 -学校列表页右侧有快速提交我要学习的表单。 -点击学校–> 左侧:学校首页,学校课程,学校介绍,学校讲师。 - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file -- Gitee From 696b9e5f31aeafadcc9db8db5021d0d6da1e68e6 Mon Sep 17 00:00:00 2001 From: xyx_x <1101410957@qq.com> Date: Sun, 28 Apr 2019 15:07:16 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6LICEN?= =?UTF-8?q?SE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 4d7ca8b..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 xyx_x - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -- Gitee From 3f2f4631f9dda21a3d30f8bf9e680f0623c22400 Mon Sep 17 00:00:00 2001 From: gao Date: Sun, 28 Apr 2019 15:19:37 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asd.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 asd.txt diff --git a/asd.txt b/asd.txt new file mode 100644 index 0000000..e69de29 -- Gitee