You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
9.5 KiB
173 lines
9.5 KiB
# coding=utf-8
|
|
import os
|
|
|
|
import datetime
|
|
import django
|
|
import sys
|
|
|
|
sys.path.append("/var/www/projects/lms/")
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
|
|
django.setup()
|
|
from courses.models import Course, CourseTheme
|
|
|
|
from django.core.mail import EmailMessage
|
|
|
|
from access.models import User
|
|
from lms.settings import DEFAULT_FROM_EMAIL
|
|
from lms.tools import random_string
|
|
from finance.models import Price, Bill
|
|
from journals.models import TeacherJ, check_journal, set_opened, CourseThemeJ
|
|
|
|
sourse = open('users_base.txt').readlines()
|
|
seller = User.objects.get(id=2)
|
|
_exc = [
|
|
'copymi@gmail.com',
|
|
'input_chet@rambler.ru',
|
|
'smirnovm84@gmail.com',
|
|
'appppppple@gmail.com',
|
|
'yurinbu@mail.ru',
|
|
'zoom-zoom555@mail.ru',
|
|
'ulitinigor@yandex.ru',
|
|
'kochevnik01@mail.ru',
|
|
'adrianobuon@mail.ru',
|
|
'allanoy@yandex.ru'
|
|
]
|
|
|
|
_map = {
|
|
'# Java': {'obj': Course.objects.get(id=2), 'id': 2, 'user_map': {}, 'teacher': User.objects.get(id=473),
|
|
'service': Price.objects.get(id=11)},
|
|
'# iOS': {'obj': Course.objects.get(id=3), 'id': 3, 'user_map': {}, 'teacher': User.objects.get(id=17),
|
|
'service': Price.objects.get(id=9)},
|
|
'# Web': {'obj': Course.objects.get(id=1), 'id': 1, 'user_map': {}, 'teacher': User.objects.get(id=705),
|
|
'service': Price.objects.get(id=7)},
|
|
'# Excel': {'obj': Course.objects.get(id=4), 'id': 4, 'user_map': {}, 'teacher': User.objects.get(id=22),
|
|
'service': Price.objects.get(id=10)}
|
|
}
|
|
|
|
# user_map = {'email', 'fname', 'oname', 'name', 'cur_theme'}
|
|
|
|
cur_course = None
|
|
cur_theme = None
|
|
for i in sourse:
|
|
l = i.strip()
|
|
if l:
|
|
if l[0] == '#':
|
|
if l in _map:
|
|
cur_course = _map[l]
|
|
else:
|
|
cur_theme = CourseTheme.objects.get(id=l[1:])
|
|
else:
|
|
_tmp = l.split(';')
|
|
_user = _tmp[1].split(' ')
|
|
_len = len(_user)
|
|
cur_course['user_map'][_tmp[0]] = {
|
|
'name': _user[0] if 0 < _len else '',
|
|
'fname': _user[1] if 1 < _len else '',
|
|
'oname': _user[2] if 2 < _len else '',
|
|
'cur_theme': cur_theme,
|
|
'teacher': User.objects.get(id=535) if _tmp[0] in _exc else cur_course['teacher']
|
|
}
|
|
|
|
# Создание пользователей
|
|
for key, value in _map.items():
|
|
print key
|
|
cur_course = value['obj']
|
|
for user, m in value['user_map'].items():
|
|
# Попробовать создать пользователя
|
|
_passw = None
|
|
_user, c = User.objects.get_or_create(email=user.lower())
|
|
if c:
|
|
# Если его нет - присвоить пароль и сделать активным
|
|
# Присвоить имена
|
|
_passw = random_string(length=6).upper()
|
|
_user.set_password(_passw)
|
|
_user.is_active = True
|
|
_user.reg_status = '4'
|
|
_user.fname = m['fname']
|
|
_user.name = m['name']
|
|
_user.oname = m['oname']
|
|
_user.save()
|
|
|
|
# Добавить оплату по требуему курсу
|
|
bill, bc = Bill.objects.get_or_create(finish_date=datetime.datetime.now(), user=_user, status='F',
|
|
service=value['service'], manager=seller)
|
|
# Создать или получить журнал
|
|
print _user.id
|
|
try:
|
|
journal, cj = TeacherJ.objects.get_or_create(student=_user, course=cur_course)
|
|
except TeacherJ.MultipleObjectsReturned:
|
|
journal = TeacherJ.objects.filter(student=_user, course=cur_course)
|
|
journal.last().delete()
|
|
journal, cj = TeacherJ.objects.get_or_create(student=_user, course=cur_course)
|
|
if cj:
|
|
journal.teacher = m['teacher']
|
|
journal.save()
|
|
# Проверить журнал
|
|
check_journal(journal)
|
|
# Получить последнюю пройденную тему, если она старше задаваемой - ничего не делать
|
|
last_theme = None
|
|
for _theme in CourseThemeJ.objects.filter(parent=journal).order_by('material__sort'):
|
|
if _theme.get_status_flag() not in 'N':
|
|
last_theme = _theme
|
|
c3 = False
|
|
if last_theme and last_theme.material.sort > 1:
|
|
if last_theme.material.sort <= m['cur_theme'].sort:
|
|
# Или насильно открыть журнал по заданой теме
|
|
set_opened(journal,
|
|
CourseThemeJ.objects.get(material=m['cur_theme'], parent=journal).actual_lesson.token)
|
|
c3 = True
|
|
else:
|
|
set_opened(journal, CourseThemeJ.objects.get(material=m['cur_theme'], parent=journal).actual_lesson.token)
|
|
c3 = True
|
|
|
|
if c3:
|
|
journal.teacher = m['teacher']
|
|
journal.save()
|
|
|
|
# Если пользователь был создан - отправить одно письмо, если нет, другое
|
|
if c:
|
|
text = u'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' \
|
|
u'<html>' \
|
|
u'<head>' \
|
|
u'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' \
|
|
u'<title></title>' \
|
|
u'</head>' \
|
|
u'<body>' \
|
|
u'<table style="background: #00bdff;' \
|
|
u'padding: 10px;' \
|
|
u'margin: 10px;' \
|
|
u'border: 200px solid #00bdff;' \
|
|
u'color: #fff;' \
|
|
u'width: 400px;">' \
|
|
u'<tr><td><img src="http://lms.ru/static/img/na-novuu-platformu.gif"></td></tr>' \
|
|
u'<tr><td><br><br>Добрый день!<br>' \
|
|
u'Рады сообщить, что нами была разработанна собственная площадка для обучения.<br><br>' \
|
|
u'Сейчас мы осуществяем перевод вашего курса.<br><br>' \
|
|
u'Ваш доступ:' \
|
|
u'<h1>Ссылка на портал: http://lms.ru</h1>' \
|
|
u'<h1>Логин: {0}</h1>' \
|
|
u'<h1>Пароль: {1}</h1><br>' \
|
|
u'Ваш пароль и другую информацию вы сможете поменять их зайдя на платформе в свой профиль.<br><br>' \
|
|
u'Инструкция по работе:<br>' \
|
|
u'• На главной странице платформы у Вас отображаются все размещенные на ней курсы.<br>' \
|
|
u'• Выбитете Ваш курс и нажминте кнопку приступить. <br>' \
|
|
u'• Вы попадете на страницу с курсом, у Вас будет автоматически открыт доступ ко всем урокам которые Вы уже успели пройти.<br>' \
|
|
u'• К кажой открытой для Вас темы есть кнопка «Открыть лекцию»<br>' \
|
|
u'Перейдя по ней, Вы увидите размещенные видео к урокам.<br>' \
|
|
u'Для того что бы открылась страницв с домашним занием, отмемтьте урок просмотренным.<br>' \
|
|
u'• Во вкладке с домашним заданиям находяться описания работы, файлы для выполнения.<br>' \
|
|
u'Ниже на этой странице находиться форма обратной связи через которую можно общаться с преподавателем и направлять задание на проверку.<br>' \
|
|
u'• После принятия рабты, селедующий урок открывается автоматически.<br>' \
|
|
u'• Оповещение о новых комментариях преподавателя к домашним заданиям так же будут приходить на указанный e-mail.<br>' \
|
|
u'• ВАЖНО. Если вы использовали на старой платформе несколько электронных адресов, Пришлите нам на support@lms.ru не используемый email.<br>' \
|
|
u'По всем вопросам, связанным с перездом пишите на почту support@lms.ru</td></tr>' \
|
|
u'<tr><td style="padding-bottom: 20px;"><br><Br>С уважением,<Br>Точка кода</td></tr>' \
|
|
u'<tr><td style="padding-bottom: 20px;text-align:right;"><img src="http://lms.ru/static/img/logowhite.png"></td></tr>' \
|
|
u'</table>' \
|
|
u'</body>' \
|
|
u'</html>'.format(_user.email, _passw)
|
|
msg = EmailMessage('Добро пожаловать на новую платформу',
|
|
text,
|
|
u'ТОЧКА КОДА <{0}>'.format(DEFAULT_FROM_EMAIL), [_user.email])
|
|
msg.content_subtype = "html" # Main content is now text/html
|
|
msg.send()
|
|
|