Косвеное обрашение к модели юзера

feature/fix_generate_pass
Andrey 8 years ago
parent 4fca8609f2
commit fa3c42ac35
  1. 10
      courses/models.py
  2. 40
      journals/models.py
  3. 9
      library/models.py
  4. 29
      management/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)

@ -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)

@ -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

@ -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)

Loading…
Cancel
Save