From fa3c42ac353d69ddcd95cb000d79471d00c7d7f4 Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 21 Sep 2017 12:10:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D1=81=D0=B2=D0=B5=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=B1=D1=80=D0=B0=D1=88=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BA=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8=20=D1=8E=D0=B7?= =?UTF-8?q?=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- courses/models.py | 10 +++++----- journals/models.py | 40 ++++++++++++++++++++-------------------- library/models.py | 9 ++++----- management/models.py | 29 +++++++++++++++-------------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/courses/models.py b/courses/models.py index 836852c..ef1ba6d 100755 --- a/courses/models.py +++ b/courses/models.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- import datetime +from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models from redactor.fields import RedactorField -from access.models import User from courses.templates import search_in_collection, LEVELS_COLLECTION, MATERIAL_TYPE_COLLECTION, material_fabric, \ comment_fabric from library.models import Tags @@ -36,7 +36,7 @@ class MaterialDirection(models.Model): title = models.CharField(verbose_name=u'Заголовок', max_length=255) color = models.CharField(verbose_name=u'Цвет', max_length=50) description = RedactorField(verbose_name=u'Описание', blank=True) - mentors = models.ManyToManyField(User, verbose_name=u'Кураторы') + mentors = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Кураторы') def __unicode__(self): return u'%s' % self.title @@ -78,7 +78,7 @@ class Course(models.Model): slug = models.SlugField(max_length=255, editable=False, blank=True, default='', unique=True) icon = models.ImageField(verbose_name=u'Иконка курса', blank=True, null=True, upload_to='course') direction = models.ForeignKey(MaterialDirection, verbose_name=u'Направление', null=True) - mentors = models.ManyToManyField(User, verbose_name=u'Кураторы', blank=True, related_name='course_mentors') + mentors = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Кураторы', blank=True, related_name='course_mentors') public = models.BooleanField(verbose_name=u'Опубликовать', default=False) title = models.CharField(verbose_name=u"Заголовок", max_length=255) description = RedactorField(verbose_name=u'Описание', blank=True) @@ -88,7 +88,7 @@ class Course(models.Model): help_text=u'Большая картинка для мобильной версии') page = models.URLField(verbose_name=u'Страничка описания', blank=True, default='') preview = models.CharField(verbose_name=u'Трэйл', blank=True, default='', max_length=255) - teachers = models.ManyToManyField(User, verbose_name=u'Преподаватели', related_name='course_teachers') + teachers = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватели', related_name='course_teachers') sort = models.IntegerField(verbose_name=u'Порядок сортировки', default=0) use_fail = models.BooleanField(verbose_name=u'Использовать фейковую информацию', default=False) basic_len = models.IntegerField(verbose_name=u'Основных модулей', default=0) @@ -219,7 +219,7 @@ class Course(models.Model): class CourseTheme(models.Model): on_comment = models.BooleanField(verbose_name=u'Блок комментариев', default=True) - teachers = models.ManyToManyField(User, verbose_name=u'Преподаватели', blank=True) + teachers = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватели', blank=True) price_type = models.CharField(verbose_name=u'Тип подписки', choices=MATERIALS_TYPE, default='B', max_length=1) _type = models.CharField(verbose_name=u'Тип темы', choices=THEME_TYPE, default='B', max_length=2) icon = models.ImageField(verbose_name=u'Иконка темы', upload_to='CourseTheme', null=True, blank=True) diff --git a/journals/models.py b/journals/models.py index 5885238..b8cc4a9 100755 --- a/journals/models.py +++ b/journals/models.py @@ -4,12 +4,12 @@ import datetime import os from django.conf import settings +from django.contrib.auth import get_user_model from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models from django.db.models import Q -from access.models import User from courses.models import CourseTheme, Lesson, Homework, Exam, Achievements, Course, CourseMap, \ AchievementsMap, \ Diploma @@ -34,14 +34,14 @@ class TeacherJ(models.Model): ('F', u'Завершен') ) status = models.CharField(verbose_name=u'Статус', choices=TJSTATUS, default='O', max_length=1) - student = models.ForeignKey(User, verbose_name=u'Студент', related_name=u'teacherJ_student', null=True, blank=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', related_name=u'teacherJ_student', null=True, blank=True) full = models.BooleanField(verbose_name=u'Журнал создан', default=False) course = models.ForeignKey(Course, verbose_name=u'Курс') homework = models.ForeignKey(Homework, verbose_name=u'ДЗ', blank=True, null=True) lesson = models.ForeignKey(Lesson, verbose_name=u'Урок', blank=True, null=True) progress = models.IntegerField(verbose_name=u'Прогресс', default=0) current_token = models.CharField(verbose_name=u'Текущий ключ', blank=True, default='', max_length=100) - teacher = models.ForeignKey(User, verbose_name=u'Преподаватель', related_name=u'teacherJ_teacher', blank=True, + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватель', related_name=u'teacherJ_teacher', blank=True, null=True) start_date = models.DateTimeField(verbose_name=u'Дата начала', blank=True, null=True) opens = models.ManyToManyField(CourseMap, verbose_name=u'Насильные открытия', blank=True, editable=False, @@ -184,7 +184,7 @@ class TeacherJ(models.Model): return self.teacher else: if self.student and self.student.in_role != 'U': - return User.objects.get(email=TEACHER) + return get_user_model().objects.get(email=TEACHER) teachers = self.course.teachers.all() if len(teachers) == 1: return teachers.first() @@ -244,7 +244,7 @@ class CourseThemeJ(models.Model): # Журнал темы set_open = models.BooleanField(verbose_name=u'Насильно открыть доступ', default=False) success = models.BooleanField(verbose_name=u'Закончено', default=False) - student = models.ForeignKey(User, verbose_name=u'Студент', null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', null=True) parent = models.ForeignKey(TeacherJ, verbose_name=u'Журнал преподавания', blank=True, null=True, editable=False) material = models.ForeignKey(CourseTheme, verbose_name=u'Тема') date = models.DateTimeField(verbose_name=u'Дата начала', blank=True, null=True) @@ -461,7 +461,7 @@ class CourseThemeJ(models.Model): class LessonJ(models.Model): # Журнал урока set_open = models.BooleanField(verbose_name=u'Насильно открыть доступ', default=False) - student = models.ForeignKey(User, verbose_name=u'Студент', null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', null=True) success = models.BooleanField(verbose_name=u'Пройдено', default=False) material = models.ForeignKey(Lesson, verbose_name=u'Урок') parent = models.ForeignKey(CourseThemeJ, verbose_name=u'Журнал темы', blank=True, null=True, editable=False) @@ -691,8 +691,8 @@ class HomeworkJ(models.Model): # Журнал сдачи работы set_open = models.BooleanField(verbose_name=u'Насильно открыть доступ', default=False) success = models.BooleanField(verbose_name=u'Закончено', default=False) - student = models.ForeignKey(User, verbose_name=u'Студент', related_name='h_student', null=True) - teacher = models.ForeignKey(User, verbose_name=u'Экзаменатор', related_name='h_teacher', blank=True, null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', related_name='h_student', null=True) + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Экзаменатор', related_name='h_teacher', blank=True, null=True) material = models.ForeignKey(Homework, verbose_name=u'Домашнее задание') parent = models.ForeignKey(CourseThemeJ, verbose_name=u'Журнал темы', blank=True, null=True, editable=False) date = models.DateTimeField(verbose_name=u'Дата предоставления доступа', null=True, blank=True) @@ -935,9 +935,9 @@ class HomeworkTry(models.Model): # Попытка сдачи экзамена parent = models.ForeignKey(HomeworkJ, verbose_name=u'Журнал', blank=True, null=True, editable=False) material = models.ForeignKey(Homework, verbose_name=u'Домашнее задание') - student = models.ForeignKey(User, verbose_name=u'Студент', related_name='h_t_student') - teacher = models.ForeignKey(User, verbose_name=u'Преподаватель', related_name='h_t_teacher', blank=True, null=True) - new_teach = models.ForeignKey(User, verbose_name=u'Новый преподаватель', related_name='h_t_new_teacher', blank=True, null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', related_name='h_t_student') + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватель', related_name='h_t_teacher', blank=True, null=True) + new_teach = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Новый преподаватель', related_name='h_t_new_teacher', blank=True, null=True) date = models.DateTimeField(verbose_name=u'Начало', default=datetime.datetime.now) f_date = models.DateTimeField(verbose_name=u'Завершение', blank=True, null=True) success = models.BooleanField(verbose_name=u'Одобрено', default=False) @@ -1074,8 +1074,8 @@ class ExamJ(models.Model): success = models.BooleanField(verbose_name=u'Пройдено', default=False) material = models.ForeignKey(Exam, verbose_name=u'Экзамен', null=True) parent = models.ForeignKey(CourseThemeJ, verbose_name=u'Журнал', blank=True, null=True, editable=False) - student = models.ForeignKey(User, verbose_name=u'Экзаменуемый', related_name='e_student', null=True) - teacher = models.ForeignKey(User, verbose_name=u'Экзаменатор', related_name='e_teacher', blank=True, null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Экзаменуемый', related_name='e_student', null=True) + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Экзаменатор', related_name='e_teacher', blank=True, null=True) date = models.DateTimeField(verbose_name=u'Дата', null=True, blank=True) f_date = models.DateTimeField(verbose_name=u'Дата завершения', blank=True, null=True) @@ -1285,8 +1285,8 @@ class ExamTry(models.Model): # Попытка сдачи экзамена parent = models.ForeignKey(ExamJ, verbose_name=u'Журнал', blank=True, null=True, editable=False) material = models.ForeignKey(Exam, verbose_name=u'Экзамен') - student = models.ForeignKey(User, verbose_name=u'Студент', related_name='e_t_student') - teacher = models.ForeignKey(User, verbose_name=u'Преподаватель', related_name='e_t_teacher', blank=True, null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', related_name='e_t_student') + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватель', related_name='e_t_teacher', blank=True, null=True) date = models.DateTimeField(verbose_name=u'Начало', default=datetime.datetime.now) f_date = models.DateTimeField(verbose_name=u'Завершение', blank=True, null=True) success = models.BooleanField(verbose_name=u'Успешно', default=False) @@ -1402,7 +1402,7 @@ class DiplomaJ(models.Model): material = models.ForeignKey(Diploma, verbose_name=u'Шаблон диплома') date = models.DateField(verbose_name=u'Дата выдачи', default=datetime.date.today) key = models.IntegerField(verbose_name=u'Ключ', blank=True, null=True) - student = models.ForeignKey(User, verbose_name=u'Студент', null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', null=True) out_image = models.ImageField(verbose_name=u'Картинка без печати', upload_to='diploms', blank=True) in_image = models.ImageField(verbose_name=u'Картинка c печатью', upload_to='diploms', blank=True) @@ -1475,7 +1475,7 @@ class AchievementJ(models.Model): group = models.CharField(verbose_name=u'Раздел', max_length=100, default='') title = models.CharField(verbose_name=u'Заголовок', max_length=255) text = models.TextField(verbose_name=u'Текст достижения', blank=True) - student = models.ForeignKey(User, verbose_name=u'Студент') + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент') achievement = models.ForeignKey(Achievements, verbose_name=u'Шаблон достижения') got = models.BooleanField(verbose_name=u'Получено', default=False) date = models.DateField(verbose_name=u'Дата получения', default=datetime.date.today) @@ -1498,8 +1498,8 @@ class ReportDepth(models.Model): ('R', '#FF3300') ) token = models.ForeignKey(CourseMap, verbose_name=u'Точка курса') - student = models.ForeignKey(User, verbose_name=u'Студент', related_name='depth_report_student') - teacher = models.ForeignKey(User, verbose_name=u'Преподаватель', related_name='depth_report_teacher', blank=True, null=True) + student = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Студент', related_name='depth_report_student') + teacher = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Преподаватель', related_name='depth_report_teacher', blank=True, null=True) course = models.ForeignKey(Course, verbose_name=u'Курс') s_date = models.DateTimeField(verbose_name=u'Дата старта', default=datetime.datetime.now) f_date = models.DateTimeField(verbose_name=u'Дата завершения', blank=True, null=True) @@ -1689,7 +1689,7 @@ class Journal(models.Model): content_type = models.ForeignKey(to=ContentType) object_id = models.PositiveIntegerField() content_object = GenericForeignKey('content_type', 'object_id') - action_type = models.ForeignKey(to=Action) + action_type = models.ForeignKey(to='Action') def __str__(self): return 'Пользователь %s %s' % (self.user.email, self.action_type.name) diff --git a/library/models.py b/library/models.py index 3dd0c20..8fd87cd 100755 --- a/library/models.py +++ b/library/models.py @@ -1,12 +1,11 @@ # coding=utf-8 from __future__ import unicode_literals import datetime -import re from django.db import models from management.models import Comment from lms.tools import out_date_format, translit from lms.settings import DOMAIN -from access.models import User +from django.conf import settings from courses.templates import comment_fabric @@ -37,11 +36,11 @@ class Article(models.Model): js = models.TextField(verbose_name=u'JS', blank=True, default='', help_text=u'Удалить bootstrap, jquery и заменить http на https') date = models.DateTimeField(verbose_name=u'Дата публикации', default=datetime.datetime.now, editable=False) tags = models.ManyToManyField('Tags', verbose_name=u'Теги', blank=True) - likes = models.ManyToManyField(User, verbose_name=u'Лайки', max_length=255, blank=True, editable=False, related_name=u'acticle_likes') - views = models.ManyToManyField(User, verbose_name=u'Просмотры', max_length=255, default=0, related_name='article_views', editable=False) + likes = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Лайки', max_length=255, blank=True, editable=False, related_name=u'acticle_likes') + views = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Просмотры', max_length=255, default=0, related_name='article_views', editable=False) all_views = models.IntegerField(verbose_name=u'Всего просмотров', default=0, blank=True) comments = models.ManyToManyField(Comment, verbose_name=u'Комментарии', blank=True, editable=False) - favorite = models.ManyToManyField(User, verbose_name=u'В фаворитах', blank=True, related_name='article_as_favorites', editable=False) + favorite = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'В фаворитах', blank=True, related_name='article_as_favorites', editable=False) def __str__(self): return '%s' % self.title diff --git a/management/models.py b/management/models.py index 2594365..4ee7bbf 100755 --- a/management/models.py +++ b/management/models.py @@ -1,7 +1,8 @@ # coding=utf-8 from django.db import models import locale, datetime -from access.models import User +from django.conf import settings +from django.contrib.auth import get_user_model from redactor.fields import RedactorField from lms.tools import out_date_format, random_int, random_string from courses.templates import comment_fabric @@ -60,12 +61,12 @@ class Newsletter(models.Model): ) status = models.CharField(verbose_name=u'Статус', max_length=1, choices=STATUS, default='Q') shell = models.ForeignKey(NewsletterShell, verbose_name=u'Оболочка', null=True) - author = models.ForeignKey(User, verbose_name=u'Инициатор', related_name='newsletter_owner') + author = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Инициатор', related_name='newsletter_owner') text = models.TextField(verbose_name=u'Текст сообщения') - recipient = models.ManyToManyField(User, verbose_name=u'Получатели', related_name='newsletter_request') + recipient = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Получатели', related_name='newsletter_request') date = models.DateTimeField(verbose_name=u'Дата постановки задачи', default=datetime.datetime.now) sent_date = models.DateTimeField(verbose_name=u'Дата отправки', default=datetime.datetime.now) - f_recipient = models.ManyToManyField(User, verbose_name=u'Отправлено', related_name='newsletter_response') + f_recipient = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Отправлено', related_name='newsletter_response') def __unicode__(self): return u'%s %s %s:%s' % (self.author.get_short_name(), self.get_status_display(), self.date, self.sent_date) @@ -84,7 +85,7 @@ class News(models.Model): icon = models.ImageField(verbose_name=u'Иконка', upload_to='news', blank=True) image = models.ImageField(verbose_name='Заголовочное изображение', upload_to='news', blank=True) content = RedactorField(verbose_name='Текст') - author = models.ForeignKey(User, verbose_name='Автор', related_name='author_user') + author = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name='Автор', related_name='author_user') public_date = models.DateTimeField(verbose_name='Дата публикации', blank=True) create_date = models.DateTimeField(verbose_name='Дата создания', default=django.utils.timezone.now) @@ -110,7 +111,7 @@ class News(models.Model): class CommentSawTable(models.Model): comment = models.ForeignKey('Comment', verbose_name=u'Комментарий') - user = models.ForeignKey(User, verbose_name=u'Просмотревший') + user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Просмотревший') date = models.DateTimeField(verbose_name=u'Время просмотра просмотра', default=datetime.datetime.now) def __unicode__(self): @@ -138,15 +139,15 @@ class Comment(models.Model): token = models.CharField(verbose_name=u'Ключь доступа', max_length=100, default='', editable=False) best = models.BooleanField(verbose_name=u'Лучший ответ', default=False) rating = models.IntegerField(verbose_name=u'Рейтинг', default=0) - minus_rating = models.ManyToManyField(User, verbose_name=u'Хейтеры', editable=False, null=True) - plus_rating = models.ManyToManyField(User, verbose_name=u'Гудеры', editable=False, null=True) + minus_rating = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Хейтеры', editable=False, null=True) + plus_rating = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Гудеры', editable=False, null=True) status = models.CharField(verbose_name=u'Статус сообщения', max_length=2, choices=STATUSES, default='S') - saw = models.ManyToManyField(User, verbose_name=u'Прочитавшие', blank=True, editable=False) + saw = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Прочитавшие', blank=True, editable=False) response = models.BooleanField(verbose_name=u'Есть ответ от админа', default=False, editable=False) response_comment = models.ForeignKey('self', verbose_name=u'Комментарий ответа от админа', blank=True, null=True, related_name='admin_text_response', editable=False) closed = models.BooleanField(verbose_name=u'Закрыт', default=False, editable=False) parent_id = models.IntegerField(verbose_name=u'ID исходника', default=0, blank=True, editable=False) - owner = models.ForeignKey(User, verbose_name=u'Автор', related_name='comment_owner') + owner = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Автор', related_name='comment_owner') text = RedactorField(verbose_name=u'Текст', default='') bbtext = BBCodeTextField(verbose_name=u'BB Текст', default='', blank=True) markdown = models.TextField(blank=True, default='') @@ -280,7 +281,7 @@ class Feedback(models.Model): def save(self, *args, **kwargs): if not self.send: - for eye in User.objects.filter(in_role='S2'): + for eye in get_user_model().objects.filter(in_role='S2'): sent_new_feedback(self, eye.email) super(Feedback, self).save(*args, **kwargs) @@ -423,11 +424,11 @@ class Modal(models.Model): class ModalTask(models.Model): - user = models.ManyToManyField(User, verbose_name=u'Пользователи', + user = models.ManyToManyField(to=settings.AUTH_USER_MODEL, verbose_name=u'Пользователи', help_text=u'Как пользователь зайдет на сайт - отсюда он будет удален и ' u'будет создан журнал. ', related_name='task_user', blank=True, editable=False) modal = models.ForeignKey(Modal, verbose_name=u'Окно') - manager = models.ForeignKey(User, verbose_name=u'Поставивший задачу', related_name='task_manager') + manager = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Поставивший задачу', related_name='task_manager') date = models.DateTimeField(verbose_name=u'Постановка задачи', default=datetime.datetime.now) status = models.CharField(verbose_name=u'Статус', choices=MODAL_STATUS, default='C', max_length=1) @@ -458,7 +459,7 @@ class ModalJournal(models.Model): ) key = models.CharField(verbose_name=u'Ключ', max_length=255, default=gen_modal_journal_key) status = models.CharField(verbose_name=u'Статус', choices=STATUS, default='O', editable=False, max_length=1) - user = models.ForeignKey(User, verbose_name=u'Пользователь') + user = models.ForeignKey(to=settings.AUTH_USER_MODEL, verbose_name=u'Пользователь') date = models.DateTimeField(verbose_name=u'Дата показа', default=datetime.datetime.now, editable=False) task = models.ForeignKey(ModalTask, verbose_name=u'Задача') views = models.IntegerField(verbose_name=u'Необходимое количество просмотров', default=0)