commit
ce1f62e10c
1121 changed files with 146932 additions and 0 deletions
@ -0,0 +1,40 @@ |
||||
|
||||
|
||||
# use glob syntax. |
||||
syntax: glob |
||||
|
||||
docs/_build |
||||
.idea |
||||
.DS_Store |
||||
.project |
||||
.pydevproject |
||||
*.pyc |
||||
.settings |
||||
*.un~ |
||||
*~ django |
||||
build |
||||
*.swp |
||||
.\#* |
||||
\#* |
||||
|
||||
# archive files |
||||
*.zip |
||||
*.tar.gz |
||||
*.rar |
||||
|
||||
# picture files |
||||
*.jpg |
||||
*.jpeg |
||||
*.gif |
||||
*.JPG |
||||
*.png |
||||
*.bmp |
||||
|
||||
# video files |
||||
*.mp4 |
||||
|
||||
# audio files |
||||
*.mp3 |
||||
|
||||
__pycache__ |
||||
|
||||
@ -0,0 +1,37 @@ |
||||
# This file is a template, and might need editing before it works on your project. |
||||
# Official docker image. |
||||
#image: docker:latest |
||||
#services: |
||||
# - docker:dind |
||||
variables: |
||||
CHANNEL: "skillbox" |
||||
SERVER_URL: "lms.test.spicycms.com" |
||||
DOMAIN: "$CI_BUILD_REF_NAME.$SERVER_URL" |
||||
SLACK_MSG: "Check new website <http://$DOMAIN>" |
||||
#SLACK_PAYLOAD: 'payload={\"channel\":\"#'${CHANNEL}'\",\"username\":\"'${SERVER_URL}'\",\"text\":\"'${SLACK_MSG}'\",\"icon_emoji\":\":ghost:\"}' |
||||
SLACK_URL: "https://hooks.slack.com/services/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" |
||||
types: |
||||
- build |
||||
- test |
||||
build_app: |
||||
type: build |
||||
script: |
||||
- docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY |
||||
- docker build --no-cache --rm --pull -t "$CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME" --build-arg SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY" --build-arg SPICYCODE_LOGIN="$SPICYCODE_LOGIN" --build-arg SPICYCODE_PASS="$SPICYCODE_PASS" . |
||||
#- docker run --rm --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` "$CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME" python manage.py test |
||||
- docker push "$CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME" |
||||
test_app: |
||||
type: test |
||||
script: |
||||
#- docker login -u "gitlab-ci-token" -p "$CI_BUILD_TOKEN" $CI_REGISTRY |
||||
#- docker pull "$CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME" |
||||
- if [[ $(docker ps -a) == *$DOMAIN* ]] ; then docker stop $DOMAIN ; fi |
||||
- if [[ $(docker ps -a) == *$DOMAIN* ]] ; then docker rm $DOMAIN; fi |
||||
- "SLACK_PAYLOAD='payload={\"channel\":\"#'${CHANNEL}'\",\"username\":\"'${SERVER_URL}'\",\"text\":\"'${SLACK_MSG}'\",\"icon_emoji\":\":ghost:\"}'" |
||||
- docker run -d --expose=80 -e VIRTUAL_HOST=$DOMAIN --name=$DOMAIN -e DB_NAME=$DB_NAME -e PG_PORT_5432_TCP_ADDR=$DB_HOST -e PG_PORT_5432_TCP_PORT=$DB_PORT -e PG_ENV_POSTGRES_USER=$DB_TEST_USER -e PG_ENV_POSTGRES_PASSWORD=$DB_TEST_PASS "$CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME" |
||||
- curl -I $DOMAIN 2>/dev/null | head -n 1 | cut -d$' ' -f2 |
||||
- echo ${SLACK_PAYLOAD} |
||||
- curl -X POST -d ${SLACK_PAYLOAD} $SLACK_URL |
||||
dependencies: |
||||
- build_app |
||||
|
||||
@ -0,0 +1,18 @@ |
||||
orlova@mokselle.ru |
||||
arhipov@mokselle.com |
||||
robert@mokselle.ru |
||||
nemtsev@mokselle.ru |
||||
grebennikova@mokselle.com |
||||
a.rybalov@mokselle.ru |
||||
isaev@mokselle.ru |
||||
kravchenko@mokselle.ru |
||||
volosnikov@mokselle.com |
||||
korneva@mokselle.com |
||||
ivanova@mokselle.ru |
||||
shilin@mokselle.com |
||||
grishchenko@mokselle.ru |
||||
iskusnov@mokselle.ru |
||||
dolya@mokselle.com |
||||
dolia@mokselle.ru |
||||
vorobjova@mokselle.com |
||||
plavko@mokselle.ru |
||||
@ -0,0 +1,39 @@ |
||||
FROM python:3.4.5 |
||||
ENV PYTHONUNBUFFERED 1 |
||||
|
||||
RUN mkdir /code |
||||
WORKDIR /code |
||||
|
||||
RUN apt-get update && apt-get install -y supervisor \ |
||||
cron |
||||
|
||||
#RUN pip install mercurial |
||||
#RUN pip install git |
||||
RUN pip install uwsgi |
||||
#RUN apt-get update && apt-get install openssh-client |
||||
|
||||
ARG SSH_PRIVATE_KEY |
||||
ARG SPICYCODE_LOGIN |
||||
ARG SPICYCODE_PASS |
||||
RUN echo '[auth]\nspicy.prefix = code.spicycms.com\nspicy.username = '$SPICYCODE_LOGIN'\nspicy.password = '$SPICYCODE_PASS'\nspicy.schemes = https' > ~/.hgrc |
||||
|
||||
RUN mkdir -p ~/.ssh |
||||
RUN mkdir -p /code/static/img/avs |
||||
#RUN eval `ssh-agent -s` > /dev/null | echo "$SSH_KEY" | ssh-add - |
||||
RUN echo "$SSH_PRIVATE_KEY" >> /root/.ssh/id_rsa |
||||
RUN echo "Host *\n\tStrictHostKeyChecking no\nIdentityFile /root/.ssh/id_rsa" >> /root/.ssh/config |
||||
RUN chmod 600 -R /root/.ssh |
||||
|
||||
#ADD ./requirements.txt /code/requirements.txt |
||||
#RUN pip install -r requirements.txt |
||||
|
||||
RUN rm /root/.ssh/id_rsa |
||||
|
||||
ADD . /code |
||||
|
||||
run ln -s /code/supervisor-app.conf /etc/supervisor/conf.d/ |
||||
RUN pip install -r requirements.txt |
||||
#RUN python manage.py collectstatic --noinput |
||||
|
||||
#CMD ["/code/docker-entrypoint.sh"] |
||||
CMD ["supervisord", "-n"] |
||||
@ -0,0 +1,9 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
apps = ['access', 'courses', 'finance', 'management', 'storage'] |
||||
|
||||
for app in apps: |
||||
os.system('python manage.py dumpdata {0} -o fixtures/{0}.json'.format(app)) |
||||
|
||||
print u'Загружаю медиа' |
||||
os.system('tar czf media.tar.gz media/') |
||||
@ -0,0 +1,15 @@ |
||||
# coding=utf-8 |
||||
import json |
||||
|
||||
print 'Вытаскиваю материалы' |
||||
_fixture = json.load(open('fixtures/courses.json')) |
||||
|
||||
loader = ('courses.course') |
||||
w = open('fixtures/courses.json', 'w') |
||||
for i in _fixture: |
||||
if i['model'] in loader.keys(): |
||||
i['model'] = loader[i['model']] |
||||
|
||||
json.dump(_fixture, w) |
||||
w.close() |
||||
print 'Закончил вытаскивание' |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
||||
[] |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,105 @@ |
||||
# coding=utf-8 |
||||
|
||||
|
||||
def set_hm_success(obj): |
||||
# Получить статус домашку в success |
||||
if obj['fields']['status'] == 'F': |
||||
return True |
||||
else: |
||||
return False |
||||
|
||||
|
||||
def create_try(obj): |
||||
# Создать попытку со всеми комментариями и результатом |
||||
global HT |
||||
HT += 1 |
||||
if obj["fields"]["teacher"]: |
||||
_journal_result.append({"model": "journals.homeworktry", |
||||
"pk": HT, "fields": {"parent": obj['pk'], "student": obj['fields']['student'], |
||||
"teacher": obj['fields']['teacher'], |
||||
"material": obj['fields']['homework'], |
||||
"date": obj['fields']['date'], "f_date": obj['fields']['f_date'], |
||||
"comments": obj['fields']['comments'], |
||||
"success": set_hm_success(obj), |
||||
"expired": False}}) |
||||
|
||||
print 'Создание карты курса' |
||||
# id: {'themes': {}, 'exam': 'id экзамена'} |
||||
# 'themes': {'id темы': {'lessons': [список id уроков], 'homework': id дз} |
||||
_courses_map = {} |
||||
for i in _fixture: |
||||
if i['model'] == 'courses.course': |
||||
if i['pk'] not in _courses_map.keys(): |
||||
# Добавить курс на карту |
||||
_courses_map[i['pk']] = {'themes': {}, 'exam': {}} |
||||
|
||||
elif i['model'] == 'courses.coursetheme': |
||||
# Добавить тему в курс |
||||
if i['pk'] not in _courses_map[i['fields']['course']]['themes'].keys(): |
||||
_courses_map[i['fields']['course']]['themes'][i['pk']] = {'lessons': set({}), 'homework': ''} |
||||
|
||||
elif i['model'] == 'courses.exam': |
||||
# Присвоить курсу ID экзамена |
||||
_courses_map[i['fields']['course']]['exam'] = i['pk'] |
||||
|
||||
elif i['model'] == 'courses.homework': |
||||
# Добавить домашнее задание в тему |
||||
_courses_map[i['fields']['course']]['themes'][i['fields']['theme']]['homework'] = i['pk'] |
||||
|
||||
elif i['model'] == 'courses.lesson': |
||||
_courses_map[i['fields']['course']]['themes'][i['fields']['theme']]['lessons'].add(i['pk']) |
||||
|
||||
# Вторая обработка |
||||
print 'Постобработка' |
||||
for key, value in _theme_counts.items(): |
||||
value['fix'] = int(value['fix']) + 1 |
||||
value['last'] = value['fix'] |
||||
# +1 - готовый ID для новой темы |
||||
|
||||
print 'Обход по карте' |
||||
_merge_map = { |
||||
'journals.teacherj': {'exclude': ['lessons', 'homeworks', 'exam', 'f_date'], |
||||
'new': {'progress': 0}, |
||||
'rename': {}, |
||||
'rebuild': {}}, |
||||
'journals.lessonj': {'exclude': ['status'], |
||||
'new': {'success': True, 'parent': None}, |
||||
'rename': {'lesson': 'material'}, |
||||
'rebuild': {}}, |
||||
'journals.homeworkj': {'exclude': ['status', 'comments'], |
||||
'new': {'success': set_hm_success, 'parent': None}, |
||||
'rename': {'homework': 'material'}, |
||||
'rebuild': {'comments': create_try}}, |
||||
'journals.examj': {'exclude': ['status', 'comments'], |
||||
'new': {'success': False, 'parent': None}, |
||||
'rename': {'exam': 'material'}, |
||||
'rebuild': {}}, |
||||
} |
||||
|
||||
# Преобразовать модели объектов |
||||
_journal_result = [] |
||||
for i in _journal: |
||||
if i['model'] in _merge_map.keys(): |
||||
__tmp = {} |
||||
for key, value in _merge_map[i['model']]['rebuild'].items(): |
||||
value(i) |
||||
for key, value in i['fields'].items(): |
||||
# Исключить не используемые поля |
||||
if key not in _merge_map[i['model']]['exclude']: |
||||
if key in _merge_map[i['model']]['rename'].keys(): |
||||
# Переименовать переменные |
||||
__tmp[_merge_map[i['model']]['rename'][key]] = value |
||||
else: |
||||
__tmp[key] = value |
||||
for key, value in _merge_map[i['model']]['new'].items(): |
||||
if type(value) in [str, int, bool] or value is None: |
||||
__tmp[key] = value |
||||
else: |
||||
# Получение не определенного заранее ответа |
||||
__tmp[key] = value(i) |
||||
# Как получить ID журнала темы |
||||
__tmp = {"pk": i['pk'], "model": i['model'], "fields": __tmp} |
||||
_journal_result.append(__tmp) |
||||
else: |
||||
_journal_result.append(i) |
||||
json.dump(_journal_result, open('fixtures/journals.json', 'w')) |
||||
@ -0,0 +1,63 @@ |
||||
м# coding=utf-8 |
||||
import os |
||||
|
||||
import django |
||||
|
||||
from post_fixtures import main |
||||
from _utils.clear_db import main as clear_main |
||||
|
||||
print '==== Загружаю DJANGO' |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from storage.models import Storage, CroppedImage |
||||
|
||||
print '==== Загрузил DJANGO' |
||||
# == Загрузка данных |
||||
|
||||
print '==== Обрабатываю модели' |
||||
|
||||
# Загрузка материалов |
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
||||
print BASE_DIR |
||||
APPS = ('storage', 'access', 'management', 'courses', 'finance', ) |
||||
#courses_models = ('courses.course', 'courses.coursetheme', 'courses.lesson', 'courses.homework', 'courses.exam') |
||||
#journal_models = ('courses.teacherj', 'courses.lessonj', 'courses.homeworkj', 'courses.examj') |
||||
#finance_models = ("courses.bill", 'courses.price', 'courses.servicerequest') |
||||
|
||||
|
||||
clear_main() |
||||
os.system('python merge_fixtures.py') |
||||
|
||||
# Загрузить фикстуры не изменившихся моделей |
||||
print '==== Заливаю модели' |
||||
for app in APPS: |
||||
print app.upper() |
||||
os.system('python manage.py loaddata fixtures/{0}.json'.format(app)) |
||||
|
||||
print '==== Заливаю MEDIA' |
||||
os.system('tar xfz media.tar.gz') |
||||
print '==== Проверка заливки' |
||||
# Проверить существование файлов из storage |
||||
errors = [] |
||||
for store in Storage.objects.all(): |
||||
# Проверить original, f_format.icon |
||||
obj = (store.original.path if store.original else '', |
||||
store.f_format.icon.path if store.f_format and store.f_format.icon else '') |
||||
for i in obj: |
||||
if i and not os.path.exists(i): |
||||
errors.append(i) |
||||
#print 'Ошибки файлов: {0}'.format(len(errors)) |
||||
|
||||
for store in CroppedImage.objects.all(): |
||||
# croppedimage.big, croppedimage.middle, croppedimage.small |
||||
obj = (store.big.path if store.big else '', |
||||
store.middle.path if store.middle else '', |
||||
store.small.path if store.small else '') |
||||
for i in obj: |
||||
if i and not os.path.exists(i): |
||||
errors.append(i) |
||||
#print 'Ошибки файлов: {0}'.format(len(errors)) |
||||
print 'Ошибки файлов: {0}'.format(len(errors)) |
||||
#print errors |
||||
|
||||
main() |
||||
@ -0,0 +1,277 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from courses.models import Course, CourseTheme, Lesson, Homework, Exam, Skills, SkillJ, Achievements, CourseBuilder |
||||
from management.models import Comment |
||||
from storage.models import Storage |
||||
|
||||
_fixture = json.load(open('fixtures/courses.json')) |
||||
user_pk = 1 |
||||
courses = [] |
||||
lessons = [] |
||||
themes = [] |
||||
homeworks = [] |
||||
exams = [] |
||||
skills = [] |
||||
skillsj = [] |
||||
achs = [] |
||||
|
||||
|
||||
def new_index(model, key, obj): |
||||
if str(key) in pk_map[model]: |
||||
return obj.objects.get(id=pk_map[model][str(key)]) |
||||
return None |
||||
|
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'courses.course' not in pk_map.keys(): |
||||
pk_map['courses.course'] = {} |
||||
|
||||
if 'courses.coursetheme' not in pk_map.keys(): |
||||
pk_map['courses.coursetheme'] = {} |
||||
|
||||
if 'courses.lesson' not in pk_map.keys(): |
||||
pk_map['courses.lesson'] = {} |
||||
|
||||
if 'courses.homework' not in pk_map.keys(): |
||||
pk_map['courses.homework'] = {} |
||||
|
||||
if 'courses.exam' not in pk_map.keys(): |
||||
pk_map['courses.exam'] = {} |
||||
|
||||
if 'courses.skills' not in pk_map.keys(): |
||||
pk_map['courses.skills'] = {} |
||||
|
||||
if 'courses.skillj' not in pk_map.keys(): |
||||
pk_map['courses.skillj'] = {} |
||||
|
||||
if 'courses.achievements' not in pk_map.keys(): |
||||
pk_map['courses.achievements'] = {} |
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'courses.course': |
||||
if i not in courses: |
||||
courses.append(i) |
||||
|
||||
elif i['model'] == 'courses.coursetheme': |
||||
if i not in themes: |
||||
themes.append(i) |
||||
|
||||
elif i['model'] == 'courses.lesson': |
||||
if i not in lessons: |
||||
lessons.append(i) |
||||
|
||||
elif i['model'] == 'courses.homework': |
||||
if i not in homeworks: |
||||
homeworks.append(i) |
||||
|
||||
elif i['model'] == 'courses.exam': |
||||
if i not in exams: |
||||
exams.append(i) |
||||
|
||||
elif i['model'] == 'courses.skills': |
||||
if i not in skillsj: |
||||
skills.append(i) |
||||
|
||||
elif i['model'] == 'courses.skillj': |
||||
if i not in skillsj: |
||||
skillsj.append(i) |
||||
|
||||
elif i['model'] == 'courses.achievements': |
||||
if i not in achs: |
||||
achs.append(i) |
||||
|
||||
print '\nCourse' |
||||
_now = 0 |
||||
big_len = len(courses) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in courses: |
||||
c = Course.objects.create( |
||||
level=i['fields']['level'], |
||||
public=True, |
||||
title=i['fields']['title'], |
||||
description=i['fields']['description'], |
||||
image=i['fields']['image'], |
||||
big_image=i['fields']['big_image'], |
||||
page=i['fields']['page'], |
||||
preview=i['fields']['preview'], |
||||
sort=i['fields']['sort'], |
||||
use_fail=i['fields']['use_fail'], |
||||
basic_len=i['fields']['basic_len'], |
||||
addition_len=i['fields']['addition_len'], |
||||
min_price=i['fields']['min_price'], |
||||
buy_icon=i['fields']['buy_icon'] |
||||
) |
||||
|
||||
pk_map['courses.course'][str(i['pk'])] = str(c.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
|
||||
print u'\nCourseTheme' |
||||
_now = 0 |
||||
big_len = len(themes) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in themes: |
||||
c = CourseTheme.objects.create( |
||||
price_type='E' if i['fields']['type'] == 'A' else i['fields']['type'], |
||||
_type='E' if i['fields']['type'] == 'A' else i['fields']['type'], |
||||
icon=i['fields']['icon'], |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
sort=i['fields']['sort'], |
||||
title=i['fields']['title'], |
||||
description=i['fields']['description'], |
||||
) |
||||
# print i['fields']['course'] |
||||
# print new_index('courses.course', i['fields']['course'], Course) |
||||
pk_map['courses.coursetheme'][str(i['pk'])] = str(c.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
|
||||
print u'\nLessons' |
||||
_now = 0 |
||||
big_len = len(lessons) |
||||
show_progress(big_len, _now) |
||||
for i in lessons: |
||||
c = Lesson.objects.create( |
||||
free=i['fields']['free'], |
||||
token=i['fields']['token'], |
||||
title=i['fields']['title'], |
||||
sort=i['fields']['sort'], |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
theme=new_index('courses.coursetheme', i['fields']['theme'], CourseTheme), |
||||
description=i['fields']['description'], |
||||
video=i['fields']['video'] |
||||
) |
||||
for key in i['fields']['materials']: |
||||
c.materials.add(new_index('storage.storage', key, Storage)) |
||||
|
||||
for key in i['fields']['comments']: |
||||
# print key |
||||
# print new_index('management.comment', key, Comment) |
||||
c.comments.add(new_index('management.comment', key, Comment)) |
||||
|
||||
pk_map['courses.lesson'][str(i['pk'])] = str(c.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
|
||||
print u'\nHomework' |
||||
_now = 0 |
||||
big_len = len(homeworks) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in homeworks: |
||||
c = Homework.objects.create( |
||||
token=i['fields']['token'], |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
theme=new_index('courses.coursetheme', i['fields']['theme'], CourseTheme), |
||||
description=i['fields']['description'], |
||||
sort=1 |
||||
) |
||||
for key in i['fields']['materials']: |
||||
c.materials.add(new_index('storage.storage', key, Storage)) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['courses.homework'][str(i['pk'])] = str(c.id) |
||||
|
||||
print u'\nExams' |
||||
_now = 0 |
||||
big_len = len(exams) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in exams: |
||||
tm = CourseTheme.objects.create( |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
_type='Ex' |
||||
) |
||||
pk_map['courses.coursetheme'][str(tm.id)] = str(tm.id) |
||||
c = Exam.objects.create( |
||||
token=i['fields']['token'], |
||||
sort=1, |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
theme=tm, |
||||
icon=new_index('storage.storage', i['fields']['diploma'], Storage), |
||||
title=i['fields']['title'], |
||||
description=i['fields']['description'], |
||||
diploma=new_index('storage.storage', i['fields']['diploma'], Storage) |
||||
) |
||||
for key in i['fields']['materials']: |
||||
c.materials.add(new_index('storage.storage', key, Storage)) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['courses.exam'][str(i['pk'])] = str(c.id) |
||||
|
||||
print u'\nПереформировать порядок' |
||||
for course in Course.objects.all(): |
||||
_count = 1 |
||||
#print course |
||||
for _type in ['B', 'M', 'Ex', 'E', 'P']: |
||||
for theme in CourseTheme.objects.filter(course=course, _type=_type): |
||||
theme.sort = _count |
||||
_count += 1 |
||||
theme.save() |
||||
#print _count |
||||
|
||||
print u'\nКарты курсов' |
||||
for course in Course.objects.all(): |
||||
CourseBuilder(course).main() |
||||
|
||||
print u'\nSkills' |
||||
_now = 0 |
||||
big_len = len(skills) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in skills: |
||||
c, c2 = Skills.objects.get_or_create( |
||||
title=i['fields']['title'], |
||||
color=i['fields']['color'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['courses.skills'][str(i['pk'])] = str(c.id) |
||||
|
||||
print u'\nSkillsJ' |
||||
_now = 0 |
||||
big_len = len(skillsj) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in skillsj: |
||||
c, c2 = SkillJ.objects.get_or_create( |
||||
skill=new_index('courses.skills', i['fields']['skill'], Skills), |
||||
lesson=new_index('courses.lesson', i['fields']['lesson'], Lesson), |
||||
size=i['fields']['size'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['courses.skillj'][str(i['pk'])] = str(c.id) |
||||
|
||||
print u'\nAchivements' |
||||
_now = 0 |
||||
big_len = len(achs) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in achs: |
||||
c, c2 = Achievements.objects.get_or_create( |
||||
tech_name=i['fields']['tech_name'], |
||||
icon=i['fields']['icon'], |
||||
title=i['fields']['title'], |
||||
image=i['fields']['image'], |
||||
background=i['fields']['background'], |
||||
border=i['fields']['border'], |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['courses.achievements'][str(i['pk'])] = str(c.id) |
||||
|
||||
for course in Course.objects.all(): |
||||
course.build_map() |
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1,110 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from courses.models import Course |
||||
from finance.models import Price, Bill, ServiceRequest |
||||
from access.models import User |
||||
|
||||
_fixture = json.load(open('fixtures/courses.json')) |
||||
user_pk = 1 |
||||
prices = [] |
||||
bills = [] |
||||
requests = [] |
||||
|
||||
|
||||
def new_index(model, key, obj): |
||||
if str(key) in pk_map[model]: |
||||
return obj.objects.get(id=pk_map[model][str(key)]) |
||||
return None |
||||
|
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'finance.price' not in pk_map.keys(): |
||||
pk_map['finance.price'] = {} |
||||
|
||||
if 'finance.bill' not in pk_map.keys(): |
||||
pk_map['finance.bill'] = {} |
||||
|
||||
if 'finance.servicerequest' not in pk_map.keys(): |
||||
pk_map['finance.servicerequest'] = {} |
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'courses.price': |
||||
prices.append(i) |
||||
elif i['model'] == 'courses.bill': |
||||
bills.append(i) |
||||
elif i['model'] == 'courses.servicerequest': |
||||
requests.append(i) |
||||
|
||||
print u'\nPrice' |
||||
_now = 0 |
||||
big_len = len(prices) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in prices: |
||||
f, c = Price.objects.get_or_create( |
||||
m_type=i['fields']['m_type'], |
||||
public=i['fields']['public'], |
||||
title=i['fields']['title'], |
||||
cost=i['fields']['cost'], |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
description=i['fields']['description'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['finance.price'][str(i['pk'])] = str(f.id) |
||||
|
||||
print u'\nBill' |
||||
_now = 0 |
||||
big_len = len(bills) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in bills: |
||||
s = Bill.objects.create( |
||||
status=i['fields']['status'], |
||||
user=new_index('access.user', i['fields']['user'], User), |
||||
manager=new_index('access.user', i['fields']['manager'], User), |
||||
service=new_index('finance.price', i['fields']['service'], Price), |
||||
key=i['fields']['key'], |
||||
out_id=i['fields']['out_id'], |
||||
date=i['fields']['date'], |
||||
status_changed=i['fields']['status_changed'], |
||||
comment=i['fields']['comment'], |
||||
finish_date=i['fields']['finish_date'], |
||||
salt=i['fields']['salt'], |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['finance.bill'][str(i['pk'])] = str(s.id) |
||||
|
||||
print u'\nServiceRequest' |
||||
_now = 0 |
||||
big_len = len(requests) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in requests: |
||||
c = ServiceRequest.objects.create( |
||||
status=i['fields']['status'], |
||||
student=new_index('access.user', i['fields']['student'], User), |
||||
course=new_index('courses.course', i['fields']['course'], Course), |
||||
manager=new_index('access.user', i['fields']['manager'], User), |
||||
cancel_description=i['fields']['cancel_description'], |
||||
charge=i['fields']['charge'], |
||||
date=i['fields']['date'], |
||||
f_date=i['fields']['f_date'], |
||||
send=i['fields']['send'], |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['finance.servicerequest'][str(i['pk'])] = str(c.id) |
||||
|
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1,111 @@ |
||||
# coding=utf-8 |
||||
import json |
||||
|
||||
HT = 0 |
||||
|
||||
|
||||
print 'Приступил к МЕРДЖУ' |
||||
|
||||
loader = { |
||||
'courses.teacherj': 'journals.teacherj', |
||||
'courses.lessonj': 'journals.lessonj', |
||||
'courses.homeworkj': 'journals.homeworkj', |
||||
'courses.examj': 'journals.examj', |
||||
'courses.bill': 'finance.bill', |
||||
'courses.price': 'finance.price', |
||||
'courses.servicerequest': 'finance.servicerequest', |
||||
'courses.selfbillrequest': 'finance.selfbillrequest', |
||||
'courses.selfbillhistory': 'finance.selfbillhistory', |
||||
'courses.achievementj': 'journals.achievementj' |
||||
} |
||||
|
||||
_journal = [] |
||||
_finance = [] |
||||
_courses = [] |
||||
_theme_count = 0 |
||||
_theme_counts = {} |
||||
M_material = '' |
||||
_fixture = json.load(open('fixtures/courses.json')) |
||||
# Первая обработка |
||||
for i in _fixture: |
||||
if i['model'] in loader.keys(): |
||||
i['model'] = loader[i['model']] |
||||
|
||||
if i['model'] == 'courses.coursetheme': |
||||
# Проверяем существование реестра счетчиков по курсу |
||||
if i['fields']['course'] not in _theme_counts.keys(): |
||||
_theme_counts[i['fields']['course']] = 0 |
||||
|
||||
if int(i['pk']) > _theme_count: |
||||
# Ловим последний ID темы |
||||
_theme_count = int(i['pk']) |
||||
|
||||
if i['fields']['type'] == 'A': |
||||
i['fields']['price_type'] = 'E' |
||||
i['fields']['type'] = 'E' |
||||
# Считаем количество расширеных тем |
||||
else: |
||||
i['fields']['price_type'] = i['fields']['type'] |
||||
|
||||
# Ловим последнюю сортировку базовых тем курса |
||||
if i['fields']['type'] == 'B' and int(i['fields']['sort']) > _theme_counts[i['fields']['course']]: |
||||
_theme_counts[i['fields']['course']] = int(i['fields']['sort']) |
||||
|
||||
if i['fields']['type'] == 'M': |
||||
# Ловим предэкзаменационные материалы |
||||
i['fields']['price_type'] = 'B' |
||||
M_material = i |
||||
M_material['fields']['sort'] = False |
||||
|
||||
if i['model'] == 'courses.homework': |
||||
i['fields']['sort'] = '1' |
||||
|
||||
if i['model'] == 'courses.course': |
||||
i['fields']['public'] = True |
||||
|
||||
if i['model'] == 'courses.exam': |
||||
i['fields']['sort'] = '1' |
||||
|
||||
if 'finance' in i['model']: |
||||
_finance.append(i) |
||||
elif 'courses' in i['model']: |
||||
_courses.append(i) |
||||
|
||||
_theme_counts[M_material['fields']['course']] += 1 |
||||
for i in _fixture: |
||||
if i['model'] == 'courses.exam': |
||||
# Создаю для каждого экзамена экзаменационную тему |
||||
if not M_material['fields']['sort'] and M_material['fields']['course'] == i['fields']['course']: |
||||
M_material['fields']['sort'] = int(_theme_counts[M_material['fields']['course']]) |
||||
_theme_counts[M_material['fields']['course']] += 1 |
||||
_courses.append(M_material) |
||||
_theme_count += 1 # Пересчет количества экзаменов |
||||
_courses.append({"model": "courses.coursetheme", |
||||
"pk": int(_theme_count), # Расчитать ID темы - последняя |
||||
"fields": {"type": "Ex", |
||||
"price_type": "B", |
||||
"icon": "", |
||||
"course": i['fields']['course'], |
||||
"sort": int(_theme_counts[i['fields']['course']]), # Расчитать сортировку |
||||
"title": "Экзаменационная тема", |
||||
"description": ""} |
||||
}) |
||||
i['fields']['theme'] = int(_theme_count) |
||||
|
||||
|
||||
json.dump(_courses, open('fixtures/courses.json', 'w')) |
||||
json.dump(_finance, open('fixtures/finance.json', 'w')) |
||||
|
||||
_fixture = json.load(open('fixtures/management.json')) |
||||
for i in _fixture: |
||||
if i['model'] == 'management.comment': |
||||
i['fields']['saw'] = [] |
||||
tmp = {} |
||||
for key, value in i['fields'].items(): |
||||
# Убрать не нужны поля |
||||
if key != 'public': |
||||
tmp[key] = value |
||||
i['fields'] = tmp |
||||
|
||||
json.dump(_fixture, open('fixtures/management.json', 'w')) |
||||
print 'Закончил МЕРДЖ' |
||||
@ -0,0 +1,228 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from access.models import User |
||||
from courses.models import Exam, Homework, Lesson, Achievements, Course, CourseTheme |
||||
from journals.models import TeacherJ, AchievementJ, LessonJ, HomeworkJ, ExamJ, CourseThemeJ, HomeworkTry, check_journal |
||||
from storage.models import Storage |
||||
from management.models import Comment |
||||
|
||||
_fixture = json.load(open('fixtures/courses.json')) |
||||
|
||||
teachers = [] |
||||
achss = [] |
||||
lessonss = [] |
||||
homeworks = [] |
||||
exams = [] |
||||
|
||||
|
||||
def new_index(model, key, obj): |
||||
if str(key) in pk_map[model]: |
||||
return obj.objects.get(id=pk_map[model][str(key)]) |
||||
return None |
||||
|
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'journals.teacherj' not in pk_map.keys(): |
||||
pk_map['journals.teacherj'] = {} |
||||
|
||||
if 'journals.achievementj' not in pk_map.keys(): |
||||
pk_map['journals.achievementj'] = {} |
||||
|
||||
if 'journals.lessonj' not in pk_map.keys(): |
||||
pk_map['journals.lessonj'] = {} |
||||
|
||||
if 'journals.homeworkj' not in pk_map.keys(): |
||||
pk_map['journals.homeworkj'] = {} |
||||
|
||||
if 'journals.examj' not in pk_map.keys(): |
||||
pk_map['journals.examj'] = {} |
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'courses.teacherj': |
||||
teachers.append(i) |
||||
elif i['model'] == 'courses.achievementj': |
||||
achss.append(i) |
||||
elif i['model'] == 'courses.lessonj': |
||||
lessonss.append(i) |
||||
elif i['model'] == 'courses.homeworkj': |
||||
homeworks.append(i) |
||||
elif i['model'] == 'courses.examj': |
||||
exams.append(i) |
||||
|
||||
|
||||
def achnivs(): |
||||
print u'\nAchievementJ' |
||||
_now = 0 |
||||
big_len = len(achss) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in achss: |
||||
s = AchievementJ.objects.create( |
||||
group=i['fields']['group'], |
||||
title=i['fields']['title'], |
||||
text=i['fields']['text'], |
||||
student=new_index('access.user', i['fields']['student'], User), |
||||
achievement=new_index('courses.achievements', i['fields']['achievement'], Achievements), |
||||
got=i['fields']['got'], |
||||
date=i['fields']['date'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['journals.achievementj'][str(i['pk'])] = str(s.id) |
||||
|
||||
|
||||
def tej(): |
||||
print u'\nПереформирование журналов TeacherJ' |
||||
for i in teachers: |
||||
tj, c = TeacherJ.objects.get_or_create(student=new_index('access.user', i['fields']['student'], User), |
||||
course=new_index('courses.course', i['fields']['course'], Course)) |
||||
# print i['fields'] |
||||
if tj.start_date != i['fields']['start_date']: |
||||
tj.start_date = i['fields']['start_date'] |
||||
if tj.teacher != new_index('access.user', i['fields']['teacher'], User): |
||||
tj.teacher = new_index('access.user', i['fields']['teacher'], User) |
||||
# check_journal(tj, tj.student, tj.course) |
||||
tj.save() |
||||
|
||||
check_journal(tj) |
||||
pk_map['journals.teacherj'][str(i['pk'])] = str(tj.id) |
||||
|
||||
print u'\nCreate CourseThemeJ' |
||||
for journal in TeacherJ.objects.all(): |
||||
for theme in CourseTheme.objects.filter(course=journal.course): |
||||
c, c2 = CourseThemeJ.objects.get_or_create(material=theme, student=journal.student) |
||||
if c.parent != journal: |
||||
c.parent = journal |
||||
c.save() |
||||
|
||||
|
||||
def get_point(point, t, f): |
||||
if point: |
||||
return t |
||||
else: |
||||
return f |
||||
|
||||
|
||||
def lj(): |
||||
print u'\nLessonJ' |
||||
_now = 0 |
||||
big_len = len(lessonss) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in lessonss: |
||||
# print i |
||||
c, c2 = LessonJ.objects.get_or_create( |
||||
student=new_index('access.user', i['fields']['student'], User), |
||||
material=new_index('courses.lesson', i['fields']['lesson'], Lesson), |
||||
# parent=CourseThemeJ.objects.get(student=new_index('access.user', i['fields']['student'], User), |
||||
# material=new_index('courses.lesson', i['fields']['lesson'], Lesson).theme) |
||||
) |
||||
c.success = bool(i['fields']['status'] == 'F') |
||||
c.date = get_point(i['fields']['status'] != 'N', i['fields']['date'], None) |
||||
c.f_date = get_point(i['fields']['status'] == 'F', i['fields']['f_date'], None) |
||||
c.save() |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['journals.lessonj'][str(i['pk'])] = str(c.id) |
||||
|
||||
|
||||
def create_try(parent, date): |
||||
return HomeworkTry.objects.create( |
||||
parent=parent, |
||||
material=parent.material, |
||||
student=parent.student, |
||||
teacher=parent.teacher, |
||||
date=date |
||||
) |
||||
|
||||
|
||||
def hj(): |
||||
print u'\nHomeworkJ' |
||||
_now = 0 |
||||
big_len = len(homeworks) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in homeworks: |
||||
c, c2 = HomeworkJ.objects.get_or_create( |
||||
student=new_index('access.user', i['fields']['student'], User), |
||||
material=new_index('courses.homework', i['fields']['homework'], Homework) |
||||
# parent=CourseThemeJ.objects.get(student=new_index('access.user', i['fields']['student'], User), |
||||
# material=new_index('courses.homework', i['fields']['homework'], |
||||
# Homework).theme) |
||||
) |
||||
c.date = i['fields']['date'] |
||||
c.f_date = i['fields']['f_date'] |
||||
c.teacher = new_index('access.user', i['fields']['teacher'], User) |
||||
c.success = False |
||||
c.save() |
||||
comments = [new_index('management.comment', comment, Comment) for comment in i['fields']['comments']] |
||||
_try = None |
||||
for comment in comments: |
||||
must_del = False |
||||
if not _try: |
||||
_try = create_try(c, comment.date) |
||||
|
||||
if '<span class="label label-success">Задача принята! </span><br>' in comment.text.encode('utf8'): |
||||
_try.f_date = comment.date |
||||
_try.success = True |
||||
must_del = True |
||||
|
||||
if '<span class="label label-danger">Отправлено на доработку!</span><br>' in comment.text.encode('utf8'): |
||||
_try.f_date = comment.date |
||||
must_del = True |
||||
|
||||
_try.comments.add(comment) |
||||
_try.save() |
||||
|
||||
if must_del: |
||||
_try = None |
||||
must_del = False |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['journals.homeworkj'][str(i['pk'])] = str(c.id) |
||||
|
||||
|
||||
def exj(): |
||||
print u'\nExamJ' |
||||
_now = 0 |
||||
big_len = len(exams) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in exams: |
||||
# print i |
||||
c, c2 = ExamJ.objects.get_or_create( |
||||
material=new_index('courses.exam', i['fields']['exam'], Exam), |
||||
student=new_index('access.user', i['fields']['student'], User) |
||||
# parent=CourseThemeJ.objects.get(student=new_index('access.user', i['fields']['student'], User), |
||||
# material___type='Ex', |
||||
# material__course=new_index('courses.exam', i['fields']['exam'], |
||||
# Exam).course) |
||||
) |
||||
c.teacher = new_index('access.user', i['fields']['teacher'], User) |
||||
c.date = i['fields']['date'] |
||||
c.f_date = i['fields']['f_date'] |
||||
c.success = False |
||||
c.diploma = new_index('storage.storage', i['fields']['diploma'], Storage) |
||||
c.save() |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['journals.examj'][str(i['pk'])] = str(c.id) |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
# achnivs() |
||||
lj() |
||||
hj() |
||||
exj() |
||||
tej() |
||||
|
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1,88 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
|
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from storage.models import Storage |
||||
from access.models import User |
||||
from management.models import News, Comment, Feedback |
||||
|
||||
_fixture = json.load(open('fixtures/management.json')) |
||||
user_pk = 1 |
||||
findex = [] |
||||
storage = [] |
||||
crimg = [] |
||||
|
||||
|
||||
def new_index(model, key, obj): |
||||
if str(key) in pk_map[model]: |
||||
return obj.objects.get(id=pk_map[model][str(key)]) |
||||
return None |
||||
|
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'management.news' not in pk_map.keys(): |
||||
pk_map['management.news'] = {} |
||||
|
||||
if 'management.comment' not in pk_map.keys(): |
||||
pk_map['management.comment'] = {} |
||||
|
||||
if 'management.feedback' not in pk_map.keys(): |
||||
pk_map['management.feedback'] = {} |
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'management.news': |
||||
findex.append(i) |
||||
elif i['model'] == 'management.comment': |
||||
storage.append(i) |
||||
elif i['model'] == 'management.feedback': |
||||
crimg.append(i) |
||||
|
||||
print u'\nComments' |
||||
_now = 0 |
||||
big_len = len(storage) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in storage: |
||||
s = Comment.objects.create( |
||||
closed=i['fields']['closed'], |
||||
parent_id=i['fields']['parent_id'], |
||||
owner=new_index('access.user', i['fields']['owner'], User), |
||||
text=i['fields']['text'], |
||||
date=i['fields']['date'], |
||||
send=i['fields']['send'] |
||||
) |
||||
for key in i['fields']['files']: |
||||
s.files.add(new_index('storage.storage', key, Storage)) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['management.comment'][str(i['pk'])] = str(s.id) |
||||
|
||||
print u'\nFeedBack' |
||||
_now = 0 |
||||
big_len = len(crimg) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in crimg: |
||||
c = Feedback.objects.create( |
||||
closed=i['fields']['closed'], |
||||
name=i['fields']['name'], |
||||
email=i['fields']['email'], |
||||
phone=i['fields']['phone'], |
||||
text=i['fields']['text'], |
||||
date=i['fields']['date'], |
||||
send=i['fields']['send'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['management.feedback'][str(i['pk'])] = str(c.id) |
||||
|
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1,100 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
|
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from storage.models import FormatIndex, Storage, CroppedImage |
||||
|
||||
_fixture = json.load(open('fixtures/storage.json')) |
||||
user_pk = 1 |
||||
findex = [] |
||||
storage = [] |
||||
crimg = [] |
||||
|
||||
|
||||
def new_index(model, key, obj): |
||||
if str(key) in pk_map[model]: |
||||
return obj.objects.get(id=pk_map[model][str(key)]) |
||||
return None |
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'storage.formatindex' not in pk_map.keys(): |
||||
pk_map['storage.formatindex'] = {} |
||||
|
||||
if 'storage.storage' not in pk_map.keys(): |
||||
pk_map['storage.storage'] = {} |
||||
|
||||
if 'storage.croppedimage' not in pk_map.keys(): |
||||
pk_map['storage.croppedimage'] = {} |
||||
|
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'storage.formatindex': |
||||
findex.append(i) |
||||
elif i['model'] == 'storage.storage': |
||||
storage.append(i) |
||||
elif i['model'] == 'storage.croppedimage': |
||||
crimg.append(i) |
||||
|
||||
print u'\nFormatIndex' |
||||
_now = 0 |
||||
big_len = len(findex) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in findex: |
||||
f = FormatIndex.objects.create( |
||||
f_type=i['fields']['f_type'], |
||||
name=i['fields']['name'], |
||||
description=i['fields']['description'], |
||||
icon=i['fields']['icon'], |
||||
icon_class=i['fields']['icon_class'], |
||||
) |
||||
pk_map['storage.formatindex'][str(i['pk'])] = str(f.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
|
||||
print u'\nStorage' |
||||
_now = 0 |
||||
big_len = len(storage) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in storage: |
||||
s = Storage.objects.create( |
||||
loaded=i['fields']['loaded'], |
||||
name=i['fields']['name'], |
||||
key=i['fields']['key'], |
||||
original=i['fields']['original'], |
||||
f_format=new_index('storage.formatindex', i['fields']['f_format'], FormatIndex), |
||||
description=i['fields']['description'], |
||||
date=i['fields']['date'], |
||||
error=i['fields']['error'], |
||||
) |
||||
pk_map['storage.storage'][str(i['pk'])] = str(s.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
|
||||
print u'\nCroppedImg' |
||||
_now = 0 |
||||
big_len = len(crimg) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in crimg: |
||||
c = CroppedImage.objects.create( |
||||
original=new_index('storage.storage', i['fields']['original'], Storage), |
||||
big=i['fields']['big'], |
||||
middle=i['fields']['middle'], |
||||
small=i['fields']['small'], |
||||
cropped=i['fields']['cropped'], |
||||
) |
||||
pk_map['storage.croppedimage'][str(i['pk'])] = str(c.id) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1,116 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson as json |
||||
|
||||
|
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from __migrate.post_fixtures import show_progress |
||||
from access.models import User, Subscription, ActionJ |
||||
|
||||
_fixture = json.load(open('fixtures/access.json')) |
||||
user_pk = 1 |
||||
users = [] |
||||
subs = [] |
||||
acts = [] |
||||
actjs = [] |
||||
|
||||
|
||||
# Пример записи маршрута |
||||
pk_map = json.load(open('pk_maps.json')) |
||||
if 'access.user' not in pk_map: |
||||
pk_map['access.user'] = {} |
||||
|
||||
if 'access.subscription' not in pk_map: |
||||
pk_map['access.subscription'] = {} |
||||
|
||||
if 'access.actionj' not in pk_map: |
||||
pk_map['access.actionj'] = {} |
||||
|
||||
for i in _fixture: |
||||
if i['model'] == 'access.user': |
||||
users.append(i) |
||||
elif i['model'] == 'access.subscription': |
||||
subs.append(i) |
||||
elif i['model'] == 'access.actionj': |
||||
actjs.append(i) |
||||
|
||||
print u'\nUsers' |
||||
_now = 0 |
||||
big_len = len(users) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in users: |
||||
u = User.objects.create( |
||||
password=i['fields']['password'], |
||||
email=i['fields']['email'], |
||||
changed_email=i['fields']['changed_email'], |
||||
phone=i['fields']['phone'], |
||||
back_phone=i['fields']['back_phone'], |
||||
status=i['fields']['status'], |
||||
in_role=i['fields']['in_role'], |
||||
deactivate=i['fields']['deactivate'], |
||||
city=i['fields']['city'], |
||||
b_day=i['fields']['b_day'], |
||||
token=i['fields']['token'], |
||||
activate_time=i['fields']['activate_time'], |
||||
reg_status=i['fields']['reg_status'], |
||||
is_active=i['fields']['is_active'], |
||||
is_admin=i['fields']['is_admin'], |
||||
is_staff=i['fields']['is_staff'], |
||||
avatar=i['fields']['avatar'], |
||||
fname=i['fields']['fname'], |
||||
name=i['fields']['name'], |
||||
oname=i['fields']['oname'], |
||||
skype='', |
||||
facebook='', |
||||
vk='', |
||||
linkedin='', |
||||
odnoklassniki='', |
||||
date_joined=i['fields']['date_joined'] |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['access.user'][str(i['pk'])] = str(u.id) |
||||
|
||||
print u'\nSubscriptions' |
||||
_now = 0 |
||||
big_len = len(subs) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in subs: |
||||
s = Subscription.objects.create( |
||||
owner=User.objects.get(id=pk_map['access.user'][str(i['fields']['owner'])]), |
||||
news=i['fields']['news'], |
||||
teacher=i['fields']['teacher'], |
||||
new_comments=i['fields']['new_comments'], |
||||
send_sms=i['fields']['send_sms'], |
||||
courses=i['fields']['courses'], |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['access.subscription'][str(i['pk'])] = str(s.id) |
||||
|
||||
print u'\nActions' |
||||
_now = 0 |
||||
big_len = len(actjs) |
||||
show_progress(big_len, _now) |
||||
|
||||
for i in actjs: |
||||
a = ActionJ.objects.create( |
||||
student=User.objects.get(id=pk_map['access.user'][str(i['fields']['student'])]), |
||||
a_type=i['fields']['a_type'], |
||||
place=i['fields']['place'], |
||||
date=i['fields']['date'], |
||||
text=i['fields']['text'], |
||||
) |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
pk_map['access.actionj'][str(i['pk'])] = str(a.id) |
||||
|
||||
|
||||
json.dump(pk_map, open('pk_maps.json', 'w')) |
||||
@ -0,0 +1 @@ |
||||
{} |
||||
@ -0,0 +1,121 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
|
||||
import django |
||||
import sys |
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from courses.models import CourseTheme, Course |
||||
from journals.models import HomeworkTry as HT, TeacherJ, CourseThemeJ, LessonJ, HomeworkJ, ExamJ |
||||
|
||||
|
||||
def split_ht(): |
||||
# Разделить комментарии по попыткам |
||||
print '==== Разбиваю попытки' |
||||
big_length = HT.objects.all().count() |
||||
_now = 0 |
||||
show_progress(big_length, _now) |
||||
for i in HT.objects.all(): |
||||
# Получить все попытки |
||||
# Пройтись по комментариям по порядку |
||||
# Если в тексте преподавателя есть <span class="label label-danger">Отправлено на доработку!</span> |
||||
# <span class="label label-success">Задача принята! </span><br> - одобрено |
||||
do = True |
||||
for n in i.comments.all().order_by('id'): |
||||
if do: |
||||
_tmp = HT.objects.create(parent=i.parent, material=i.material, student=i.student, teacher=i.teacher, |
||||
date=i.date, f_date=i.f_date) |
||||
do = False |
||||
if '<span class="label label-success">Задача принята! </span><br>' in n.text.encode('utf8'): |
||||
#print 'Нашел одобрение' |
||||
_tmp.success = True |
||||
_tmp.f_date = n.date |
||||
_tmp.save() |
||||
do = True |
||||
elif '<span class="label label-danger">Отправлено на доработку!</span><br>' in n.text.encode('utf8'): |
||||
#print 'Нашел отказ' |
||||
_tmp.success = False |
||||
_tmp.f_date = n.date |
||||
_tmp.save() |
||||
do = True |
||||
#print 'Добавил комментарий в попытку {0}'.format(_tmp.id) |
||||
_tmp.comments.add(n) |
||||
i.delete() |
||||
_now += 1 |
||||
show_progress(big_length, _now) |
||||
print '' |
||||
|
||||
|
||||
def CTJ_split(): |
||||
print '==== Создаю журналы тем' |
||||
# TODO: Не нужно создавать тему там, где нет журналов? |
||||
# Присвоить журналы тем домашним работам/ урокам/ экзаменам |
||||
big_length = TeacherJ.objects.all().count() |
||||
_now = 0 |
||||
show_progress(big_length, _now) |
||||
for journal in TeacherJ.objects.all(): |
||||
for theme in CourseTheme.objects.filter(course=journal.course): |
||||
CTJ = CourseThemeJ.objects.create(parent=journal, material=theme, student=journal.student) |
||||
if CTJ.material.type == 'B': |
||||
for lesson in LessonJ.objects.filter(material__theme=theme, student=journal.student): |
||||
if lesson.parent != CTJ: |
||||
lesson.parent = CTJ |
||||
lesson.save() |
||||
for homework in HomeworkJ.objects.filter(material__theme=theme, student=journal.student): |
||||
if homework.parent != CTJ: |
||||
homework.parent = CTJ |
||||
homework.save() |
||||
|
||||
elif CTJ.material.type == 'Ex': |
||||
try: |
||||
ex = ExamJ.objects.get(material__course=journal.course, student=journal.student) |
||||
except ExamJ.DoesNotExist: |
||||
pass |
||||
else: |
||||
ex.parent = CTJ |
||||
ex.save() |
||||
_now += 1 |
||||
show_progress(big_length, _now, post=journal.id) |
||||
print '' |
||||
|
||||
|
||||
def empty_journals(): |
||||
print '==== Создаю пустые журналы' |
||||
big_length = Course.objects.all().count() |
||||
_now = 0 |
||||
show_progress(big_length, _now) |
||||
for course in Course.objects.all(): |
||||
try: |
||||
TeacherJ.objects.create(course=course, student=None) |
||||
except: |
||||
continue |
||||
else: |
||||
_now += 1 |
||||
show_progress(big_length, _now) |
||||
print '' |
||||
|
||||
|
||||
def show_progress(full, now, post=''): |
||||
# + Процесс отображения процентов выполнения |
||||
# Отображение процента выполнения |
||||
if full != 0: |
||||
progress = float(now / (full * 0.01)) |
||||
else: |
||||
progress = '100' |
||||
sys.stdout.write(u'\rВыполнено: {0:6.4}% {1}'.format(progress, post)) |
||||
sys.stdout.flush() |
||||
|
||||
|
||||
def rights(): |
||||
os.system('chown www-data:www-data -R *') |
||||
|
||||
|
||||
def main(): |
||||
rights() |
||||
#CTJ_split() |
||||
empty_journals() |
||||
#split_ht() |
||||
|
||||
if __name__ == '__main__': |
||||
main() |
||||
@ -0,0 +1,11 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
print '==== Загружаю DJANGO' |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from courses.models import Lesson, CourseMap |
||||
|
||||
l = Lesson.objects.all().first() |
||||
CourseMap.objects.create(lesson=l, sort=0) |
||||
@ -0,0 +1,83 @@ |
||||
function parseGetParams() { |
||||
var $_GET = {}; |
||||
var __GET = window.location.search.substring(1).split("&"); |
||||
for(var i=0; i<__GET.length; i++) { |
||||
var getVar = __GET[i].split("="); |
||||
$_GET[getVar[0]] = typeof(getVar[1])=="undefined" ? "" : getVar[1]; |
||||
} |
||||
return $_GET; |
||||
} |
||||
|
||||
function in_array(value, array) { |
||||
for(var i=0; i<array.length; i++){ |
||||
if(value == array[i]) return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
function check_email(data){ |
||||
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; |
||||
return re.test(data); |
||||
} |
||||
|
||||
function not_empty(data){ |
||||
var result = false; |
||||
if (data.length > 0){ |
||||
result = true |
||||
} |
||||
return result; |
||||
} |
||||
|
||||
function check_form(email, phone, data, error) { |
||||
$(error).fadeOut('fast'); |
||||
if(check_email(email) && not_empty(phone)){ |
||||
create_bill($(data), $(error)) |
||||
} else { |
||||
$('[name=error_place]').html('Форма заполнена не верно').fadeIn(); |
||||
} |
||||
} |
||||
|
||||
function create_bill(form, error){ |
||||
var get = parseGetParams(); |
||||
if ('admitad_uid' in get){ |
||||
var forms = $('forms'); |
||||
var ad_ui = get['admitad_uid']; |
||||
var input = '<input readonly name="uid" style="display: none;" value="'+ad_ui+'">'; |
||||
for (var i =0;i<forms.length;i++){ |
||||
$(forms[i]).append(input) |
||||
} |
||||
} |
||||
$(error).fadeOut(); |
||||
$.ajax({ |
||||
type: 'POST', |
||||
url: 'https://lms.ru/access/create_bill/', |
||||
data: $(form).serialize(), |
||||
success: function(data) { |
||||
if (data.code == '0'){ |
||||
$(error).html(data.response).fadeIn(); |
||||
} else { |
||||
if (data['data']['gift']){ |
||||
location.href=data['data']['pay_url'] |
||||
} else { |
||||
$(error).html('Счет успешно добавлен').fadeIn(); |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
function create_user(form, error){ |
||||
$(error).fadeOut(); |
||||
$.ajax({ |
||||
type: 'POST', |
||||
url: 'https://lms.ru/access/create_user/', |
||||
data: $(form).serialize(), |
||||
success: function(data) { |
||||
if (data.code == '0'){ |
||||
$(error).html(data.response).fadeIn(); |
||||
} else { |
||||
$(error).html('Пользователь успешно зарегистрирован').fadeIn(); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,19 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Title</title> |
||||
<script type="text/javascript" src='jquery.min.js'></script> |
||||
<script type="text/javascript" src='form.js'></script> |
||||
</head> |
||||
<body> |
||||
<form onclick="return false;" name="bill_form"> |
||||
<p name="error_place" style="background: #ffc; display: none;"></p> |
||||
<input name="email" placeholder="Почта" type="text"> |
||||
<input name="phone" placeholder="Телефон" type="text"> |
||||
<input name="token" value="iLeeoRvQM7gpAyAglTi3" readonly style="display: none;"> |
||||
<input name="service" value="k7vNYr2bg7q0oAznexWfsmd9ik91OtuVjizKJQuuaRiJ3aOr5I" readonly style="display: none;"> |
||||
<button onclick="check_form($('[name=email]').val(), $('[name=phone]').val(), $($(this).parent()), $('[name=error_place]'))">Отправить</button> |
||||
</form> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,13 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Подключение оплаты со стороннего ресурса</title> |
||||
</head> |
||||
<body> |
||||
<form> |
||||
<input name="email"> |
||||
<button onclick></button> |
||||
</form> |
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,15 @@ |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<title>Title</title> |
||||
<script language="javascript" src="../static/js/prototype.js"></script> |
||||
<script language="javascript" src="../static/js/NTP.js"></script> |
||||
<script language="javascript"> |
||||
NTP.sync(); |
||||
</script> |
||||
</head> |
||||
<body> |
||||
|
||||
</body> |
||||
</html> |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,10 @@ |
||||
# coding=utf-8 |
||||
import re |
||||
|
||||
with open('1.txt', 'r') as myfile: |
||||
data=myfile.read() |
||||
|
||||
r = re.compile(r"^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@([a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?\.)*(aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])$") |
||||
|
||||
n = re.compile(r'\w+$') |
||||
print r.findall(data) |
||||
@ -0,0 +1,71 @@ |
||||
einzheev@itl.com.kz |
||||
dmitry.sedov@inbox.ru |
||||
ivanpokalyuk@gmail.com |
||||
baho9208@mail.ru |
||||
feyorz@gmail.com |
||||
waximov@gmail.com |
||||
alvo_05@mail.ru |
||||
redkuk@gmail.com |
||||
petrichv@gmail.com |
||||
tagfelix500@gmail.com |
||||
ikey0172@mail.ru |
||||
gb.gayane@gmail.com |
||||
eco.pun@gmail.com |
||||
sanzharsurshanov@gmail.com |
||||
dennis.loboda@gmail.com |
||||
webar4i@gmail.com |
||||
zvetaan@gmail.com |
||||
svelavs@gmail.com |
||||
art@magicdesign.ru |
||||
mbf23tb@gmail.com |
||||
andrievskiydmitriy@gmail.com |
||||
pulya7@gmail.com |
||||
mikhail.a.gusev@gmail.com |
||||
elena@citrus-soft.ru |
||||
kropev@rarus.ru |
||||
nikonorov@labizum.ru |
||||
gulin@labizum.ru |
||||
vladfedorovich@gmail.com |
||||
Gfgaliya@gmail.com |
||||
romqa.guard@gmail.com |
||||
srfedotov@gmail.com |
||||
vinjuli4ka2008@rambler.ru |
||||
kuzzzal@gmail.com |
||||
zvetaan@gmail.com |
||||
lepon@bk.ru |
||||
y.robocopov@gmail.com |
||||
enchervinskaya@gmail.com |
||||
volokos@gmail.com |
||||
mtsalka@scnsoft.com |
||||
dubnyak404@gmail.com |
||||
o.tibirkova@yandex.ru |
||||
a.nikiforov@uplab.ru |
||||
dmytriy.suslov@gmail.com |
||||
s.shtukaturka@gmail.com |
||||
alex.dntv@gmail.com |
||||
m.chelyadenkov@gmail.com |
||||
timur.shulgin@infocraft.ru |
||||
sp.rusanov@gmail.com |
||||
zyabra@gmail.com |
||||
timakova@fistashki.org |
||||
aknoraz@deloitte.ru |
||||
sesyunin@realweb.ru |
||||
bravo.johnny@yandex.ru |
||||
didenko@braind.agency |
||||
whysecondjuly@gmail.com |
||||
yuzik.74@gmail.com |
||||
art@amado-id.ru |
||||
9330733@mail.ru |
||||
ek.design11@gmail.com |
||||
danila.zarechnev@gmail.com |
||||
kira.yakuhina@gmail.com |
||||
geiz@yandex.ru |
||||
tuning_a@mail.ru |
||||
suonarama@gmail.com |
||||
abrakadavr@gmail.com |
||||
irina_z_z@mail.ru irina.huchak@gmail.com |
||||
ha@brightstudio.ru |
||||
smorozov@qsoft.ru |
||||
a.reva@qsoft.ru |
||||
d.pogodin@itech-group.ru |
||||
lemma.ka@gmail.com |
||||
@ -0,0 +1,117 @@ |
||||
makspirogov@gmail.com |
||||
velesart@gmail.com |
||||
dmitrij.pastushenko@gmail.com |
||||
pavlov@complexsys.ru |
||||
ceo@pride-m.ru |
||||
spinngewebex@gmail.com |
||||
an_b@inbox.ru |
||||
ilyuha86@gmail.com |
||||
juniperland@gmail.com |
||||
egor@yugs.ru |
||||
kashlatch@gmail.com |
||||
niozuki@mail.ru |
||||
Gnatovych@gmail.com |
||||
sahem@mail.ru |
||||
zfalevich@gmail.com |
||||
lalaviva@yandex.ru |
||||
z.ilnurri@gmail.com |
||||
mmaslennikov@mail.ru |
||||
info@wbest.ru |
||||
arthur.subbota@gmail.com |
||||
goha@kiosov.com |
||||
Igorfedorenko@mail.ru |
||||
annazayidova@gmail.com |
||||
anton.reznichenko@gmail.com |
||||
me@flexure.ru |
||||
es@vipro.ru |
||||
km@colary.ru |
||||
kiselev_s_l@mail.ru |
||||
a.reznichenko@clientlab.ru |
||||
soldakov.p@yandex.ru |
||||
ap@ds-p.ru |
||||
702752@gmail.com |
||||
shpakova@sebbia.com |
||||
skugarov@sebbia.com |
||||
taranov@sebbia.com |
||||
rusakovevgen@gmail.com |
||||
frostoffman@gmail.com |
||||
a.khadeko@gmail.com |
||||
trogatyuk@gmail.com |
||||
hello@aokunev.com |
||||
dengenich@gmail.com |
||||
Alexpozdnyakof@gmail.com |
||||
korobajr@ya.ru |
||||
pavlov@complexsys.ru |
||||
elizaveta.bandalet@gmail.com |
||||
deniskondrashov@yahoo.com |
||||
prokosha10@gmail.com |
||||
i.flinn@yandex.ru |
||||
s.darbaidze@inostudio.com |
||||
zhurakoff@gmail.com |
||||
krylya@inbox.ru |
||||
146133@gmail.com |
||||
i.flinn@yandex.ru |
||||
sasha.melbourne@gmail.com |
||||
tiano_taurus747@mail.ru |
||||
hip-hop-org@yandex.ru |
||||
j.tolkova@yandex.ru |
||||
jaglin@itsoft.ru |
||||
den.volchkevich@gmail.com |
||||
yakimov.dmitriy@gmail.com |
||||
994677@mail.ru |
||||
rumbeshta@userstory.ru |
||||
ylkin_list@mail.ru |
||||
salofoot@fermastudio.ru |
||||
smiley1776@gmail.com |
||||
info@darneo.ru |
||||
egor@studiofact.ru |
||||
alevtina.i.danilova@gmail.com |
||||
puponina.irina@gmail.com |
||||
yevseev@mail.ru |
||||
ekde@wide-web.spb.ru |
||||
corpas@gmail.com |
||||
nitrohlorid@gmail.com |
||||
kayl24brof@gmail.com |
||||
skovalska@mail.ru |
||||
Dmitry.eremin7@gmail.com |
||||
Nikolebedev@mail.ru |
||||
ishulga86@gmail.com |
||||
bobafas@gmail.com |
||||
kalina531345@gmail.com |
||||
dsgn.shots@gmail.com |
||||
dsukhanova@gmail.com |
||||
kizilov.s@gmail.com |
||||
zlk.marjana@gmail.com |
||||
nava011235@gmail.com |
||||
i.shymanskyi@gmail.com |
||||
anastasy.petrenko87@gmail.com |
||||
dinozavrix@gmail.com |
||||
yana.berezhnaya999@gmail.com |
||||
person.ira@gmail.com |
||||
bershonok@gmail.com |
||||
vivi_bvo@mail.ru |
||||
lens2002@gmail.com |
||||
ohmeinkot@gmail.com |
||||
d22s@ya.ru |
||||
masha49@yandex.ru |
||||
biz.trp@gmail.com |
||||
leo55506@gmail.com |
||||
ksenia.vitkova@gmail.com |
||||
e.poberezhnik@artw.ru |
||||
alexzarkov@gmail.com |
||||
ekde@wide-web.spb.ru |
||||
vemelin@gmail.com |
||||
gausf2@gmail.com |
||||
vd@wearewowagency.com |
||||
va@wearewowagency.com |
||||
domrachv@gmail.com |
||||
ad@wearewowagency.com |
||||
jalalovna@yandex.ru |
||||
mohov-g@yandex.ru |
||||
st.wasp@yandex.ru |
||||
Irina.lisofa@gmail.com |
||||
Kornblumchen@yandex.ru |
||||
albytime@gmail.com |
||||
as.plyaskin@gmail.com |
||||
trunovaon@gmail.com |
||||
yuri.a.k.design@gmail.com |
||||
@ -0,0 +1,108 @@ |
||||
dina@vega.nsk.ru |
||||
andrii.dev@gmail.com |
||||
vasukhina_av@mail.ru |
||||
millie.mk5@gmail.com |
||||
goto.darya@gmail.com |
||||
vova@vovavova.ru |
||||
Loki2d@gmail.com |
||||
ilya.tymofeev@gmail.com |
||||
alpha5@yandex.ru |
||||
Sepeda.rafael@gmail.com |
||||
zionll@yandex.ru |
||||
strife88@mail.ru |
||||
ele-bulavinceva@yandex.ru |
||||
jack@creo.od.ua |
||||
vitaly.suhorukov@gmail.com |
||||
ogalin@aevrika.ru |
||||
d.lexand@gmail.com |
||||
info@aleskeroff.ru |
||||
captainanch@ya.ru |
||||
denisgorbunovmsc@gmail.com |
||||
goshamanasyan@gmail.com |
||||
katerina.musinova@gmail.com |
||||
dmokichev@gmail.com |
||||
andr@andr.kz |
||||
tingmann@gmail.com |
||||
romazzz@me.com |
||||
execer@mail.ru |
||||
egysakova@gmail.com |
||||
alex.sibilev@tmd.tv |
||||
portnova.ok@yandex.ru |
||||
vtoryanik@livemaster.ru |
||||
civanov@multicharts.com |
||||
alinazoryna@gmail.com |
||||
wellkin@gmail.com |
||||
noc-engineer@outlook.com |
||||
denis.kryukov@cyberiada.com |
||||
tonyavec@gmail.com |
||||
artemzig@gmail.com |
||||
asvdesign@yandex.ru |
||||
1ngeneer@mail.ru |
||||
fynart@gmail.com |
||||
pnz_08@mail.ru |
||||
a@cdnvideo.ru |
||||
sokdis@gmail.com |
||||
blood4085@inbox.ru |
||||
goryayeva@gmail.com |
||||
vlkitov@gmail.com |
||||
aveelik@gmail.com |
||||
lida.pihora@gmail.com |
||||
yanchus@mail.ru |
||||
olgarafikova00@mail.ru |
||||
lena@mura-show.com |
||||
wm5soft@gmail.com |
||||
torus.andrey@gmail.com |
||||
romameteva@azoft.com |
||||
dim@gifts.ru |
||||
9nkags@gmail.com |
||||
berezinaiv@gmail.com |
||||
qmach@yandex.ru |
||||
iandrew80@gmail.com |
||||
irynagillis@gmail.com |
||||
evgenia.deg@gmail.com |
||||
tarshis.d@gmail.com |
||||
e.taychenachev@gmail.com |
||||
art.filkov@gmail.com |
||||
connect@me.com |
||||
emelyanova.olena@gmail.com |
||||
pd4774@yandex.ru |
||||
wizzzart@gmail.com |
||||
tuhachevski@gmail.com |
||||
fazeful@gmail.com |
||||
molot877@mail.ru |
||||
vklimovs@mail.ru |
||||
slavinanm@gmail.com |
||||
diems@mail.ru |
||||
efomina@msk.vtb.ru |
||||
xnata.d@gmail.com |
||||
avmakarov@asuproject.ru |
||||
corvinun@gmail.com |
||||
navelis@mail.ru |
||||
glebkost.dev@gmail.com |
||||
nicknatochiev@me.com |
||||
romagrog@gmail.com |
||||
d.letko@articul.ru |
||||
batovd@gmail.com |
||||
nikolay.stanislavchuk@gmail.com |
||||
iamkonev@gmail.com |
||||
zaroman1989@gmail.com |
||||
cat.kubasova@yandex.ru |
||||
same.tea@gmail.com |
||||
irina.medyanceva@gmail.com |
||||
kattia2592@gmail.com |
||||
olya.zp@ya.ru |
||||
olgasnbrd@gmail.com |
||||
Dhopkins@ya.ru |
||||
yulenka26@gmail.com |
||||
anton.tmur@gmail.com |
||||
egodyston@gmail.com |
||||
bel.art@mail.ru |
||||
evgeniy@le-de.ru |
||||
yakimova.design@gmail.com |
||||
olga@le-de.ru |
||||
ereshko.igor@gmail.com |
||||
tn@bitek.ru |
||||
gafurovt@gmail.com |
||||
sofiakelemzina@gmail.com |
||||
dv@ilab.kz |
||||
bez.b.unix@gmail.com |
||||
@ -0,0 +1,142 @@ |
||||
kononenko.e.p@gmail.com |
||||
aplusp@yandex.ru |
||||
ugarova@magora-systems.ru |
||||
skoryk.yulia@gmail.com |
||||
skorodymov@mail.ru |
||||
xnia.nik@gmail.com |
||||
yuliyahil@gmail.com |
||||
alex@space-o.ru |
||||
pae1@europlan.ru |
||||
stasya1004@mail.ru |
||||
design@spaceapp.ru |
||||
alexey.g.demchuk@gmail.com |
||||
ovodesign82@gmail.com |
||||
nushamenshikova@gmail.com |
||||
am@bonoagency.ru |
||||
il@bvdp.ru |
||||
ss@bvdp.ru |
||||
voron86618@gmail.com |
||||
makarichev.aa@gmail.com |
||||
kombikovdamir@gmail.com |
||||
khakifeva@croc.ru |
||||
AParshikov@croc.ru |
||||
alevova@gmail.com |
||||
info@d-element.ru |
||||
lesiawuss@gmail.com |
||||
Vorobjoff@yandex.ru |
||||
iskan153@gmail.com |
||||
era.gromov@gmail.com |
||||
ya@rl.ru |
||||
ysmirnovy@gmail.com |
||||
gavrylov88@gmail.com |
||||
alexandrshum@gmail.com |
||||
raceoffer@ya.ru |
||||
yuri.froloff@gmail.com |
||||
siv11@mail.ru |
||||
vpetrova21@yandex.ru |
||||
13malix@gmail.com |
||||
execer@mail.ru |
||||
itsarenko@gmail.com |
||||
segavosegag@gmail.com |
||||
kolos.natasha@gmail.com |
||||
limosiaya@gmail.com |
||||
andrayvelitchko@gmail.com |
||||
lina.savenkova@gmail.com |
||||
stanislav.vir@gmail.com |
||||
lentyaev.m@yandex.ru |
||||
artemich92@mail.ru |
||||
89169113911@mail.ru |
||||
marina.kavetskaya@gmail.com |
||||
mobester@gmail.com |
||||
fedotov@tyr24.ru |
||||
zyabra@gmail.com |
||||
bsv@legacystudio.ru |
||||
todanilin@gmail.com |
||||
pplahov@gmail.com |
||||
sokwork@gmail.com |
||||
kukva@me.com |
||||
aytigor@gmail.com |
||||
agarzaeva@yandex.ru |
||||
ilyaa77@mail.ru |
||||
krutolapova@mail.ru |
||||
alekseyskrobot@gmail.com |
||||
godortneo@gmail.com |
||||
volkova78@bk.ru |
||||
mako731@ya.ru |
||||
m.leybova@gmail.com |
||||
denisbryuhanov@gmail.com |
||||
alexsteptlt@mail.ru |
||||
abcdesign1@mail.ru |
||||
veronikavick87@gmail.com |
||||
jeneva7@gmail.com |
||||
as.kretinin@gmail.com |
||||
skp_15@mail.ru |
||||
k-pastukhova@yandex.ru |
||||
onimfa@mail.ru |
||||
churkin.ig@gmail.com |
||||
alla.sukhostavskaya@gmail.com |
||||
kirsti-b@yandex.ru |
||||
babyas@yandex.ru |
||||
kosan81@yandex.ru |
||||
beruchie@yandex.ru |
||||
petrusevich-vladimir@yandex.ru, |
||||
shama2004@bk.ru |
||||
alex@hcube.ru |
||||
sens11even@gmail.com |
||||
fessdew@gmail.com |
||||
skorodymov@mail.ru |
||||
uryukovv@gmail.com |
||||
ageewa@gmail.com |
||||
sokolov.maksim92@yandex.ru |
||||
shtrudle@yandex.ru |
||||
tooob52@gmail.com |
||||
sonicmails@yandex.ru |
||||
ezavodchikova@me.com |
||||
alinarlova@gmail.com |
||||
artteq@gmail.com |
||||
azazello@inbox.ru |
||||
rasulmhk@gmail.com |
||||
serglookas@yandex.ru |
||||
edgecrasher@gmail.com |
||||
a.isakov@ruslink.pro |
||||
elle.s.m@yandex.ru |
||||
tuna1706@yandex.ru |
||||
jekashohirev@gmail.com |
||||
nazarov.design@gmail.com |
||||
alpmats@gmail.com |
||||
sarosekml@yandex.ru |
||||
norkensdrommar@yandex.ru |
||||
andrei_gavrilenko@inbox.ru |
||||
galadriel2007@mail.ru |
||||
protchenkova_dar@mail.ru |
||||
dseliverstov@yandex.ru |
||||
priymakdmitry@gmail.com |
||||
empaher3@yandex.ru |
||||
m.chelyadenkov@gmail.com |
||||
natfaga@yahoo.de |
||||
yakorolevaleksei@yandex.ru |
||||
zi_zind@hotmail.com |
||||
lileklive@mail.ru |
||||
pavelvch@gmail.com |
||||
shashnia@gmail.com |
||||
nifakt1@gmail.com |
||||
andreyy2010@ya.ru |
||||
jugastrov@gmail.com |
||||
pravo@roskvartal.ru |
||||
pervushin@avis-dc.ru |
||||
ag@lab.ag |
||||
hitzen88@gmail.com |
||||
yuriy.chetverikov@gmail.com |
||||
atree2010@gmail.com |
||||
jamadharma13@gmail.com |
||||
spolaspola@gmail.com |
||||
ok.msaavedra@gmail.com |
||||
Kitt.diz@gmail.com |
||||
goto.darya@gmail.com |
||||
mbf23tb@gmail.com |
||||
letterca@gmail.com |
||||
mary@ihome.ru |
||||
info@legacystudio.ru |
||||
lens2002@gmail.com |
||||
susannafeisal6@gmail.com |
||||
alexmname@gmail.com |
||||
@ -0,0 +1,106 @@ |
||||
|
||||
kononenko.e.p@gmail.com |
||||
aplusp@yandex.ru |
||||
ugarova@magora-systems.ru |
||||
skoryk.yulia@gmail.com |
||||
skorodymov@mail.ru |
||||
xnia.nik@gmail.com |
||||
yuliyahil@gmail.com |
||||
alex@space-o.ru |
||||
pae1@europlan.ru |
||||
stasya1004@mail.ru |
||||
design@spaceapp.ru |
||||
alexey.g.demchuk@gmail.com |
||||
ovodesign82@gmail.com |
||||
nushamenshikova@gmail.com |
||||
am@bonoagency.ru |
||||
il@bvdp.ru |
||||
ss@bvdp.ru |
||||
voron86618@gmail.com |
||||
makarichev.aa@gmail.com |
||||
kombikovdamir@gmail.com |
||||
khakifeva@croc.ru |
||||
AParshikov@croc.ru |
||||
alevova@gmail.com |
||||
info@d-element.ru |
||||
lesiawuss@gmail.com |
||||
Vorobjoff@yandex.ru |
||||
iskan153@gmail.com |
||||
era.gromov@gmail.com |
||||
ya@rl.ru |
||||
ysmirnovy@gmail.com |
||||
gavrylov88@gmail.com |
||||
alexandrshum@gmail.com |
||||
raceoffer@ya.ru |
||||
yuri.froloff@gmail.com |
||||
siv11@mail.ru |
||||
vpetrova21@yandex.ru |
||||
13malix@gmail.com |
||||
execer@mail.ru |
||||
itsarenko@gmail.com |
||||
segavosegag@gmail.com |
||||
kolos.natasha@gmail.com |
||||
limosiaya@gmail.com |
||||
andrayvelitchko@gmail.com |
||||
lina.savenkova@gmail.com |
||||
stanislav.vir@gmail.com |
||||
lentyaev.m@yandex.ru |
||||
artemich92@mail.ru |
||||
89169113911@mail.ru |
||||
marina.kavetskaya@gmail.com |
||||
mobester@gmail.com |
||||
fedotov@tyr24.ru |
||||
zyabra@gmail.com |
||||
bsv@legacystudio.ru |
||||
todanilin@gmail.com |
||||
pplahov@gmail.com |
||||
sokwork@gmail.com |
||||
kukva@me.com |
||||
aytigor@gmail.com |
||||
agarzaeva@yandex.ru |
||||
ilyaa77@mail.ru |
||||
krutolapova@mail.ru |
||||
alekseyskrobot@gmail.com |
||||
godortneo@gmail.com |
||||
volkova78@bk.ru |
||||
mako731@ya.ru |
||||
m.leybova@gmail.com |
||||
denisbryuhanov@gmail.com |
||||
alexsteptlt@mail.ru |
||||
abcdesign1@mail.ru |
||||
veronikavick87@gmail.com |
||||
jeneva7@gmail.com |
||||
as.kretinin@gmail.com |
||||
skp_15@mail.ru |
||||
k-pastukhova@yandex.ru |
||||
onimfa@mail.ru |
||||
churkin.ig@gmail.com |
||||
alla.sukhostavskaya@gmail.com |
||||
kirsti-b@yandex.ru |
||||
babyas@yandex.ru |
||||
kosan81@yandex.ru |
||||
beruchie@yandex.ru |
||||
petrusevich-vladimir@yandex.ru, |
||||
shama2004@bk.ru |
||||
alex@hcube.ru |
||||
sens11even@gmail.com |
||||
fessdew@gmail.com |
||||
skorodymov@mail.ru |
||||
uryukovv@gmail.com |
||||
ageewa@gmail.com |
||||
sokolov.maksim92@yandex.ru |
||||
shtrudle@yandex.ru |
||||
tooob52@gmail.com |
||||
sonicmails@yandex.ru |
||||
ezavodchikova@me.com |
||||
alinarlova@gmail.com |
||||
artteq@gmail.com |
||||
azazello@inbox.ru |
||||
rasulmhk@gmail.com |
||||
serglookas@yandex.ru |
||||
edgecrasher@gmail.com |
||||
a.isakov@ruslink.pro |
||||
elle.s.m@yandex.ru |
||||
tuna1706@yandex.ru |
||||
jekashohirev@gmail.com |
||||
nazarov.design@gmail.com |
||||
@ -0,0 +1,20 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from finance.models import Bill |
||||
|
||||
for i in Bill.objects.filter(manager__is_admin=True): |
||||
i.opener = i.manager |
||||
i.manager = None |
||||
i.save() |
||||
|
||||
for i in Bill.objects.filter(manager__in_role__in=['M', 'S']): |
||||
i._method = 'S' |
||||
i.save() |
||||
|
||||
@ -0,0 +1,121 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from access.models import User |
||||
from journals.models import HomeworkTry, TeacherJ, HomeworkJ, ExamJ, ExamTry |
||||
from lms.tools import show_progress |
||||
|
||||
old = User.objects.get(email='raso.practice@gmail.com') |
||||
new = User.objects.get(email='nataliya.akimova47@gmail.com') |
||||
new2 = User.objects.get(email='html@bedev.ru') |
||||
|
||||
all = (int(TeacherJ.objects.filter(teacher=old).count()) + |
||||
int(HomeworkJ.objects.filter(teacher=old, f_date=None).count()) + |
||||
int(HomeworkTry.objects.filter(teacher=old, f_date=None).count()) + |
||||
int(ExamJ.objects.filter(teacher=old, f_date=None).count()) + |
||||
int(ExamTry.objects.filter(teacher=old, f_date=None).count()) |
||||
) |
||||
|
||||
works = ( |
||||
('TJ', TeacherJ.objects.filter(teacher=old).exclude(progress=100)), |
||||
('HJ', HomeworkJ.objects.filter(teacher=old, f_date=None)), |
||||
('HT', HomeworkTry.objects.filter(teacher=old, f_date=None)), |
||||
('EJ', ExamJ.objects.filter(teacher=old, f_date=None)), |
||||
('ET', ExamTry.objects.filter(teacher=old, f_date=None)) |
||||
) |
||||
n = 0 |
||||
to_new = set() |
||||
to_new2 = set() |
||||
|
||||
print('Всего работ: %s' % all) |
||||
for name, work in works: |
||||
for point in work: |
||||
if name == 'TJ': |
||||
point.teacher = new |
||||
to_new.add(point.student.email) |
||||
|
||||
elif name == 'HJ': |
||||
if point.material.theme.sort < 10: |
||||
point.teacher = new |
||||
else: |
||||
point.teacher = new2 |
||||
if point.parent.parent.teacher != new2: |
||||
point.parent.parent.teacher = new2 |
||||
point.parent.parent.save() |
||||
|
||||
try: |
||||
to_new.remove(point.student.email) |
||||
except: |
||||
pass |
||||
to_new2.add(point.student.email) |
||||
|
||||
elif name == 'HT': |
||||
if point.parent.material.theme.sort < 10: |
||||
point.teacher = new |
||||
else: |
||||
point.teacher = new2 |
||||
if point.parent.parent.parent.teacher != new2: |
||||
point.parent.parent.parent.teacher = new2 |
||||
point.parent.parent.parent.save() |
||||
|
||||
if point.parent.teacher != new2: |
||||
point.parent.teacher = new2 |
||||
point.parent.save() |
||||
|
||||
try: |
||||
to_new.remove(point.student.email) |
||||
except: |
||||
pass |
||||
to_new2.add(point.student.email) |
||||
|
||||
elif name == 'EJ': |
||||
point.teacher = new2 |
||||
if point.parent.parent.teacher != new2: |
||||
point.parent.parent.teacher = new2 |
||||
point.parent.parent.save() |
||||
|
||||
try: |
||||
to_new.remove(point.student.email) |
||||
except: |
||||
pass |
||||
to_new2.add(point.student.email) |
||||
|
||||
elif name == 'ET': |
||||
point.teacher = new2 |
||||
if point.parent.teacher != new2: |
||||
point.parent.teacher = new2 |
||||
point.parent.save() |
||||
|
||||
if point.parent.parent.parent.teacher != new2: |
||||
point.parent.parent.parent.teacher = new2 |
||||
point.parent.parent.parent.save() |
||||
|
||||
try: |
||||
to_new.remove(point.student.email) |
||||
except: |
||||
pass |
||||
to_new2.add(point.student.email) |
||||
|
||||
point.save() |
||||
show_progress(all, n) |
||||
n += 1 |
||||
|
||||
finish = datetime.datetime.now() |
||||
print('\nTIME: %s seconds' % (finish - start).seconds) |
||||
print('======================') |
||||
print(new) |
||||
for i in to_new: |
||||
print(i) |
||||
|
||||
print('======================') |
||||
print(new2) |
||||
for i in to_new2: |
||||
print(i) |
||||
@ -0,0 +1,60 @@ |
||||
# 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 journals.models import HomeworkTry, HomeworkJ |
||||
|
||||
|
||||
def good(tr): |
||||
if not tr.success: |
||||
tr.success = True |
||||
if not tr.f_date: |
||||
tr.f_date = tr.date |
||||
tr.save() |
||||
|
||||
|
||||
def fail(tr): |
||||
if tr.success: |
||||
tr.success = False |
||||
if not tr.f_date: |
||||
if tr.date: |
||||
tr.f_date = tr.date |
||||
else: |
||||
tr.f_date = datetime.datetime.now() |
||||
tr.save() |
||||
|
||||
|
||||
def empty(tr): |
||||
tr.delete() |
||||
|
||||
for i in HomeworkTry.objects.all(): |
||||
if i.comments.all(): |
||||
for comment in i.comments.all(): |
||||
if comment.owner.in_role == 'T': |
||||
if u'Задача принята!' in comment.text: |
||||
good(i) |
||||
break |
||||
elif u'Отправлено на доработку!' in comment.text: |
||||
fail(i) |
||||
break |
||||
else: |
||||
print comment.text |
||||
result = raw_input(u'Сдано? Y/N: ') |
||||
if result in ['y', 'Y', 'н', 'Н']: |
||||
good(i) |
||||
elif result in ['n', 'N', 'т', 'Т']: |
||||
fail(i) |
||||
else: |
||||
empty(i) |
||||
|
||||
#for i in HomeworkJ.objects.all(): |
||||
# if i.date and i.f_date and not i.success: |
||||
# i.success = True |
||||
# i.save() |
||||
@ -0,0 +1,12 @@ |
||||
|
||||
# coding=utf-8 |
||||
import os |
||||
import datetime |
||||
import django |
||||
import sys |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from courses.models import Course |
||||
for course in Course.objects.all(): |
||||
course.build_map() |
||||
@ -0,0 +1,21 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from access.models import UserRequest |
||||
|
||||
_in = { |
||||
#'user': [] |
||||
} |
||||
|
||||
for i in UserRequest.objects.all(): |
||||
if not _in.get(i.user.id): |
||||
_in[i.user.id] = [i.ip] |
||||
else: |
||||
if i.ip in _in[i.user.id]: |
||||
i.delete() |
||||
else: |
||||
_in[i.user.id].append(i.ip) |
||||
@ -0,0 +1,12 @@ |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from journals.models import LessonJ |
||||
|
||||
for lj in LessonJ.objects.filter(parent=None): |
||||
print lj |
||||
lj.save('only_parent') |
||||
@ -0,0 +1,24 @@ |
||||
# coding=utf-8 |
||||
import datetime |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from access.models import User |
||||
from journals.models import ExamTry, HomeworkTry |
||||
from management.letters import sent_new_expired |
||||
|
||||
for res in (ExamTry.objects.filter(f_date=None).exclude(expired=True), |
||||
HomeworkTry.objects.filter(f_date=None).exclude(expired=True)): |
||||
#print res |
||||
for _try in res: |
||||
#print _try |
||||
# Проверка экзамена |
||||
if _try.date + datetime.timedelta(days=1) < datetime.datetime.now(): |
||||
_try.expired = True |
||||
_try.save() |
||||
for user in User.objects.filter(in_role='S2'): |
||||
sent_new_expired(_try, user.email) |
||||
@ -0,0 +1,20 @@ |
||||
# 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 |
||||
from journals.models import TeacherJ |
||||
from access.models import User |
||||
|
||||
for user in User.objects.all(): |
||||
for course in Course.objects.all(): |
||||
if not TeacherJ.objects.filter(student=user, course=course).exists(): |
||||
|
||||
print course |
||||
print user |
||||
@ -0,0 +1,106 @@ |
||||
# 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 journals.models import TeacherJ, LessonJ, HomeworkJ, ExamJ, CourseThemeJ |
||||
from courses.models import Course, CourseMap |
||||
|
||||
|
||||
def getMap_journal(_map, student): |
||||
ob = None |
||||
if _map._type == 'L': |
||||
#try: |
||||
ob = LessonJ.objects.get(material=_map.lesson, student=student) |
||||
#except LessonJ.DoesNotExist: |
||||
# print _map.lesson |
||||
# print student.email |
||||
# raise LessonJ.DoesNotExist |
||||
|
||||
elif _map._type == 'H': |
||||
#try: |
||||
ob = HomeworkJ.objects.get(material=_map.homework, student=student) |
||||
#except HomeworkJ.DoesNotExist: |
||||
# print _map.lesson |
||||
# print student.email |
||||
# raise HomeworkJ.DoesNotExist |
||||
|
||||
elif _map._type == 'E': |
||||
#try: |
||||
ob = ExamJ.objects.get(material=_map.exam, student=student) |
||||
#except ExamJ.DoesNotExist: |
||||
# print _map.lesson |
||||
# print student.email |
||||
# raise ExamJ.DoesNotExist |
||||
|
||||
return ob |
||||
|
||||
|
||||
def rel(j): |
||||
j.date = None |
||||
j.f_date = None |
||||
j.success = False |
||||
j.save() |
||||
|
||||
for course in Course.objects.all(): |
||||
print course |
||||
for journal in TeacherJ.objects.filter(course=course).order_by('-student__id'): |
||||
for theme in CourseThemeJ.objects.filter(parent=journal): |
||||
#print theme |
||||
theme.date = None |
||||
theme.f_date = None |
||||
theme.success = False |
||||
theme.save() |
||||
|
||||
last = None |
||||
_reload = False |
||||
|
||||
for _map in CourseMap.objects.filter(course=course).order_by('sort'): |
||||
try: |
||||
j = getMap_journal(_map, journal.student) |
||||
except LessonJ.DoesNotExist: |
||||
pass |
||||
except HomeworkJ.DoesNotExist: |
||||
pass |
||||
except ExamJ.DoesNotExist: |
||||
pass |
||||
else: |
||||
status = j.get_status_flag() |
||||
|
||||
if status == 'F' and j.date and j.f_date and j.success and not _reload: |
||||
last = j |
||||
|
||||
elif _reload: |
||||
rel(j) |
||||
|
||||
elif _map.sort and last: |
||||
if getMap_journal(CourseMap.objects.get(course=course, sort=int(_map.sort)-1), journal.student) == last: |
||||
_reload = True |
||||
s = False |
||||
if not j.date: |
||||
j.date = datetime.datetime.now() |
||||
s = True |
||||
|
||||
if j.f_date: |
||||
j.f_date = None |
||||
s = True |
||||
|
||||
if j.success: |
||||
j.success = False |
||||
s = True |
||||
|
||||
if s: |
||||
j.save() |
||||
|
||||
elif _map.sort and not last: |
||||
_reload = True |
||||
rel(j) |
||||
|
||||
|
||||
|
||||
@ -0,0 +1,34 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from lms.settings import BASE_DIR |
||||
from journals.models import TeacherJ, check_journal |
||||
from lms.tools import show_progress |
||||
|
||||
all = TeacherJ.objects.filter(progress__gt=0).count() |
||||
|
||||
print('Количество журналов на проверку: %s' % all) |
||||
n = 0 |
||||
f = open(os.path.join(BASE_DIR, 'journals/check_switch'), 'w') |
||||
f.write('1\n') |
||||
f.close() |
||||
|
||||
for i in TeacherJ.objects.filter(progress__gt=0).order_by('-id'): |
||||
check_journal(i, from_console=True) |
||||
show_progress(all, n) |
||||
n += 1 |
||||
|
||||
f = open(os.path.join(BASE_DIR, 'journals/check_switch'), 'w') |
||||
f.write('0\n') |
||||
f.close() |
||||
|
||||
finish = datetime.datetime.now() |
||||
print('\nTIME: %s seconds' % (finish-start).seconds) |
||||
@ -0,0 +1,28 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from journals.models import TeacherJ, LessonJ |
||||
# Получить все журналы, где начато обучение |
||||
for journal in TeacherJ.objects.filter(status='W'): |
||||
before = [] |
||||
for l in LessonJ.objects.filter(parent__parent=journal).order_by('material__token'): |
||||
if l.get_status_flag()=='N': |
||||
before.append(l) |
||||
else: |
||||
if before: |
||||
for i in before: |
||||
print('Открыл: {0}'.format(i.id)) |
||||
i.open_material() |
||||
|
||||
# Получить |
||||
# Найти уроки, находящиеся в статусе N в середине курса |
||||
|
||||
# Открыть в статус - доступно |
||||
@ -0,0 +1,16 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from journals.models import HomeworkJ |
||||
|
||||
for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None): |
||||
i.open_next() |
||||
|
||||
@ -0,0 +1,47 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
print(1) |
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
print(2) |
||||
from courses.models import CourseMap |
||||
from journals.models import TeacherJ, LessonJ, HomeworkJ, HomeworkTry, CourseThemeJ |
||||
# Получить все журналы, где начато обучение |
||||
print(3) |
||||
last = TeacherJ.objects.filter(status='W').order_by('-id').last().id |
||||
print(4) |
||||
|
||||
for journal in TeacherJ.objects.filter(id=26933).order_by('-id'): |
||||
print(journal.id) |
||||
if HomeworkTry.objects.filter(material__course__id=journal.course.id, student__id=journal.student.id).exists(): |
||||
print('4a') |
||||
hw = int(CourseMap.objects.get( |
||||
homework=HomeworkTry.objects.filter(parent__parent__parent=journal).order_by('id').last().material).sort) |
||||
print(hw) |
||||
for i in LessonJ.objects.filter(parent__parent=journal): |
||||
if int(CourseMap.objects.get(lesson=i.material).sort) > hw: |
||||
i.date = None |
||||
i.f_date = None |
||||
i.success = False |
||||
i.save() |
||||
else: |
||||
try: |
||||
i.saw_this() |
||||
except Exception as e: |
||||
print(e) |
||||
print(i) |
||||
|
||||
|
||||
for ct in CourseThemeJ.objects.filter(parent=journal): |
||||
if LessonJ.objects.filter(parent=ct).count() == LessonJ.objects.filter(parent=ct, date=None).count(): |
||||
ct.date = None |
||||
ct.save() |
||||
|
||||
print(5) |
||||
#for i in HomeworkJ.objects.filter(f_date=None).exclude(date=None): |
||||
# i.open_next() |
||||
@ -0,0 +1,28 @@ |
||||
# 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 __migrate.post_fixtures import show_progress |
||||
from journals.models import HomeworkJ, LessonJ, TeacherJ |
||||
from access.models import User |
||||
from courses.models import Course |
||||
|
||||
_now = 0 |
||||
big_len = TeacherJ.objects.all().count() |
||||
show_progress(big_len, _now) |
||||
|
||||
for journal in TeacherJ.objects.all(): |
||||
for hj in HomeworkJ.objects.filter(student=journal.student): |
||||
if hj.get_status_flag() != 'N': |
||||
for lj in LessonJ.objects.filter(student=journal.student, material__theme=hj.material.theme): |
||||
lj.saw_this() |
||||
_now += 1 |
||||
show_progress(big_len, _now) |
||||
@ -0,0 +1,8 @@ |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
@ -0,0 +1,9 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
@ -0,0 +1,26 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from journals.models import TeacherJ, CourseThemeJ, LessonJ, ExamJ, HomeworkJ |
||||
|
||||
for i in TeacherJ.objects.all(): |
||||
if i.waiting.exists(): |
||||
for n in i.waiting.all(): |
||||
obj = n.get_obj() |
||||
if n._type == 'L': |
||||
mj = LessonJ.objects.get(material=obj, student=i.student) |
||||
|
||||
elif n._type == 'H': |
||||
mj = HomeworkJ.objects.get(material=obj, student=i.student) |
||||
|
||||
elif n._type == 'E': |
||||
mj = ExamJ.objects.get(material=obj, student=i.student) |
||||
|
||||
cj = CourseThemeJ.objects.get(student=i.student, material=obj.theme) |
||||
if cj.get_status_flag() == 'N' or mj.get_status_flag() != 'N': |
||||
i.waiting.remove(n) |
||||
@ -0,0 +1,27 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from finance.models import Price |
||||
from lms.tools import show_progress |
||||
|
||||
all = Price.objects.filter(by_time=0, post_fire=0).count() |
||||
|
||||
print('Количество услуг на проверку: %s' % all) |
||||
n = 0 |
||||
|
||||
for i in Price.objects.filter(by_time=0, post_fire=0): |
||||
i.check_points() |
||||
show_progress(all, n) |
||||
n += 1 |
||||
|
||||
finish = datetime.datetime.now() |
||||
print('\nTIME: %s seconds' % (finish-start).seconds) |
||||
@ -0,0 +1,41 @@ |
||||
from __future__ import print_function |
||||
import datetime |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from access.models import User |
||||
from journals.models import ExamTry, HomeworkTry |
||||
|
||||
|
||||
def check_robo_prep(): |
||||
teacher = User.objects.get(email='t@lms.ru') |
||||
handler = [] |
||||
for journal in HomeworkTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by('date'): |
||||
if journal.parent.get_status_flag not in ['N', 'F']: |
||||
handler.append(journal) |
||||
|
||||
for journal in ExamTry.objects.filter(teacher=teacher, f_date=None).exclude(success=True, date=None).order_by('date'): |
||||
if journal.parent.get_status_flag not in ['N', 'F']: |
||||
handler.append(journal) |
||||
|
||||
print(handler) |
||||
for _tr in handler: |
||||
for _cm in _tr.comments.all(): |
||||
s = False |
||||
print(_cm.text) |
||||
if 'GO_TO_SUCCESS' in _cm.text: |
||||
_tr.success = True |
||||
_tr.f_date = datetime.datetime.now() |
||||
s = True |
||||
elif 'GO_TO_FAIL' in _cm.text: |
||||
_tr.f_date = datetime.datetime.now() |
||||
s = True |
||||
if s: |
||||
_tr.save() |
||||
|
||||
check_robo_prep() |
||||
@ -0,0 +1,24 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
# Переназначение перподавателя |
||||
from journals.models import TeacherJ, HomeworkJ, HomeworkTry |
||||
from access.models import User |
||||
old = User.objects.get(id=1324) |
||||
for tj in TeacherJ.objects.filter(teacher=old).exclude(student=None): |
||||
if not (tj.student.is_admin and tj.student.is_staff): |
||||
print(tj.id) |
||||
tj.teacher = None |
||||
tj.save() |
||||
ht = tj.get_current_ht() |
||||
hw = tj.get_last_hw() |
||||
hw.teacher=None |
||||
hw.save() |
||||
ht.teacher=None |
||||
ht.save() |
||||
print(ht.teacher) |
||||
@ -0,0 +1,31 @@ |
||||
# coding=utf-8 |
||||
from __future__ import print_function |
||||
from __future__ import print_function |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from storage.models import Storage, CroppedImage |
||||
|
||||
errors = [] |
||||
for store in Storage.objects.all(): |
||||
# Проверить original, f_format.icon |
||||
obj = (store.original.path if store.original else '', |
||||
store.f_format.icon.path if store.f_format and store.f_format.icon else '') |
||||
for i in obj: |
||||
if i and not os.path.exists(i): |
||||
print('Storage: {0}'.format(store.id)) |
||||
#print 'Ошибки файлов: {0}'.format(len(errors)) |
||||
|
||||
for store in CroppedImage.objects.all(): |
||||
# croppedimage.big, croppedimage.middle, croppedimage.small |
||||
obj = (store.big.path if store.big else '', |
||||
store.middle.path if store.middle else '', |
||||
store.small.path if store.small else '') |
||||
for i in obj: |
||||
if i and not os.path.exists(i): |
||||
print('CroppedImage: {0}'.format(store.id)) |
||||
#print 'Ошибки файлов: {0}'.format(len(errors)) |
||||
@ -0,0 +1,24 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from journals.models import TeacherJ, ExamJ, HomeworkJ, LessonJ |
||||
|
||||
for journal in TeacherJ.objects.all(): |
||||
if journal.waiting.exists(): |
||||
for i in journal.waiting.all(): |
||||
j = None |
||||
_type, _map = i.get_next() |
||||
if _type == 'L': |
||||
j = LessonJ.objects.filter(material=_map, student=journal.student) |
||||
elif _type == 'H': |
||||
j = HomeworkJ.objects.filter(material=_map, student=journal.student) |
||||
elif _type == 'E': |
||||
j = ExamJ.objects.filter(material=_map, student=journal.student) |
||||
|
||||
if j and j.first().get_status_flag() == 'N': |
||||
journal.waiting.remove(i) |
||||
@ -0,0 +1,56 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import datetime |
||||
|
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from management.models import Comment, gen_comment_token |
||||
from lms.tools import show_progress |
||||
|
||||
all = Comment.objects.all().count() |
||||
|
||||
print('Количество точек на проверку: %s' % all) |
||||
n = 0 |
||||
|
||||
exclude = ['[size=100]', '[/size]', '[size=150]', '[/font]', '[table]', '[/table]', |
||||
'[tr]', '[td]', '[/td]', '[/tr]'] |
||||
rever = ['[b]', '[i]', '[*]', '[url=', ] |
||||
for i in exclude: |
||||
rever.append(i) |
||||
|
||||
for comment in Comment.objects.all().order_by('-date'): |
||||
s = False |
||||
if not comment.token: |
||||
comment.token = gen_comment_token(comment) |
||||
s = True |
||||
|
||||
bb_text = str(comment.bbtext) |
||||
if not bb_text: |
||||
r = False |
||||
for i in rever: |
||||
if i in comment.text: |
||||
r = True |
||||
if r: |
||||
bb_text = comment.text |
||||
s = True |
||||
|
||||
for i in exclude: |
||||
if i in bb_text: |
||||
bb_text = bb_text.replace(i, '') |
||||
s = True |
||||
|
||||
if s: |
||||
comment.bbtext = bb_text |
||||
comment.save() |
||||
|
||||
show_progress(all, n) |
||||
n += 1 |
||||
|
||||
finish = datetime.datetime.now() |
||||
print('\nTIME: %s seconds' % (finish-start).seconds) |
||||
@ -0,0 +1,20 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from finance.models import Bill |
||||
from access.models import User |
||||
from courses.models import Course |
||||
|
||||
result = {} |
||||
for user in User.objects.all(): |
||||
result[user.email] = dict({course.id: False for course in Course.objects.all()}) |
||||
for bill in Bill.objects.filter(status='F').order_by('date'): |
||||
if result[bill.user.email][bill.service.course.id]: |
||||
bill.delete() |
||||
else: |
||||
result[bill.user.email][bill.service.course.id] = True |
||||
@ -0,0 +1,20 @@ |
||||
import os |
||||
|
||||
APPS = ('management', 'storage', 'access', 'courses', 'finance', 'journals', ) |
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__)) |
||||
|
||||
|
||||
def main(): |
||||
#os.system('rm -rf fixtures/') |
||||
#os.system('cp -R fixtures_back/ fixtures/') |
||||
for i in APPS: |
||||
os.chdir(os.path.join(BASE_DIR, i)) |
||||
os.system('rm -rf *.pyc') |
||||
os.system('rm -rf migrations') |
||||
os.chdir(os.path.join(BASE_DIR)) |
||||
#os.system('python manage.py makemigrations {0}'.format(i)) |
||||
#os.system('python manage.py migrate') |
||||
|
||||
|
||||
if __name__ == '__main__': |
||||
main() |
||||
@ -0,0 +1,106 @@ |
||||
# coding=utf-8 |
||||
import copy |
||||
|
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from access.models import User, ActionJ |
||||
from journals.models import TeacherJ, CourseThemeJ, AchievementJ, DiplomaJ, ExamTry, HomeworkTry, ExamJ, HomeworkJ, \ |
||||
LessonJ |
||||
from finance.models import Bill |
||||
from management.models import Comment |
||||
|
||||
_source = User.objects.get(id=2) |
||||
_to = User.objects.get(id=465) |
||||
|
||||
# 1) Скопировать Журнал преподавания |
||||
# 2) Журнал тем |
||||
# 3) Журнал Уроков |
||||
# 4) Журнал ДЗ |
||||
# 5) Журнал Экзаменов |
||||
# 6) Комментарии |
||||
# 7) Журнал Диплома |
||||
#Bill.objects.filter(user=_to).delete() |
||||
#for bill in Bill.objects.filter(user=_source): |
||||
# bill.user = _to |
||||
# bill.pk = None |
||||
# bill.save() |
||||
|
||||
#TeacherJ.objects.filter(student=_to).delete() |
||||
#CourseThemeJ.objects.filter(student=_to).delete() |
||||
##ExamJ.objects.filter(student=_to).delete() |
||||
#ExamTry.objects.filter(student=_to).delete() |
||||
#HomeworkJ.objects.filter(student=_to).delete() |
||||
#HomeworkTry.objects.filter(student=_to).delete() |
||||
#LessonJ.objects.filter(student=_to).delete() |
||||
|
||||
#for tj in TeacherJ.objects.filter(student=_source): |
||||
# to = tj |
||||
# tj.student = _to |
||||
# tj.pk = None |
||||
# tj.save() |
||||
|
||||
# for cj in CourseThemeJ.objects.filter(student=_source, parent=to): |
||||
# co = copy.copy(cj) |
||||
# cj.student = _to |
||||
# cj.parent = tj |
||||
# cj.pk = None |
||||
# cj.save() |
||||
|
||||
# for lj in LessonJ.objects.filter(student=_source, parent=co): |
||||
# lj.student = _to |
||||
# lj.parent = cj |
||||
# lj.pk = None |
||||
# lj.save() |
||||
|
||||
# for ej in ExamJ.objects.filter(student=_source, parent=co): |
||||
# eo = copy.copy(ej) |
||||
# ej.student = _to |
||||
# ej.parent = cj |
||||
# ej.pk = None |
||||
# ej.save() |
||||
|
||||
# for et in ExamTry.objects.filter(student=_source, parent=eo): |
||||
# et.student = _to |
||||
# et.parent = ej |
||||
# et.pk = None |
||||
# et.save() |
||||
|
||||
#for hj in HomeworkJ.objects.filter(student=_source, parent=co): |
||||
# ho = copy.copy(hj) |
||||
# hj.student = _to |
||||
# hj.parent = cj |
||||
# hj.pk = None |
||||
# hj.save() |
||||
|
||||
# for ht in HomeworkTry.objects.filter(student=_source, parent=ho): |
||||
# ht.student = _to |
||||
# ht.parent = hj |
||||
# ht.pk = None |
||||
# ht.save() |
||||
|
||||
|
||||
|
||||
AchievementJ.objects.filter(student=_to).delete() |
||||
for aj in AchievementJ.objects.filter(student=_source): |
||||
aj.student = _to |
||||
aj.pk = None |
||||
aj.save() |
||||
|
||||
#DiplomaJ.objects.filter(student=_to).delete() |
||||
#for dj in DiplomaJ.objects.filter(student=_source): |
||||
# dj.student = _to |
||||
# dj.gen = False |
||||
# dj.key = '' |
||||
# dj.pk = None |
||||
# dj.save() |
||||
|
||||
#ActionJ.objects.filter(student=_to).delete() |
||||
#for aj in ActionJ.objects.filter(student=_source): |
||||
# aj.student = _to |
||||
# aj.pk = None |
||||
# aj.save() |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,20 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
from lms.tools import convert_html_to_bb |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from management.models import Comment |
||||
|
||||
errors = [] |
||||
for comment in Comment.objects.all(): |
||||
try: |
||||
comment.bbtext = convert_html_to_bb(comment.text) |
||||
except: |
||||
errors.append(comment.id) |
||||
else: |
||||
comment.save() |
||||
@ -0,0 +1,46 @@ |
||||
# 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 Diploma, User |
||||
from journals.models import DiplomaJ |
||||
|
||||
u = { |
||||
'medvedward@mail.ru': {'key': '363 005 072', 'date': '29.07.2015'}, |
||||
'oss@inbox.com': {'key': '363 005 074', 'date': '24.08.2015'}, |
||||
'artyomzolotykh@gmail.com': {'key': '363 005 076', 'date': '21.08.2015'}, |
||||
'susenko_a@ukr.net': {'key': '363 005 077', 'date': '25.08.2015'}, |
||||
'ebortnikov@mail.ru': {'key': '363 005 078', 'date': '25.08.2015'}, |
||||
'kovalev.home@mail.ru': {'key': '363 005 079', 'date': '05.10.2015'}, |
||||
'mahneva-mariya@mail.ru': {'key': '365 005 080', 'date': '23.10.2015'}, |
||||
'flintl@bk.ru': {'key': '366 005 081', 'date': '26.10.2015'}, |
||||
'a.michurin1783@mail.ru': {'key': '367 005 082', 'date': '27.10.2015'}, |
||||
'Vals_0791@mail.ru': {'key': '368 005 083', 'date': '07.12.2015'}, |
||||
'artyomzykov@gmail.com': {'key': '369 005 084', 'date': '12.01.2016'}, |
||||
'threed@rsgc.ru': {'key': '370 005 085', 'date': '15.02.2016'}, |
||||
'walerock@mail.ru': {'key': '371 005 086', 'date': '18.02.2016'}, |
||||
'garuskin.dima@gmail.com': {'key': '372 005 087', 'date': '30.01.2016'}, |
||||
'rock_n_vladok@mail.ru': {'key': '373 005 088', 'date': '06.03.2016'}, |
||||
'anton_semenchuk@rambler.ru': {'key': '374 005 089', 'date': '09.03.2016'}, |
||||
'orloff.eg@yandex.ru': {'key': '375 005 090', 'date': '11.03.2016'}, |
||||
'ysenko.mi@gmail.com': {'key': '376 005 091', 'date': '13.03.2016'}, |
||||
'nadin12233@mail.ru': {'key': '377 005 092', 'date': '13.03.2016'}, |
||||
'serge-meb@mail.ru': {'key': '378 005 093', 'date': '02.04.2016'} |
||||
} |
||||
for key, value in u.items(): |
||||
try: |
||||
user = User.objects.get(email=key) |
||||
except User.DoesNotExist: |
||||
print key |
||||
else: |
||||
key = int(''.join(value['key'].split(' '))) |
||||
date = value['date'].split('.') |
||||
DiplomaJ.objects.create(date=datetime.date(int(date[2]), int(date[1]), int(date[0])), |
||||
key=key, |
||||
student=user, |
||||
material=Diploma.objects.get(id=1)) |
||||
@ -0,0 +1,25 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from service.models import MailBox |
||||
|
||||
for letter in MailBox.objects.filter(result=''): |
||||
letter.result = 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 width=100%>{0}' \ |
||||
u'<tr><td style="padding-bottom: 20px;">С уважением,<Br>Точка кода</td></tr>' \ |
||||
u'<tr><td style="padding-bottom: 20px;"><img src="http://lms.ru/static/img/logo.png"></td></tr>' \ |
||||
u'</table>' \ |
||||
u'</body>' \ |
||||
u'</html>'.format(letter.text) |
||||
letter.save() |
||||
@ -0,0 +1,22 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
|
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from access.models import User |
||||
from management.models import ModalTask |
||||
from journals.models import TeacherJ |
||||
|
||||
manager = User.objects.get(id=2) |
||||
errors = [] |
||||
task = ModalTask.objects.get(id=29) |
||||
for i in TeacherJ.objects.filter(status='W', course__id=16).exclude(student=None): |
||||
task.user.add(i.student) |
||||
task.save() |
||||
print(errors) |
||||
@ -0,0 +1,18 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from management.models import ModalStack, Modals |
||||
from journals.models import TeacherJ |
||||
|
||||
general_modal = Modals.objects.get(key='JavaWebinar_mini') |
||||
|
||||
for i in TeacherJ.objects.filter(course__id=2): |
||||
print '%s: %s' % (i.id, i) |
||||
if i.teacher and i.student: |
||||
general_modal.create_stack(i.student) |
||||
@ -0,0 +1,28 @@ |
||||
# coding=utf-8 |
||||
from datetime import datetime, timedelta |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
|
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from management.models import Modals, ModalStack |
||||
from access.models import User |
||||
from finance.models import Bill |
||||
user = User.objects.get(id=2) |
||||
|
||||
#for bill in Bill.objects.filter(modals_show=False, _type='P'): |
||||
# if not bill.start_fire: |
||||
# bill.start_fire = bill.finish_date + timedelta(days=bill.service.by_time) |
||||
# bill.save() |
||||
|
||||
for bill in Bill.objects.filter(start_fire__lte=datetime.now(), modals_show=False, _type='P'): |
||||
for modal in bill.service.modals.all(): |
||||
modal.create_stack(bill.user) |
||||
bill.modals_show = True |
||||
print bill |
||||
bill.save() |
||||
@ -0,0 +1,38 @@ |
||||
info@sibirix.ru |
||||
denisov.s.s@yandex.ru |
||||
oleksandrgumeniuk@gmail.com |
||||
9990405@gmail.com |
||||
uasam@mail.ru |
||||
webar4i@gmail.com |
||||
vladfedorovich@gmail.com |
||||
Gfgaliya@gmail.com |
||||
zvetaan@gmail.com |
||||
volokos@gmail.com |
||||
sp.rusanov@gmail.com |
||||
bravo.johnny@yandex.ru |
||||
art@amado-id.ru |
||||
suonarama@gmail.com |
||||
velesart@gmail.com |
||||
ceo@pride-m.ru |
||||
spinngewebex@gmail.com |
||||
lalaviva@yandex.ru |
||||
me@flexure.ru |
||||
trogatyuk@gmail.com |
||||
hello@aokunev.com |
||||
krylya@inbox.ru |
||||
tiano_taurus747@mail.ru |
||||
jaglin@itsoft.ru |
||||
994677@mail.ru |
||||
rumbeshta@userstory.ru |
||||
puponina.irina@gmail.com |
||||
zlk.marjana@gmail.com |
||||
yana.berezhnaya999@gmail.com |
||||
vivi_bvo@mail.ru |
||||
lens2002@gmail.com |
||||
ohmeinkot@gmail.com |
||||
e.poberezhnik@artw.ru |
||||
domrachv@gmail.com |
||||
Irina.lisofa@gmail.com |
||||
natasha.skulskaia@gmail.com |
||||
dubnyak404@gmail.com |
||||
bez.b.unix@gmail.com |
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
||||
ha@brightstudio.ru, gnatovych@gmail.com, anna.trotsina@gmail.com, robert@mokselle.ru, annazayidova@gmail.com, sharapov.nail@gmail.com, art.magomaev@gmail.com, varvarakravchenko@yandex.ru, 9990405@gmail.com, spinngewebex@gmail.com, ilyuha86@gmail.com, kashlatch@gmail.com, kira.yakuhina@gmail.com, juniperland@gmail.com, aknoraz@deloitte.ru, tuning_a@mail.ru, danila.zarechnev@gmail.com, dmitrij.pastushenko@gmail.com, madjaw@mail.ru, lemma.ka@gmail.com, xxnikolayxx@gmail.com, artnebo@gmail.com, 9330733@mail.ru, velesart@gmail.com, abrakadavr@gmail.com, zyabra@gmail.com, a.fomin@escript.ru, art@amado-id.ru, lepon@bk.ru, timur.shulgin@infocraft.ru, zfalevich@gmail.com, sesyunin@realweb.ru, freesleeper@gmail.com, webar4i@gmail.com, marketolog@webelement.ru, dubnyak404@gmail.com, kropev@rarus.ru, snoorge@mail.ru, gotcha10@narod.ru, flyshtein@gmail.com, vladfedorovich@gmail.com, imickaa@gmail.com, sp.rusanov@gmail.com, mtsalka@scnsoft.com, didenko@braind.agency, natasha.skulskaia@gmail.com, admin@portix.ru, gfgaliya@gmail.com, enchervinskaya@gmail.com, redkuk@gmail.com, str-ibz@inbox.ru, temadorokhov@gmail.com, petrichv@gmail.com, dmytriy.suslov@gmail.com, a.dobrian@gmail.com, trjyfel@mail.ru, info@sibirix.ru, ek.design11@gmail.com, waximov@gmail.com, m.chelyadenkov@gmail.com, a.nikiforov@uplab.ru, feyorz@gmail.com, uasam@mail.ru, einzheev@itl.com.kz, o.tibirkova@yandex.ru, denisov.s.s@yandex.ru, dm.medv@gmail.com, gawanna.ru@mail.ru, maksimov.design@gmail.com, bez.b.unix@gmail.com, |
||||
@ -0,0 +1,57 @@ |
||||
o.tibirkova@yandex.ru |
||||
alexandersvinin@gmail.com |
||||
nikonorov@labizum.ru |
||||
timakova@fistashki.org |
||||
sharapov.nail@gmail.com |
||||
soldakov.p@yandex.ru |
||||
ap@ds-p.ru |
||||
j.tolkova@yandex.ru |
||||
as.plyaskin@gmail.com |
||||
person.ira@gmail.com |
||||
o.tibirkova@yandex.ru |
||||
alexandersvinin@gmail.com |
||||
nikonorov@labizum.ru |
||||
timakova@fistashki.org |
||||
sharapov.nail@gmail.com |
||||
soldakov.p@yandex.ru |
||||
ap@ds-p.ru |
||||
j.tolkova@yandex.ru |
||||
as.plyaskin@gmail.com |
||||
person.ira@gmail.com |
||||
pyshenko@mail.ru |
||||
ipev54@mail.ru |
||||
r_dauranov@mail.ru |
||||
didrojon@gmail.com |
||||
vlad_rym@mail.ru |
||||
levs01@mail.ru |
||||
msvechnikova@mail.ru |
||||
obraztsova.che@yandex.ru |
||||
uraltux@gmail.com |
||||
jsam1989@yandex.ru |
||||
van_zoka@mail.ru |
||||
grash25@mail.ru |
||||
garaeff2006@yandex.ru |
||||
ungern@nxt.ru |
||||
lubka95@mail.ru |
||||
pr-sido@yandex.ru |
||||
o.tibirkova@yandex.ru |
||||
alexandersvinin@gmail.com |
||||
nikonorov@labizum.ru |
||||
timakova@fistashki.org |
||||
sharapov.nail@gmail.com |
||||
soldakov.p@yandex.ru |
||||
ap@ds-p.ru |
||||
j.tolkova@yandex.ru |
||||
as.plyaskin@gmail.com |
||||
person.ira@gmail.com |
||||
kikna@yandex.ru |
||||
j.tolkova@yandex.ru |
||||
soldakov.p@yandex.ru |
||||
ap@ds-p.ru |
||||
as.plyaskin@gmail.com |
||||
timakova@fistashki.org |
||||
nikonorov@labizum.ru |
||||
o.tibirkova@yandex.ru |
||||
person.ira@gmail.com |
||||
alexandersvinin@gmail.com |
||||
sharapov.nail@gmail.com |
||||
@ -0,0 +1,29 @@ |
||||
# 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 Lesson, Course |
||||
|
||||
for course in Course.objects.all(): |
||||
print '{0} :{1}'.format(course.id, course) |
||||
|
||||
c = raw_input(u'CHOICE COURSE. 0 - EXIT: ') |
||||
try: |
||||
course = Course.objects.get(id=c) |
||||
except Course.DoesNotExists: |
||||
print u'Курс не найден' |
||||
else: |
||||
for lesson in Lesson.objects.filter(course=course).order_by('token'): |
||||
if not lesson.video_id: |
||||
print lesson |
||||
result = raw_input(u'VIDEO ID VZAAR. 0 - NO CHANGE: ') |
||||
print '==============' |
||||
if result != 0: |
||||
lesson.video_id = result |
||||
lesson.video_date = datetime.datetime.now() |
||||
lesson.save() |
||||
@ -0,0 +1,15 @@ |
||||
# 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 Lesson |
||||
|
||||
for lesson in Lesson.objects.exclude(video_id=None): |
||||
lesson.video = '' |
||||
lesson.save() |
||||
@ -0,0 +1,8 @@ |
||||
def test(a, b=50): |
||||
print a |
||||
print b |
||||
return 1, 2 |
||||
|
||||
test(*test(10, 20)) |
||||
|
||||
raw_input('1') |
||||
@ -0,0 +1,48 @@ |
||||
gawanna.ru@mail.ru |
||||
tim.phey@gmail.com |
||||
kittydiz@mail.ru |
||||
maksimov.design@gmail.com |
||||
katepainter@yandex.ru |
||||
sasha_amelina@mail.ru |
||||
snoorge@mail.ru |
||||
mifwind@gmail.com |
||||
artur.saakoff@gmail.com |
||||
tagfelix500@gmail.com |
||||
svelavs@gmail.com |
||||
art@magicdesign.ru |
||||
srfedotov@gmail.com |
||||
o.tibirkova@yandex.ru |
||||
aknoraz@deloitte.ru |
||||
sesyunin@realweb.ru |
||||
9330733@mail.ru |
||||
danila.zarechnev@gmail.com |
||||
egor@yugs.ru |
||||
goha@kiosov.com |
||||
Igorfedorenko@mail.ru |
||||
es@vipro.ru |
||||
soldakov.p@yandex.ru |
||||
702752@gmail.com |
||||
shpakova@sebbia.com |
||||
taranov@sebbia.com |
||||
rusakovevgen@gmail.com |
||||
Alexpozdnyakof@gmail.com |
||||
korobajr@ya.ru |
||||
elizaveta.bandalet@gmail.com |
||||
prokosha10@gmail.com |
||||
salofoot@fermastudio.ru |
||||
info@darneo.ru |
||||
kayl24brof@gmail.com |
||||
lens2002@gmail.com |
||||
d22s@ya.ru |
||||
masha49@yandex.ru |
||||
biz.trp@gmail.com |
||||
alexzarkov@gmail.com |
||||
ekde@wide-web.spb.ru |
||||
vemelin@gmail.com |
||||
va@wearewowagency.com |
||||
ad@wearewowagency.com |
||||
st.wasp@yandex.ru |
||||
albytime@gmail.com |
||||
as.plyaskin@gmail.com |
||||
trunovaon@gmail.com |
||||
lemma.ka@gmail.com |
||||
@ -0,0 +1,26 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
from django.core.files import File |
||||
import datetime |
||||
import django |
||||
import sys |
||||
|
||||
from django.db.models import Q |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from courses.models import Diploma, User |
||||
from journals.models import DiplomaJ |
||||
|
||||
for tm in DiplomaJ.objects.filter(Q(in_image=None)|Q(out_image=None)): |
||||
if not tm.out_image or not tm.in_image: |
||||
_in, _out = tm.draw_key(*tm.draw_name(*tm.draw_date())) |
||||
if _in: |
||||
_in = open(_in) |
||||
tm.in_image.save(File(_in).name, File(_in), save=True) |
||||
|
||||
|
||||
if _out: |
||||
_out = open(_out) |
||||
tm.out_image.save(File(_out).name, File(_out), save=True) |
||||
@ -0,0 +1,27 @@ |
||||
# coding=utf-8 |
||||
import hashlib |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from access.models import User |
||||
from courses.models import Course |
||||
from journals.models import TeacherJ |
||||
from finance.models import Bill |
||||
|
||||
# Получить список почт тех, кто: |
||||
# 1) Отплатил счет по курсу |
||||
# 2) Не сдал еще ДЗ |
||||
|
||||
course = Course.objects.get(id=20) |
||||
result = open('emails_ux.txt', 'w') |
||||
for j in TeacherJ.objects.filter(course=course, teacher=None).exclude(student=None): |
||||
if Bill.objects.filter(service__course=course, user=j.student, status='F').exists(): |
||||
result.write(j.student.email) |
||||
result.write(', ') |
||||
|
||||
result.close() |
||||
@ -0,0 +1,17 @@ |
||||
# coding=utf-8 |
||||
import hashlib |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from access.models import User |
||||
|
||||
result = open('emails_md5.txt', 'w') |
||||
for i in User.objects.filter(customer=True): |
||||
result.write(hashlib.md5(i.email.encode('utf-8')).hexdigest()) |
||||
result.write(', ') |
||||
|
||||
result.close() |
||||
@ -0,0 +1,18 @@ |
||||
# 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 access.models import User |
||||
from django.db.models import Q |
||||
date = datetime.datetime(2016, 03, 01) |
||||
for user in User.objects.filter(Q(last_login__lte=date, is_active=True)|Q(last_login=None, is_active=True)): |
||||
print user.email |
||||
print User.objects.filter(Q(last_login__lte=date, is_active=True)|Q(last_login=None, is_active=True)).count() |
||||
@ -0,0 +1,27 @@ |
||||
# coding=utf-8 |
||||
import calendar |
||||
import datetime |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from journals.models import get_active_tj_count, HomeworkJ |
||||
from courses.models import Course |
||||
|
||||
for course in Course.objects.filter(public=True): |
||||
print course.get_title() |
||||
for teacher in course.teachers.exclude(email='t@lms.ru'): |
||||
print u'{0}: {1}'.format(teacher.get_short_name(), get_active_tj_count(teacher)) |
||||
print u'=================' |
||||
|
||||
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]: |
||||
now = datetime.date(2016, i, 1) |
||||
print i |
||||
print HomeworkJ.objects.filter(date__gte=datetime.datetime(now.year, now.month, 1), |
||||
date__lte=datetime.datetime(now.year, now.month, calendar.mdays[i]), |
||||
f_date__lte=datetime.datetime(now.year, now.month, calendar.mdays[i]), |
||||
f_date__gte=datetime.datetime(now.year, now.month, 1)).count() |
||||
@ -0,0 +1,34 @@ |
||||
# 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 access.models import User |
||||
from django.db.models import Q |
||||
from finance.models import Bill |
||||
date = datetime.datetime(2016, 03, 01) |
||||
|
||||
count = 0 |
||||
|
||||
|
||||
def get_bills(user): |
||||
for i in Bill.objects.filter(user=user, status='F'): |
||||
print u'%s: %s' % (i.id, i.get_name()) |
||||
global count |
||||
count += 1 |
||||
|
||||
for user in User.objects.filter(is_active=True): |
||||
if Bill.objects.filter(user=user, status='F').exists(): |
||||
print u'' |
||||
print u'====== %s:%s:%s ' % (user.id, user.email, user.get_short_name()) |
||||
get_bills(user) |
||||
print u'===========' |
||||
|
||||
print u'' |
||||
print u'===========' |
||||
print u'Всего: %s' % count |
||||
@ -0,0 +1,21 @@ |
||||
# 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 access.models import User |
||||
from journals.models import TeacherJ |
||||
from courses.models import Course |
||||
|
||||
for course in Course.objects.all(): |
||||
for user in User.objects.all(): |
||||
if user.date_joined.year == datetime.date.today().year and user.date_joined.year == datetime.date.today().month and user.date_joined.year == datetime.date.today().day: |
||||
journals = TeacherJ.objects.filter(student=user, course=course) |
||||
if journals.count() > 1: |
||||
journals.last().delete() |
||||
|
||||
@ -0,0 +1,20 @@ |
||||
import os |
||||
lines = list([i.strip() for i in open('users_base.txt').readlines()]) |
||||
result = [] |
||||
_exc = ['# 1', '# 2', '# 3', '# 4', '# 5', '# 6', '# 7', '# 8', '# 9', '# 10', '# 11', '# 12', '# 13', '# 14', '# 15', |
||||
'# 16', '# 17', '# 18', '# 19', '# Web', '# Java', '# iOS', '# Excel'] |
||||
|
||||
for r in range(1, len(lines)): |
||||
l = lines[-int(r)] |
||||
if l not in result or l in _exc: |
||||
result.append(l) |
||||
|
||||
|
||||
f = open('users_base.txt', 'w') |
||||
result.reverse() |
||||
for line in result: |
||||
line += '\n' |
||||
if line in _exc: |
||||
line += '\r' |
||||
f.write(line) |
||||
f.close() |
||||
@ -0,0 +1,173 @@ |
||||
# 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() |
||||
@ -0,0 +1 @@ |
||||
# Прочитать все записи |
||||
@ -0,0 +1,3 @@ |
||||
# Excel |
||||
# 18 |
||||
root@codemy.ru;Сиглаев Сергей |
||||
@ -0,0 +1,751 @@ |
||||
# Excel |
||||
# 18 |
||||
ssiglaev@mail.ru;Сиглаев Сергей |
||||
ipev54@mail.ru;Евгений Ипатов |
||||
# 36 |
||||
# 37 |
||||
Ekaterinageorgievna@ya.ru;Екатерина Рагозина |
||||
KomarovaTaty@yandex.ru;Комарова Татьяна Николаевна |
||||
# 38 |
||||
gesko56@mail.ru;Геско Игорь |
||||
# 39 |
||||
pyshenko@mail.ru;Пушенко Сергей |
||||
marina.opheim@gmail.com;Marina Opheim |
||||
# 40 |
||||
varavina@bk.ru;Лариса Варавина |
||||
oreshko_pn@mail.ru;Орешко Петр Николаевич |
||||
# 41 |
||||
pavel-samocvetov@rambler.ru;Самоцветов Павел |
||||
# Java |
||||
# 19 |
||||
elenagum@gmail.com;Elena Gumennikova |
||||
koganovsky@yandex.ru;Дмитрий Когановский |
||||
d.koganovsky@gmail.com;Дмитрий Когановский |
||||
rybkina.ma@gmail.com;Рыбкина Марина |
||||
gladiator.maksim1992@mail.ru;Козлов Максим |
||||
uzor1@ukr.net;Андрей |
||||
baktybekergabyl@gmail.com;Ергабыл Бактыбек |
||||
pabls.web@gmail.com;Павел |
||||
380734890630@yandex.ru;Обущак Сергей |
||||
ipereyma@yandex.ru;igor` |
||||
andr.bondaren@gmail.com;Андрей |
||||
progres5@yandex.ru;Сергей Зовский |
||||
raduga-k-klyuchi@mail.ru;Юлий |
||||
vitaliyexplorer7@gmail.com;Виталий |
||||
vitr@list.ru;Виталий Иванов |
||||
rajnisk@hotmail.com;Людмила |
||||
dmitry010581@yandex.ru;Тимофеев Дмитрий |
||||
sak_aa@mail.ru;Сак Александр |
||||
rapheroes@mail.ru;Корчагин Илья |
||||
od_89@mail.ru;Олег |
||||
duckart_av@mail.ru;Андрей |
||||
dima-sit168@yandex.ru;Дмитрий |
||||
klen2277@mail.ru;Евгений Каленов |
||||
aleksey.elizaryev@gmail.com;Алексей |
||||
c0x1ff6@yahoo.com;Александр |
||||
Alexander5454@yandex.ru;Александер Чижиков |
||||
msv1108@gmail.com;Станислав |
||||
job.76@bk.ru;Сергей Снитко |
||||
fan2pr@yandex.ru;Алексей |
||||
didrojon@gmail.com;nic |
||||
palik777@gmail.com;Pavel Minin |
||||
ph.shamsiev@mail.ru;Филипп |
||||
yuralet@mail.ru;Юрий |
||||
tao981@rambler.ru;Виктор |
||||
s_teplom@mail.ru;Екатерина Атаманчук |
||||
total100@ya.ru;Валерий |
||||
eshudanov@gmail.com;Ержан Шуданов |
||||
mihajlovmv@yandex.ru;Михайлов Михаил |
||||
manmg87@gmail.com;Дмитрий Гевейлер |
||||
valery.remenyuk@rambler.ru;валерий ременюк |
||||
ukhin.ag@gmail.com;Ухин Александр |
||||
jamil2005.78@mail.ru;зумруд |
||||
prusov1987@gmail.com;Андрей |
||||
levin_aleksey@mail.ru;Алексей |
||||
Roma.Korehov@yandex.ru;Роман Корехов |
||||
aav-kerry@mail.ru;Алексей Архипов |
||||
v_vyborg@rambler.ru;валерий ременюк |
||||
etopist@outlook.com;Александр Забродин |
||||
ne-devil@mail.ru;Дмитрий |
||||
karakan77@yandex.ru;бахарев сергей |
||||
pavel.anix@gmail.com;Токарев Павел Анатольевич |
||||
bakeevsa@gmail.com;Станислав Бакеев |
||||
remenyuk79@gmial.com;Ременюк Валерий |
||||
iterus@rambler.ru;Khogoeva Tatiana |
||||
sss-74@bk.ru;Сидоренко Сергей |
||||
Abdimalik777@yandex.kz;Абдималик |
||||
8student8@gmail.com;Владимир |
||||
shevanov@gmail.com;Евгений Шеванов |
||||
ekbpotok@gmail.com;Игорь |
||||
copymi@gmail.com;Саша |
||||
yurinbu@mail.ru;Бушенков Юрий |
||||
r_dauranov@mail.ru;Ренат Дауранов |
||||
Paa186@mail.ru;Алексей |
||||
rabmit@yandex.ru;Ярослав Митин |
||||
89091635474@mail.ru;Дудин Андрей |
||||
adrianobuon@mail.ru;dmitriy |
||||
danikanisa@gmail.com;Давид |
||||
allanoy@yandex.ru;Alla |
||||
# 20 |
||||
PREYZON@mail.ru;Кирилл |
||||
ponamarev_89@bk.ru;Юрий |
||||
Pvlniko@gmail.com;Павел |
||||
sergeioff@mail.ru;Сергей Погорелов |
||||
Instinct975@gmail.com;Илья |
||||
nikulinag@gmail.com;Андрей Никулин |
||||
e.b.j_99@mail.ru;Baktybek |
||||
supana1976@gmail.com;Павел |
||||
ipereyma@yandex.ru;игорь |
||||
kvasha.oleg1962@gmail.com;Квашин Олег Леонидович |
||||
epolshakova@ya.ru;Екатерина |
||||
d.koganovsky@gmail.com;Дмитрий |
||||
didrojon@gmail.com;2урок |
||||
job.76@bk.ru;Сергей |
||||
my.777@mail.ru;Екатерина |
||||
dvinnik@yahoo.com;deividas vinnik |
||||
vlad_rym@mail.ru;Влад Римский |
||||
nils1968@gmail.com;Виктор |
||||
an_var@smtp.ru;Вараксин Андрей |
||||
maxrusgm@yandex.ru;Максим |
||||
dimkut@bk.ru;Кутный Дмитрий |
||||
mity282@gmail.com;Макаров Дмитрий |
||||
infdev@yandex.ru;Казинская Надежда |
||||
yakovbeng@gmail.com;Николай |
||||
zulkarnaev_sergei@mail.ru;Сергей |
||||
natzero@mail.ru;Головков Сергей |
||||
mysample@rambler.ru;Магазеев Александр |
||||
igor_kravchenko@live.ru;Игорь |
||||
kudriashov.art@yandex.ru;Артемий |
||||
chitinski86@gmail.com;Антон |
||||
cut-throat2008@yandex.ru;Филипп Кузнецов |
||||
ilya_korchagin_90@mail.ru;Корчагин Илья |
||||
Kerby@inbox.ru;Андрей |
||||
evg2369@yandex.ru;Евгений Похожаев |
||||
bele.niente@gmail.com;Светлана Грибанова |
||||
input_chet@rambler.ru;Евгений Мосияченко |
||||
smirnovm84@gmail.com;Смирнов Михаил Сергеевич |
||||
appppppple@gmail.com;Александр |
||||
zoom-zoom555@mail.ru;Ирина |
||||
wirelines@yandex.ru;Бикчентаев Шамиль |
||||
ulitinigor@yandex.ru;Игорь |
||||
ivan@mymediagroup.ru;Иван |
||||
vetarak@gmail.com;Дмитрий Каратеев |
||||
aptem240@mail.ru;Кирпичев Артем |
||||
jnss2013ks@gmail.com;Евгения Ступникова |
||||
vadmirr@yandex.ru;Вадим Mугинов |
||||
artemshchurev@gmail.com;Щурев Артем |
||||
w3orks@mail.ru;Станислав |
||||
# 21 |
||||
gordjelin14@gmail.com;Антон |
||||
yungamm@yandex.ru;Андрей |
||||
iglatypov2010@yandex.ru;Ильнур |
||||
all4me4@gmail.com;Александр Петров |
||||
kardv@yandex.ru;Владимир Кардашин |
||||
ffiirreeffooxx@gmail.com;Иванников Игорь Александрович |
||||
alex-bedev@ozero.net;Александр Соколов |
||||
phantomx@yandex.ru;Андрей |
||||
step1383@gmail.com;Дмитрий Степанов |
||||
svettlantik@rambler.ru;Svetlana Telepina |
||||
rivo551@rambler.ru;Татьяна |
||||
istubb@me.com;Андрей Приходько |
||||
4-mi@bk.ru;Андрей |
||||
aleks_mihalev@list.ru;Алексей Михалев |
||||
mbk_88@mail.ru;Болат |
||||
vladejkee@gmail.com;Владислав |
||||
stalevs@gmail.com;Станислав |
||||
cesc0717@gmail.com;Антон Говоров |
||||
asavlukov@maxus.ru;Александр |
||||
omegaprime@live.ru;Дмитрий |
||||
ushac@mail.ru;Алексей |
||||
lena_as_sister@mail.ru;Тюнина Елена |
||||
valorml@gmail.com;Вячеслав |
||||
albert@gestiv.ru;Альберт |
||||
baktybekergabyl@gmail.com;Baktybek |
||||
jys.naturoil@yandex.ru;Сабельникова Юлия |
||||
at_alex@bk.ru;Алексей |
||||
mb2043@yandex.ru;Василий |
||||
igrix@mail.ru;Погодин Игорь |
||||
klaus_83@mail.ru;Павел Афанасьев |
||||
rsbk73@gmail.com;Андрей |
||||
palik777@gmail.com;Павел Минин |
||||
novosib_2009@mail.ru;Алексей |
||||
varaksinandrey@yandex.ru;Андрей |
||||
romik1985@gmail.com;Роман |
||||
dymov33@ya.ru;Эльмар Мирзабаев |
||||
ksd921020@yandex.ru;Сергей |
||||
symchuk.andriy@gmail.com;Сымчук Андрей |
||||
n-samoilov@mail.ru;Никита |
||||
urself2015@yandex.ru;Алексеенко Юрий |
||||
zshoo@mail.ru;Заурбек |
||||
infiniticiti@gmail.com;Oleg Chernivetsky |
||||
e.p.aleksandrov@yandex.ru;Евгений |
||||
abulhanof@yandex.kz;Шаукат |
||||
levis84@mail.ru;Виктор |
||||
kochevnik01@mail.ru;Павел |
||||
mara-777@bk.ru;Tamara |
||||
algamazov@yandex.ru;Александр Гамазов |
||||
a.kyrov@gmail.com;Кыров Андрей |
||||
remenyuk79@gmail.com;Ременюк Валерий |
||||
mirik49@yandex.ru;Иван Белоусов |
||||
yorv@mail.ru;Иван |
||||
coldinc@rambler.ru;Иван |
||||
alp1@list.ru;Владимир Полинский |
||||
ld1995@tut.by;Леонид |
||||
midda7@mail.ru;Антон |
||||
# 22 |
||||
la-verne@mail.ru;Иван Фомин |
||||
safarov-ar@yandex.ru;Сафаров Алексей Расимович |
||||
kimonnick@mail.ru;Александр |
||||
madinaxyt@mail.ru;Мадина |
||||
iglatypov2010@yandex.ru;Латыпов Ильнур |
||||
krrera@mail.ru;Арсен |
||||
jackf31@mail.ru;Игорь |
||||
alexz1983@mail.ru;Захаров Александр |
||||
netbooks@mail.ru;Геннадий |
||||
ShoarR@gmail.com;Ульяна Джумок |
||||
mad-dimon@mail.ru;Дмитрий |
||||
dmitriy.mosolov@gmail.com;Дмитрий Мосолов |
||||
pabls@yandex.ru;Павел |
||||
sergey@794979.ru;Сергей |
||||
Elvis97rus@gmail.com;Артем |
||||
cprof777@gmail.com;Алексей Язьков |
||||
aeugeniy@gmail.com;Евгений |
||||
soft-bi@mail.ru;Сергей |
||||
pverbatim@mail.ru;Петр Андреев |
||||
alex@titul-spb.ru;Александр Целищев |
||||
asavlukov@maxus.ru;Саша |
||||
cyberfancool@yandex.ru;Виталий |
||||
zamaev.aydrus@yandex.ru;Айдрус |
||||
edwd.mkrv@gmail.com;Эдуард Макаров |
||||
brmoney@ya.ru;Сергей |
||||
# 23 |
||||
chabakvolodya@gmail.com;Володимир |
||||
grandger@mail.ru;Степанов Александр |
||||
ma1m2@mail.ru;Светлана Мажайкина |
||||
madinaxyt@mail.ru;Мдина |
||||
rm7m@mail.ru;Виталий Дорофеев |
||||
andrey.poprotsky@gmail.com;Андрей |
||||
public-mail@mail.ru;Тураев Константин |
||||
diadiasash@mail.ru;Александр |
||||
makoron@mail.ru;Евгений Тимофеев |
||||
oglekler@gmail.com;Глеклер Ольга |
||||
mbr0969@gmail.com;Михаил |
||||
nvladislavn@gmail.com;Нечаев Владислав |
||||
vilislac@gmail.com;Григорий |
||||
alion.dim@yandex.ru;Людмила |
||||
mansur.by@gmail.com;Abilmansur |
||||
aspushkin2395@gmail.com;Кирилл |
||||
Assarkhaddon@gmail.com;Чупов Александр |
||||
i.zaria@yandex.ru;Игорь |
||||
pushkinan@yandex.ru;Александр |
||||
tsarevvs@bk.ru;Владимир |
||||
dmitry.mamonov@gmail.com;Дмитрий Мамонов |
||||
avduckart@gmail.com;Дукарт Андрей |
||||
kgv63@mail.ru;Геннадий |
||||
infdev@yandex.ru;Надежда |
||||
mail4bsf@gmail.com;Станислав Быльченко |
||||
svirepyi@mail.ru;Вадим Измайлов |
||||
# 24 |
||||
texcomvit@gmail.com;Виталий |
||||
alekskolr@gmail.com;Алексей |
||||
d77dk@mail.ru;Дмитрий |
||||
mas.proekt@mail.ru;Маслёнок Андрей |
||||
prusove@gmail.com;Евгений |
||||
misha41192@mail.ru;Михаил Скафенко |
||||
sglvzom@gmail.com;Николай |
||||
# 26 |
||||
malov.alexsander@yandex.ru;Александр |
||||
9284330043@mail.ru;Дмитрий |
||||
baltport@mail.ru;Илья Агафонов |
||||
kaa-work@yandex.ru;Антон |
||||
alex.v.andreev@gmail.com;Александр Васильевич Андреев |
||||
kutsko.v.v@yandex.ru;Василий |
||||
# iOS |
||||
# 43 |
||||
ivan.infbez@yandex.ru;Иван |
||||
igor.dyachkov89@gmail.om;Игорь |
||||
iyaroslav@yandex.ru;Ярослав |
||||
meres28032000@gmail.com;Евгений |
||||
malenkaya.grafinya@mail.ru;Mikhaylova Lyubov |
||||
# 44 |
||||
2909763@gmail.com;Михаил Палкин |
||||
bayaliev.mar@yandex.ru;Мар |
||||
rozental.igor@gmail.com;Игорь Розенталь |
||||
for_new_job@bk.ru;Абрамян Сергей |
||||
Malkolm063@yandex.ru;Андрей |
||||
# 45 |
||||
mail@greatcoach.ru;Денис |
||||
paveldance@mail.ru;павел лонкин |
||||
tsomuk@yandex.ru;Никита |
||||
bayaliev.mar@yandex.ru;Mar |
||||
19871010@mail.ru;Мкртумян Нарек |
||||
oleg@pendurov.com;Олег Пендуров |
||||
dan98l@mail.ru;Даниил Голубятников |
||||
diroy1287@gmail.com;Егор |
||||
for_new_job@bk.ru;Сергей Абрамян |
||||
zopa_gopa@mail.ru;Ренат |
||||
# 46 |
||||
bogdanofandrey@gmail.com;Андрей |
||||
malkolm063@yandex.ru;Андрей |
||||
arzt2001@mail.ru;Михаил Смолиговец |
||||
stas_shoshkin@rambler.ru;Шошкин Станислав |
||||
AnatoliiAndreev19@gmail.com;Анатолий |
||||
dmitry@senashenko.ru;Дмитрий Сенашенко |
||||
# 47 |
||||
za-alex@yandex.ru;Алексей |
||||
wins00k@gmail.com;Андрей Тищенко |
||||
bubnyshev@lanit.ru;Бубнышев Сергей |
||||
# 48 |
||||
o.kubyshkin@gmail.com;Олег |
||||
gkrasnoshlyk@gmail.com;Геннадий |
||||
asylbekzhardekov@gmail.com;Асылбек |
||||
# 50 |
||||
alexeyra2010@gmail.com;Alexey Redkin |
||||
roman@proskurnin.ru;Роман Проскурнин |
||||
madjaw@mail.ru;Андрей |
||||
rozental.igor@gmail.com;Игорь |
||||
skripkin2410@gmail.com;Дмитрий |
||||
# 51 |
||||
artbataev@gmail.com;Владимир |
||||
nns7@inbox.ru;Nikolay |
||||
# Web |
||||
# 1 |
||||
jeged22@gmail.com;Виталий |
||||
secalol@gmail.com;ТЕСТ |
||||
8wicx@msgos.com;testJC |
||||
vlyagusha@justclick.ru;Вячеслав |
||||
dvsvaran@mail.ru;Виталий |
||||
mainfilter@ya.ru;Сергей |
||||
polkovnik51@vail.ru;Владимир |
||||
nivshina@mail.ru;Анастасия Ившина |
||||
aksay_sayt@mail.ru;Татьяна Велмакина |
||||
nserogoskaya@bk.ru;Серогодская Н. |
||||
nestetion@ya.ru;Анастасия |
||||
afeldus@mail.ru;Anatoly Feldman |
||||
test@test.ru;тест |
||||
alexeidavljatov3@mail.ru;алексей |
||||
kazzak2008@rambler.ru;задание №1 Алексей Казаков |
||||
alvk3@yandex.ru;Алексей Кочанов |
||||
vgric@mail.ru;Виктория Гриценко |
||||
opti72@ukr.net;Александр |
||||
deltaz1@mail.ru;Николай Матюшов |
||||
mari.kravchuk78@mail.ru;Мария Кравчук |
||||
apishvanov@gmail.com;Александр Пишванов |
||||
233868@gmail.com;Николай |
||||
yoga@satvasamui.com;Черемикин Александр |
||||
edwardb@ngs.ru;Эдуцард Бурлаков |
||||
vip.alex113@mail.ru;Александр Андросов |
||||
vre@mail.ru;Kalinin |
||||
aivis@ukr.net;Щербаков Роман |
||||
nadvas0910@gmail.com;Nadezda |
||||
teamaks@mail.ru;Maksym |
||||
tyapushkina1976@gmail.com;Светлана |
||||
dmn@isida.com.ru;Димитрий Милакин |
||||
sadness.sv@gmail.com;Vyacheslav |
||||
d6232@bugmir.net;Дмитрий Теслюк |
||||
Gralle@yandex.ru;Инна Овчинникова |
||||
yusupowa.alfia2017@yandex.ru;Альфия Юсупова |
||||
homevent@gmail.com;Константин Черепанов |
||||
skop.1984@mail.ru;Юлия |
||||
ekarniymamay@mil.ru;Анастасия |
||||
p_orlov@list.ru;Pavel Orlov |
||||
tehfoxen@yandex.ru;Алехина Татьяна |
||||
sveta250694@mail.ru;Светлана Спорынина |
||||
shevchuka@gmail.com;Алексей |
||||
zhuklevich87@gmail.com;Stanislav Zhuklevich |
||||
karpov.g777@mail.ru;Карпов Евгений |
||||
gnk413666@yandex.ru;Алексей Щукин |
||||
a.rassmagin@mail.ru;Алексей |
||||
pyosha@yandex.ru;Коваленко Наталья |
||||
adik69@list.ru;Алексанр Адеев |
||||
# 2 |
||||
gotcha10@yandex.ru;Андрей |
||||
saliq.ilshat@gmail.com;Ильшат |
||||
gyrka@yandex.ru;Андрей Гирка |
||||
evgwar@yandex.ru;Евгений |
||||
veneta83@inbox.ru;Венета |
||||
optimizup@yandex.ru;Роман Марков |
||||
alexeidavljatov3@mail.ru;алексей давлятов |
||||
kazzak2008@rambler.ru;задание №2 Алексей Казаков |
||||
unitbox@mail.ru;Бобух Эдуард |
||||
martaw75@mail.ru;Мартыненко Анна |
||||
k.erofeew@gmail.com;Кирилл Ерофеев |
||||
ksenija.petriv@gmail.com;Ksenia |
||||
belokrylov.al@mail.ru;Алексей |
||||
strekozec12@gmail.com;Алексей |
||||
ua67850@yandex.ru;алексей |
||||
Ft_inferno@mail.ru;Евгений |
||||
Umi-chan_1992@mail.ru;Марина Куксова |
||||
vanologvin@gmail.com;Иван |
||||
sirius1991dav_asa@mail.ru;Анастасия Дойникова |
||||
akaymanov@yandex.ru;Андрей Кайманов |
||||
ghoul666@gmail.com;Дмитрий Алексеенко |
||||
# 3 |
||||
MAXYTA22@yandex.ru;Ирина |
||||
yandexru@icloud.com;Олег |
||||
lexinfox@mail.ru;Алексей Анциферов |
||||
denis3753@yandex.ru;Денис |
||||
kazzak2008@rambler.ru;задание №3 Алексей Казаков |
||||
mikhail_efimov@mail.ru;Михаил Ефимов |
||||
insait07@mail.ru;Багаутдинов Сергей |
||||
igorkudenko1@gmail.com;Игорь Куденко |
||||
bb-klub@mail.ru;Алексей Федотов |
||||
aleksandr-a-2014@mail.ru;Алексей Федотов |
||||
maruta-danil@mail.ru;Марута Даниил |
||||
otdeda@gmail.com;Федор Усков |
||||
lev0315@mail.ru;Лев Каменев |
||||
dsolomennikova@gmail.com;Daria Solomennikova |
||||
# 4 |
||||
lanarich@mail.ru;Касьянова Руслана |
||||
strategybz@mail.ru;Александр |
||||
kazzak2008@rambler.ru;задание №4 Алексей Казаков |
||||
a.v.kurlovich@gmail.com;Александр |
||||
hotmustang@mail.ru;Лебедь Алексей |
||||
sovalianna@gmail.com;Natalia Nosanova |
||||
mislavsky@yandex.ru;Максим Миславский |
||||
adrinalin17@yandex.ru;Сергей |
||||
trippleyes@gmail.com;Roman Izotov |
||||
sj22@ya.ru;Ольга Белова |
||||
Alexander97@inbox.ru;Александр |
||||
elena_polyakova84@mail.ru;Полякова Елена |
||||
nagval07@mail.ru;Сергей |
||||
# 5 |
||||
bestway305@yandex.ru;Артур |
||||
obraztsova.che@yandex.ru;Екатерина |
||||
filchenkov.dima@mail.ru;Дмитрий |
||||
wkmstr@mail.ru;Мераб |
||||
olgeraski@gmail.com;Ольга Гераськина |
||||
skorshuns@mail.ru;Сергей |
||||
vorona_1992@bk.ru;Валерия |
||||
0964600@gmail.com;Oksana Popova |
||||
servaredecaelo@gmail.com;Алина Гайбель |
||||
t.natalia_66@mail.ru;Мади |
||||
vikraokna@gmail.com;Дмитрий |
||||
a05@list.ru;Углев Владимир |
||||
vlg81@mail.ru;Галашев Вадим |
||||
manamaha@mail.ru;Николай Дёров |
||||
tusrb@mail.ru;Тарасов Иван Григорьевич |
||||
gnatenko.pavel@gmail.com;Павел Гнатенко |
||||
Serenya21@yandex.ru;Сергей |
||||
o.lif@gmx.de;Olena Lif |
||||
kazzak2008@rambler.ru;задание №5 Алексей Казаков |
||||
nabelka@ya.ru;Ната |
||||
o.gricenko@yandex.ru;Олег |
||||
alpe@b2bresearch.com;Александр Петросян |
||||
79296628851@yandex.ru;Дмитрий |
||||
creps92@yandex.ru;Максим Гамаюнов |
||||
vitaliy.a.2015@mail.ru;Виталий Анищенко |
||||
videograf2007@yandex.ru;Андрей |
||||
web-school-voicehovich@yandex.ru;Михаил Войцехович |
||||
tyapushkina1976@gmail.com;Светлана Cмирнова |
||||
Ddinamit.i@gmail.com;Илья Облогин |
||||
yusupova.alfia2014@yandex.ru;Альфия Юсупова |
||||
evgenia_litvina@mail.ru;Евгения Литвина |
||||
npg2009@rambler.ru;Павло Галамейко |
||||
julia210384otto@yandex.ru;Юлия Ванина |
||||
# 6 |
||||
igorevich70@gmail.com;Игорь |
||||
alberto.man@mail.ru;Альберт |
||||
espoirquebec@gmail.com;Мария Кравчук |
||||
d.work2011@yandex.ru;Светлана |
||||
indrs@rambler.ru;Сергей |
||||
VIP-Dantist@yandex.ru;Вячеслав |
||||
vufer@inbox.ru;Сурен Вердиян |
||||
acvyatin@mail.ru;Александр |
||||
pavel.bosko@gmail.com;Павел |
||||
carrera91167@inbox.ru;Елена |
||||
otik_kurdgelia@mail.ru;инна |
||||
markovskaya_88@mail.ru;Наталья |
||||
rorbah91@yandex.ru;Рорбах Олег |
||||
nestetion@yandex.ru;Анастасия |
||||
Kasyan12@mail.ru;Касьянов Александр |
||||
undead.koroleva2012@yandex.ru;Юлия |
||||
uvladz@gmail.com;Влад Ущаповский |
||||
deniskhig@yandex.ru;Денис |
||||
avkan@meta.ua;Андрей Кандыба |
||||
dine77e@gmail.com;Роман |
||||
romanov.hk@gmail.com;Илья |
||||
kazzak2008@rambler.ru;задание №6 Алексей Казаков |
||||
anik4366@mail.ru;Анна Борисенко |
||||
fom_iv@list.ru;Игорь Фоменко |
||||
gak.anya@mail.ru;Ашатhttp://payment.mokselle.ru/training/file/t0vxFP7PL88KC7I50Ij7cROqIuF47J4l/ |
||||
katerium@mail.ru;Екатерина |
||||
barchakov@gmail.com;Берс |
||||
elabuga-dar@yandex.ru;Ольга Шапоренко |
||||
konstantinov2006@yandex.ru;Константинов Евгений |
||||
elgus2007@yandex.ru;Гусельников Сергей |
||||
stacyinner@gmail.com;Анастасия Сергейчук |
||||
ansierra@mail.ru;Анна Губарева |
||||
ivan_smelkov@mail.ru;Иван |
||||
ahnuria@mail.ru;Нурия |
||||
edwardb@ngs.ru;Эдуард Бурлаков |
||||
kvon@list.ru;Ольга Колодкина |
||||
baigulova.indira@bk.ru;Индира Байгулова |
||||
codemaster74@mail.ru;Марат Абдуллин |
||||
naurale@yandex.ru;Илья |
||||
kvn0910@yandex.ru;Nadezda |
||||
idval@imedia.ru;Валерий |
||||
lapinanatalya@mail.ru;Наталья |
||||
vktmb@mail.ru;Валерий Каныгин |
||||
harleyhp@mail.ru;Александр |
||||
olypash-alians@yandex.ru;Ольга Пашкова |
||||
# 7 |
||||
pugachiov.serezha@yandex.ru;сергей |
||||
danil.kdo1@gmail.com;Даниил |
||||
vladsemuk@gmail.com;Владислав |
||||
remikont@inbox.ru;Михаил |
||||
torgbuk@mail.ru;Hromenko Nikolay |
||||
mainfilter@yandex.ru;Сергей |
||||
m.b.oper@Gmail.com;Кирилл |
||||
sheniachiglazki@gmail.com;Филь Юлия |
||||
A.MAILME@YANDEX.RU;Александра Скобелева |
||||
9186532244@mail.ru;Кирилл Воронков |
||||
s.s.shuvalova@gmail.com;Светлана Шувалова |
||||
igor.kiyashchenko@mail.ru;Игорь Киященко |
||||
shaspir@mail.ru;Хоха Илья |
||||
alxsrtv@gmail.com;Александр |
||||
newstas11@mail.ru;Станислав |
||||
turist2015@ya.ru;Артем |
||||
ks2007a@yandex.ru;Константин |
||||
evseev@dubna.ru;Юрий Евсеев |
||||
biznice@yandex.ru;Леонид |
||||
galapub@ya.ru;Галина Бутенко |
||||
artis72@ya.ru;Артем Исаев |
||||
petrsushko@mail.ru;Петр Сушко |
||||
amberleyley@gmail.com;Софья Прокофьева |
||||
vlkuprianov@gmail.com;Владимир Куприянов |
||||
akoziy@ya.ru;Андрей Козий |
||||
komichok@mail.ru;Андрей Комаров |
||||
andreidem4enko@yandex.ru;Демченко Андрей |
||||
Germanjuk-artm@rambler.ru;Артём Германюк |
||||
# 8 |
||||
igorevich70@gmail.com;Игорь Чуркин |
||||
romankox1973@gmail.com;Роман |
||||
a.silyaev@yandex.ru;Анвер Силяев |
||||
okonogray@yahoo.com;Олеся Конограй |
||||
sekvenseralex@mail.ru;Вдовин Алексей Сергеевич |
||||
lrv92@mail.ru;Лукьянов Роман |
||||
galkov@mokselle.com;Максим |
||||
skostin@mail.ru;Сергей Костин |
||||
pashtynov@mail.ru;Дмитрий Паштынов |
||||
korovina_natasha@mail.ru;Наталья Коровина |
||||
rkrivtsov@gmail.com;Роман Кривцов |
||||
gp@bipon.ru;Геннадий |
||||
gabeda@yandex.ru;Юлия Габеда |
||||
d.tiganov@yandex.ru;Дмитрий Тиганов |
||||
sokol-judo92@mail.ru;Кирилл Соколов |
||||
bet-ekaterina@mail.ru;Бетина Екатерина |
||||
vasiliy.moiseenko.64@mail.ru;Василий Моисеенко |
||||
teacoffee@i.ua;Максим |
||||
geogrii-cobolev@mail.ru;Юрий Соболев |
||||
svtbiz@inbox.ru;Светлана Титова |
||||
promenergo.ch@gmail.com;Андрей Медведев |
||||
# 9 |
||||
PhilatovEvgeny@mail.ru;Евгений Филатов |
||||
strix1985@mail.ru;Анна |
||||
k.rachimov@mail.ru;Кирилл Рахимов |
||||
nastusha1995is@gmail.com;Анастасия |
||||
IVTsygankov@gmail.com;Иван |
||||
bkr1@yandex.ru;Карэн |
||||
mobils100@yandex.ru;Максим Сурков |
||||
ganin-va@yandex.ru;Василий Ганин |
||||
iborzik@gmail.com;Ирина Борзик |
||||
romagrog@gmail.com;Роман |
||||
regione-2000@ya.ru;Калугина Ольга Анатольевна |
||||
megafabr@yandex.ru;Николай Беляев |
||||
vladvolod@yandex.ru;Владислав Володин |
||||
tsvetkovaai@yandex.ru;Цветкова Анна |
||||
qman_2@mail.ru;Василий Вдовин |
||||
Dron84@gmail.com;Андрей Шарунов |
||||
nikitakozh@ukr.net;Кожевников Никита |
||||
polikor-n@yandex.ru;Олег Радаев |
||||
euro2@yandex.ru;Александр Блохинов |
||||
dron_andr_2007@mail.ru;Анлрей |
||||
tatyana.best@list.ru;Татьяна Авдеева |
||||
# 10 |
||||
anton.alyoshin@hotmail.com;Антон Алешин |
||||
artem.panteleev@aol.com;Артём |
||||
strig_elena@mail.ru;Новикова Елена Владимировна |
||||
djsergeykovanin@mail.ru;Кованин Сергей |
||||
kviva@yandex.ru;Виктор |
||||
Evgeni2007@yandex.ru;Евгений |
||||
afonin123@bk.ru;Александр |
||||
chel200807@yandex.ru;Анатолий Емельянов |
||||
pipopka@bk.ru;Тепляшина Евгения Сергеевна |
||||
green2536@yandex.ru;Сергей |
||||
dmitriylarin@bk.ru;Дмитрий Ларин |
||||
ziv1@yandex.ru;Игорь Золотарев |
||||
sheptun_marina@mail.ru;Marina Ovchinnikova |
||||
sveta.utemova@bk.ru;Света |
||||
ann_posh@rambler.ru;Анна Сысоева |
||||
edwardb@mail.ru;Эдуард Бурлаков |
||||
valero_sv@mail.ru;Валерий Сорока |
||||
artsfabrica@gmail.com;Игорь Донцов |
||||
# 11 |
||||
5001010@bk.ru;Шемет Дмитрий |
||||
lexx59@gmail.com;Александр Пленкин |
||||
irina.kisik@gmail.com;Ирина |
||||
okislyakov@gmail.com;Олег Кисляков |
||||
julia_dea@mail.ru;Юлия Белоусова |
||||
adastra.m@yandex.ru;Мокрушин Вячеслав |
||||
Usov_88@mail.ru;Сергей |
||||
lipsuke@mac.com;Дмитрий Фадеев |
||||
andrey777@maryno.net;Улякин Андрей Юрьевич |
||||
p0v13@mail.ru;Павел Погодин |
||||
kindaleks@gmail.com;Алексей |
||||
ngpk_lysenko@mail.ru;Виталий Лысенко |
||||
anika2006@yandex.ru;Алексей Аникин |
||||
zel-mirra@bk.ru;Вадим |
||||
office@eskd72.ru;Дмитрий |
||||
peters2004@yandex.ru;Соловьёв Пётр |
||||
# 12 |
||||
iguar.k@ya.ru;Игорь Кузнецов |
||||
hakimov65@inbox.ru;Ринат |
||||
Yuriy1357@mail.ru;Юрий |
||||
1ckaz@mail.ru;Асет |
||||
felix.80808@mail.ru;Евгений |
||||
maks2546@mail.ru;Максим |
||||
zefaa@mail.ru;Елена Зинченко |
||||
sokol4eg@mail.ru;Михаил Соколов |
||||
artur.mandrich.99@mail.ru;Мандрич Артур |
||||
yglazy@mail.ru;Юрий |
||||
sanzhiku@gmail.com;Sanzhar Urazaliyev |
||||
# 13 |
||||
kira09051987@mail.ru;Гузель |
||||
9713943@mail.ru;Леонид |
||||
kuznetsovaelena1@mail.ru;Кузнецова Елена |
||||
savax@rambler.ru;Дмитрий Савченко |
||||
aksay_sayt@mail.ru;Татьяна Вельмакина |
||||
vic.bandura@yandex.ru;Виктор Бандура |
||||
itshepard57574@gmail.com;Руслан |
||||
senior.perfiliew@ya.ru;Иван Перфильев |
||||
terraincod@gmail.com;Сергей |
||||
galyna.pon@gmail.com;Galina Ponomarenko |
||||
polet2107@ya.ru;Вадим |
||||
vavilov_alex@mail.ru;alex |
||||
# 14 |
||||
edwantoshin@rambler.ru;Эдуард Антошин |
||||
niki-1@yandex.ru;Сачков Денис |
||||
igvassor@gmail.com;Игорь Сорокин |
||||
2013ekaterina@mail.ru;Олег Ляшенко |
||||
sir.oberst@yandex.ru;сергей |
||||
khaaan@mail.ru;Алексей |
||||
stas_ravskiy-95@mail.ru;Равский Станислав |
||||
dmitroff197@yandex.ru;Дмитрий |
||||
brolya@bk.ru;Бражинская Ольга |
||||
taurus19901@mail.ru;Вячеслав Скрыпник |
||||
makr1975@yandex.ru;Максим |
||||
oly_armavir@mail.ru;Ольга |
||||
j.haustov@gmail.com;Евгений |
||||
# 15 |
||||
oleg.akimov@mail.ru;Олег Акимов |
||||
ritaces@inbox.lv;Rita Cevere |
||||
nikita-ftf@Mail.ru;Nikita Veselov |
||||
mkenes_2@mail.ru;Мадияр |
||||
blackrum@yandex.ru;Роман Платонов |
||||
polkovnik51@mail.ru;Владимир |
||||
xaba578@mail.ru;Хава Куркиева |
||||
dontsurrender@ya.ru;Сергей Терехов |
||||
ci4rovik@mail.ru;Эдуард Фадеев |
||||
2906300@inbox.ru;Ильсур |
||||
royline@mail.ru;Шаронова Ольга |
||||
Slava666-2008@ya.ru;Вячеслав |
||||
host510@mail.ru;Михаил Гостищев |
||||
osmusic17@gmail.com;Александр Богданович |
||||
utk1@list.ru;Владимир Макеев |
||||
faridweb23@gmail.com;Фарид |
||||
svmc@ya.ru;Владимир |
||||
aamlhv@yandex.ru;Малахов Антон |
||||
aselya.bekenova@gmail.com;Асель Бекенова |
||||
# 16 |
||||
mf915@mail.ru;Антон |
||||
guipago@mail.ru;Dmitry |
||||
profiservic2@yandex.ru;Михаил |
||||
zlata.reznickova@yandex.ru;злата резникова |
||||
artyomzykov@yandex.ru;Артём |
||||
vladimir_glight@mail.ru;Владимир |
||||
zev3b@yandex.ru;Евгений Зеленько |
||||
Minigalin.nail.M@yandex.ru;Наиль |
||||
Dron84@gmail.com;Андрей Шарнуов |
||||
# 25 |
||||
kylych1@yandex.ru;Кылыч |
||||
Yoooda1989@mail.ru;Максим Петров |
||||
saski@mail.ru;Сергей Малкин |
||||
gisstyle@yandex.ru;Анастасия Гофман |
||||
belous.maria@gmail.com;Мария |
||||
mk@bagur.su;Кирилл Мещерин |
||||
riseagain@inbox.ru;Лина |
||||
artyomzykov@gmail.com;Артем |
||||
ale-xey76@yandex.ru;Алексей |
||||
r61boff@mail.ru;Григорий Шевцов |
||||
volnov_mv@mail.ru;Максим |
||||
ekbregionetrader@gmail.com;Валентин |
||||
shelbyblack37@gmail.com;Екатерина |
||||
# 59 |
||||
nikolletss@gmail.com;Марина |
||||
bestway305@yandex.ru;Артур Нурахметов |
||||
puzach@mail.ru;Пузач Влад |
||||
makguseff@yandex.ru;Максим Гусев |
||||
vadzimbelsky@rambler.ru;Вадим Бельский |
||||
my-post@mail.ru;Татьяна |
||||
alvar63@mail.ru;Лариса Варавина |
||||
# 17 |
||||
pertik@list.ru;Александр |
||||
ebortnikov@mail.ru;Евгений Бортников |
||||
kkvkk@mail.ru;Кирилл |
||||
omsterkhova@rambler.ru;Ольга |
||||
chiganu@gmail.com;Евгения Гороха |
||||
gennadiy1983@ya.ru;Геннадий |
||||
tutmos3@yandex.ru;Павел Орловский |
||||
artyomzolotykh@gmail.com;Артем |
||||
ssprava@ukr.net;Галина Стриженко |
||||
dyrnoj@bk.ru;Максим |
||||
ob080270@voliacable.com;Олег |
||||
marinemaks@yandex.ru;Мария Максимова |
||||
kborodavko2009@yandex.ru;Константин Бородавко |
||||
blackghost58@mail.ru;Илья |
||||
susenko_a@ukr.net;Андрей Сусенко |
||||
mahneva-mariya@mail.ru;Мария |
||||
a.michurin1783@mail.ru;Артем Мичурин |
||||
lcf-84@mail.ru;Сергей Калинкин |
||||
flintl@bk.ru;Кулаков Александр |
||||
kovalev.home@mail.ru;Владимир Ковалев |
||||
alexweb85@yandex.ru;Александр |
||||
vmiretskaya@gmail.com;Viktoriia Miretska |
||||
irena.kostina@mail.ru;ирина |
||||
MAXYTA22@yandex.ru;Максим |
||||
bengard@yandex.ru;Наталья |
||||
alexatro@yandex.ru;Александра Троянова |
||||
walerock@mail.ru;Валерий |
||||
www.Rifma@mail.ru;Сергей Мудряков |
||||
Vals_0791@mail.ru;Волкова Алиса |
||||
ruslan71@bmail.ru;Руслан Мордачев |
||||
serzhpodkolzin@yandex.ru;Сергей |
||||
webprogrammer77@gmail.com;Прохоров Игорь |
||||
hazhaev@gmail.com;Рашид Хажаев |
||||
ansserg@yandex.ru;Сергей |
||||
klu_lena@list.ru;Елена |
||||
serggovs@yandex.ru;Говердовский Сергей |
||||
kalina81@list.ru;Анна |
||||
donder@yandex.ru;Пастухов Данил |
||||
vip.samosadov@mail.ru;Алексей |
||||
coop01@mail.ru;Андрей |
||||
msp081152@mail.ru;Сергей Малахов |
||||
vladislav-avdeev@mail.ru;Владислав |
||||
serge-meb@mail.ru;Сергей |
||||
nadin12233@mail.ru;Надежда |
||||
lysenko.mi@gmail.com;Марк Лысенко |
||||
stepanuk1987@yandex.ru;Алексей |
||||
rock_n_vladok@mail.ru;Дурин Владислав |
||||
threed@rsgc.ru;Дмитрий Панфилов |
||||
gamer1648@yandex.ru;Виктор |
||||
choodick@gmail.com;Амелин Артем |
||||
kostgr@rambler.ru;Константин Гребенюков |
||||
vadigoryache@yandex.ru;вадим горячев |
||||
kirillrumyantsev1971@gmail.com;Кирилл Румянцев |
||||
anton_semenchuk@rambler.ru;Антон |
||||
orloff.eg@yandex.ru;Данил |
||||
vvuch@ya.ru;Вячеслав Волков |
||||
andru_45@list.ru;Андрей |
||||
tsubasa@tut.by;Валера |
||||
kira.kostenko@gmail.com;Кира Костенко |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,56 @@ |
||||
# coding=utf-8 |
||||
import datetime |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
start = datetime.datetime.now() |
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from courses.models import Lesson |
||||
from lms.tools import show_progress |
||||
|
||||
result = open('lessons_comments_hc.xml', 'w') |
||||
result.write('<?xml version="1.0" encoding="UTF-8"?>\n') |
||||
result.write('<hc>\n') |
||||
all = 0 |
||||
n = 0 |
||||
|
||||
for l in Lesson.objects.all(): |
||||
all += l.comments.count() if l.comments.exists() else 0 |
||||
|
||||
print('Количество комментариев: %s' % all) |
||||
|
||||
for lesson in Lesson.objects.all(): |
||||
if lesson.comments.exists(): |
||||
result.write('<post>\n') |
||||
result.write('<title>{0} / {1}</title>\n'.format(lesson.course.get_title(), lesson.get_title())) |
||||
result.write('<url>http://go.skillbox.ru/courses/lesson/{0}</url>\n'.format(lesson.id)) |
||||
result.write('<comments>\n') |
||||
|
||||
for comment in lesson.comments.all(): |
||||
result.write('<comment>\n') |
||||
result.write('<id>{0}</id>\n'.format(comment.id)) |
||||
result.write('<parent_id>{0}</parent_id>\n'.format(comment.parent_id)) |
||||
result.write('<root_id>{0}</root_id>\n'.format(comment.get_root_id() if comment.get_root_id() else '')) |
||||
result.write('<text>{0}</text>\n'.format(comment.get_text())) |
||||
result.write('<nick>{0}</nick>\n'.format(comment.owner.get_name())) |
||||
result.write('<time>{0}</time>\n'.format('')) |
||||
result.write('<ip>{0}</ip>\n'.format(comment.owner.get_ip())) |
||||
result.write('<account_id>{0}</account_id>\n'.format(comment.owner.id)) |
||||
result.write('<topic>{0}</topic>\n'.format('true' if comment.owner.is_admin else 'false')) |
||||
result.write('<avatar>{0}</avatar>\n'.format(comment.owner.get_image_url())) |
||||
result.write('</comment>\n\n') |
||||
show_progress(all, n) |
||||
n += 1 |
||||
|
||||
result.write('</comments>\n') |
||||
result.write('</post>\n') |
||||
|
||||
result.write('</hc>') |
||||
|
||||
|
||||
finish = datetime.datetime.now() |
||||
print('\nTIME: %s seconds' % (finish-start).seconds) |
||||
@ -0,0 +1,42 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
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 as C |
||||
from journals.models import TeacherJ, CourseThemeJ, HomeworkJ, HomeworkTry, LessonJ, ExamTry, ExamJ |
||||
from access.models import User |
||||
s = User.objects.get(email='alvar63@mail.ru') |
||||
c = C.objects.get(id=4) |
||||
for ht in HomeworkTry.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
ht.student = s |
||||
ht.save() |
||||
|
||||
for hj in HomeworkJ.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
hj.student = s |
||||
hj.save() |
||||
|
||||
for et in ExamTry.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
et.student = s |
||||
et.save() |
||||
|
||||
for et in ExamJ.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
et.student = s |
||||
et.save() |
||||
|
||||
for et in CourseThemeJ.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
et.student = s |
||||
et.save() |
||||
|
||||
for et in LessonJ.objects.filter(student__email='varavina@bk.ru', material__course=c): |
||||
et.student = s |
||||
et.save() |
||||
|
||||
tj = TeacherJ.objects.get(student__email='varavina@bk.ru', course=c) |
||||
tj.student = s |
||||
tj.save() |
||||
@ -0,0 +1 @@ |
||||
{'petrichv@gmail.com', 'skovalska@mail.ru', 'irina_z_z@mail.ru irina.huchak@gmail.com', 'a@tkachenko.in', '146133@gmail.com', 'Flyshtein@gmail.com', 'nik-black-dragon@mail.ru', 'ikey0172@mail.ru', 'gb.gayane@gmail.com', 'andrievskiydmitriy@gmail.com', 'zfalevich@gmail.com', 'nava011235@gmail.com', 'anastasy.petrenko87@gmail.com', 'vd@wearewowagency.com', 'sasha.melbourne@gmail.com', 'bobafas@gmail.com', 'egor@studiofact.ru', 'km@colary.ru', 'einzheev@itl.com.kz', 'zvetaan@gmail.com', 'dmitrij.pastushenko@gmail.com', 'smiley1776@gmail.com', 'ek.design11@gmail.com', 'lepon@bk.ru', 'mtsalka@scnsoft.com', 'baho9208@mail.ru', 's.shtukaturka@gmail.com', 'pobiz@inbox.ru', 'Nikolebedev@mail.ru', 'bershonok@gmail.com', 'waximov@gmail.com', 'dsukhanova@gmail.com', 'kira.yakuhina@gmail.com', 'info@wbest.ru', 'ap@ds-p.ru', 'dinozavrix@gmail.com', 'a.reznichenko@clientlab.ru', 'mmaslennikov@mail.ru', 'ishulga86@gmail.com', 'vovkakunts@gmail.com', 'wRUSha@yandex.ru', 'sanzharsurshanov@gmail.com', 'makspirogov@gmail.com', 'yuri.a.k.design@gmail.com', 'Dmitry.eremin7@gmail.com', 'eco.pun@gmail.com', 'dmytriy.suslov@gmail.com', 'arthur.subbota@gmail.com', 'A.dobrian@gmail.com', 'trjyfel@mail.ru', 'mikhail.a.gusev@gmail.com', 'ilyuha86@gmail.com', 'den.volchkevich@gmail.com', 'i.shymanskyi@gmail.com', 'jalalovna@yandex.ru'} |
||||
@ -0,0 +1,321 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<hc> |
||||
<post> |
||||
<title>Веб-разработчик / Javascript — знакомство, концепция, логика выполнения скриптов браузером</title> |
||||
<url>http://go.skillbox.ru/courses/lesson/6</url> |
||||
<comments> |
||||
<comment> |
||||
<id>1766</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />Вот когда Вы говорите одно, а на доске печатается совсем другое (слишком большая задержка от того, когда Вы набираете текст, до того, как он набирается на доске) не очень хорошо. прям взрыв мозга.<br /><br /><br /></text> |
||||
<nick>Игорь</nick> |
||||
<time></time> |
||||
<ip>109.254.49.199</ip> |
||||
<account_id>152</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/dad49cb914ac438eb98db95eca7faa81.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>1857</id> |
||||
<parent_id>4328</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />Поддерживаю! Крайне не удобно!<br /></text> |
||||
<nick>Сергей</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>144</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/be41478e389f431a9540c4f99705323d.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>2138</id> |
||||
<parent_id>4328</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />И, кажется, что с каждым видео эта задержка всё больше и больше :( Крайне неудобно смотреть<br /></text> |
||||
<nick>Ольга</nick> |
||||
<time></time> |
||||
<ip>94.25.171.19</ip> |
||||
<account_id>159</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_iYBxnlP</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>2301</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />Как оказалось,я не один обратил внимание на факт отсутсвия синхронизации текста с изображением.Теряется нить восприятия материала .<br /><br /><br /><br />Может быть было бы лучше,если бы лектор комментировал написание кода на экране,а не наоборот.<br /><br /><br /><br />Полность согласен с авторами сообщений .<br /><br /><br /><br />С уважением ко всем.<br /><br /><br /><br />Леонид Филатов.<br /><br /><br /><br /><br /></text> |
||||
<nick>Леонид</nick> |
||||
<time></time> |
||||
<ip>89.146.80.154</ip> |
||||
<account_id>169</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/2f161e7a744b4e7caabfbd2fcc973c13.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>2678</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />Да логики как-то нет!!!! Получается что тупо читают лекцию... ((((( Ожидал большего. В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем. Хотя где-то и затрагиваться моменты и логика работы скрипта. Я понимаю что нельзя все рассказать за 1,5 часа, но можно было бы тогда хоть материал дать, шпаргалку в которой бы написано было все что надо знать.<br /></text> |
||||
<nick>Иван</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>177</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/8c596fd013a646d39e50c84f5b940868.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>2805</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><br />Очень не удобно просматривать видео , Во первых иногда нет на доске ,о чем говорят. Во вторых очень мелко , Нельзя ли убрать лектора и сделать доску больше.Соглашаюсь с написанным выше.<br /></text> |
||||
<nick>Харсан</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>140</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/37161c700fae4c9abc05dd04b5ac2da9.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>3602</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Я уже писал об этом и после четвёртого урока, и после пятого, но рассинхронизация становится всё хуже и хуже. Что-то понять, когда ты видишь одно, а слышишь совсем другое - это просто взрыв мозга.</p> |
||||
|
||||
<p>Кроме того, не было ни слова сказано о</p> |
||||
|
||||
<ul> |
||||
<li>Вопросы кроссбраузерности – логика введения новых компонентнов Javascript ведущими браузерами</li> |
||||
<li>Практическая сторона процесса стандартизации,</li> |
||||
</ul> |
||||
|
||||
<p>хотя это было анонсировано в описании урока. Или только я этого не услышал?</p> |
||||
</text> |
||||
<nick>Михаил</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>168</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_NYTYW1A</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>3841</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>К сожалению, на 30 минуте просто взял и закрыл. и стал смотреть подобные видео уроки на ютубе. Просто невозможно смотреть из-за этого рассинхрона. Очень жаль. Писали выше "Да логики как-то нет!!!! Получается что тупо читают лекцию... ((((( Ожидал большего. В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем. Хотя где-то и затрагиваться моменты и логика работы скрипта. Я понимаю что нельзя все рассказать за 1,5 часа, но можно было бы тогда хоть материал дать, шпаргалку в которой бы написано было все что надо знать." - полностью с этим согласен :(</p> |
||||
</text> |
||||
<nick>Кирилл</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>244</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/bda12f186fd04a4f9c46106b00e6ec12.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>3948</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>- полностью с этим согласен :( s vami siwu В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем.</p> |
||||
</text> |
||||
<nick>Без имени</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>203</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_2lldj1S</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>4439</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>На многих бесплатных курсах на ютубе и то доходчивее обьясняют и видео от звука не отстаёт:(( </p> |
||||
</text> |
||||
<nick>Роман</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>234</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/352052e572e9464fa0bc14a2f3568722.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>4593</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Всем привет!</p> |
||||
|
||||
<p>Мне то-же не понравилась рассинхронизация звука и видео, просто монтаж видео делался не программистом :)</p> |
||||
|
||||
<p>Преподаватель дает материал компактно и доходчиво. Мне нравится.</p> |
||||
|
||||
<p>Предлагаю перередактировать видео всего курса с нормальной синхронизацией, убрать <a href="http://ssmaker.ru/af6cd7d1.png" target="_blank">косяки</a> и добавить оптимизацию пространства картинки как на <a href="http://ssmaker.ru/884e4a79.png" target="_blank">рисунке (ссылка)</a>. Готов выполнить.</p> |
||||
</text> |
||||
<nick>Сергей</nick> |
||||
<time></time> |
||||
<ip>95.52.232.200</ip> |
||||
<account_id>283</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/fd54983362be4a43a76c8ac03e4bbdcb.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>5494</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Я просто возмущена тем, что в таком режиме (рассинхронизации) невозможно учиться и что-то вообще понять... А главное, рассказывает преподаватель доходчиво... и очень обидно, что просто кто-то слепил все тяп-ляп, испортив хорошую вещь... А еще - переделать всё это элементарно, имея исходники... Почему ничего не меняется как минимум месяц, судя по первым комментариям? Кто-нибудь кроме недовольных учеников вообще их читает?</p> |
||||
</text> |
||||
<nick>Анастасия</nick> |
||||
<time></time> |
||||
<ip>217.118.78.38</ip> |
||||
<account_id>324</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_ScyRJWj</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>5495</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Интересно, а у всех получается повторить, что демонстрируется на лекции, у меня уже на предыдущей и этой лекции некоторые элементы не работают как у лектора. Делал все как и лектор, на прошлом занятии даже сравнивал с "рыбой" присланной к заданию - визуально всё правильно, но у меня, в отличие от "рыбы" не все работает!</p> |
||||
</text> |
||||
<nick>Сергей</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>249</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/2db827adf76f4cbca66e6ee036bf7f0f.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>5653</id> |
||||
<parent_id>8096</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Пару раз за прошлую лекцию он делал опечатки и у него тоже не работало. Потом их поправлял "незаметно", по ходу рассказа о других вещах. А еще попробуйте пропустить Ваш код через HTML-валидатор, вот этот: <a href="https://validator.w3.org/#validate_by_upload">https://validator.w3.org/#validate_by_upload</a> . Возможно выдаваемые им ошибки подскажут, где Вы ошиблись. А так обычное для программирования дело: опечатки в одной букве, пропущенная точка с запятой и т.п.</p> |
||||
</text> |
||||
<nick>Вячеслав</nick> |
||||
<time></time> |
||||
<ip>94.29.71.153</ip> |
||||
<account_id>368</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/310119aed6a2495397c7c868ced03ba3.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>5654</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>P.S. Если Вы так и не сможете найти почему не работает, попробуйте еще открыть текст в "умном" текстовом редакторе, например Notepad++. Он подсвечивает синтаксис, возможно заметите опечатку или незакрытый тег. Еще есть средства разработчика во всех популярных браузерах, тоже полезны для поиска ошибок.</p> |
||||
</text> |
||||
<nick>Вячеслав</nick> |
||||
<time></time> |
||||
<ip>94.29.71.153</ip> |
||||
<account_id>368</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/310119aed6a2495397c7c868ced03ba3.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>5940</id> |
||||
<parent_id>8256</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>" Потом их поправлял "незаметно", по ходу рассказа о других вещах. " - тоже подметил. Правильнее, грамотнее и полезнее для новичков было бы, если б лектор указывал на ошибки, опечатки и их исправление, а не делал бы это молча, как бы тайком. </p> |
||||
</text> |
||||
<nick>Константин</nick> |
||||
<time></time> |
||||
<ip>5.167.79.248</ip> |
||||
<account_id>362</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/65b3123d0c664635af0dfd34599ab803.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>6181</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Запись уже невозможно открыть. Может быть на ремонте?</p> |
||||
</text> |
||||
<nick>ANATOLY</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>288</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/8980c1dc14364eba9ef0872384d6200d.jpg</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>7719</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Вторая часть лекции - очень сумбурная и непонятная. Похоже, что чем сложнее тема - тем хуже объяснение!</p> |
||||
|
||||
<p>Кто-нибудь, кроме студентов, видит, что изображение и речь рассинхронизированы!</p> |
||||
|
||||
<p>С уважением,<br /> |
||||
D</p> |
||||
</text> |
||||
<nick>Без имени</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>226</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_XClkG9G</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>8843</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Когда с рассинхроном разберётесь?? Вообще теряется нить повествования. Невозможно так обучаться.</p> |
||||
</text> |
||||
<nick>Вячеслав</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>246</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_q6Pgjib</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>9236</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Сильно раздражает не соответствие лекции и "рыбы", а так же отставание экрана. Куда теперь отправлять ДЗ тоже не понятно.Подскажите!</p> |
||||
</text> |
||||
<nick>Ольга</nick> |
||||
<time></time> |
||||
<ip>95.153.130.117</ip> |
||||
<account_id>522</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru/media/personal_files/076604222a9c424eac05253820d91670.png</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>9345</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Мое предложение - подать совместную жалобу и запросить возврат средств. Никакой обратной связи, обучаться невозможно изза недостатка информации, услуга оказывается не должным образом. Кто за - пишите whatsapp 79251879198 будем придумывать что делать)</p> |
||||
</text> |
||||
<nick>Леонид</nick> |
||||
<time></time> |
||||
<ip>None</ip> |
||||
<account_id>794</account_id> |
||||
<topic>false</topic> |
||||
<avatar>http://go.skillbox.ru//media/ava_f5psFo5</avatar> |
||||
</comment> |
||||
|
||||
<comment> |
||||
<id>9483</id> |
||||
<parent_id>0</parent_id> |
||||
<root_id></root_id> |
||||
<text><p>Вот люди пишут:"Я понимаю что нельзя все рассказать за 1,5 часа", а за 50 минут? Лекции становятся все короче и сумбурнее, полностью согласна, что качество услуги никак не соответствует цене.</p> |
||||
</text> |
||||
<nick>Елизавета</nick> |
||||
@ -0,0 +1,14 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
from finance.models import Bill |
||||
|
||||
for bill in Bill.objects.filter(status='F'): |
||||
if not bill.user.customer: |
||||
bill.user.customer = True |
||||
bill.user.save() |
||||
@ -0,0 +1,152 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
from django.core.files import File |
||||
|
||||
sys.path.append("/var/www/projects/lms/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
import openpyxl |
||||
from finance.models import Price |
||||
from access.models import User |
||||
|
||||
EXEL_PATH = 'data.xlsx' |
||||
USERS = {'point': 'id'} |
||||
USERS_P = {} |
||||
USERS_E = {} |
||||
SERVICES = {'point': 'id'} |
||||
BOOK = openpyxl.load_workbook(filename=EXEL_PATH) |
||||
SHEET = BOOK.active |
||||
|
||||
|
||||
def check_exists_row(index): |
||||
columns = ['A', 'B', 'C', 'D', 'E', 'F', 'J', 'H', 'I', 'J'] |
||||
for i in columns: |
||||
if SHEET['%s%i' % (i, index)].value: |
||||
return True |
||||
return False |
||||
|
||||
|
||||
def get_user_name(id): |
||||
result = u'' |
||||
try: |
||||
user = User.objects.get(id=id) |
||||
except User.DoesNotExist: |
||||
return u'Пользователь не найден' |
||||
except ValueError: |
||||
return u'Студент' |
||||
else: |
||||
result = user.get_full_name() |
||||
return result |
||||
|
||||
|
||||
def get_user_email(id): |
||||
result = u'' |
||||
try: |
||||
user = User.objects.get(id=id) |
||||
except User.DoesNotExist: |
||||
return u'Пользователь не найден' |
||||
except ValueError: |
||||
return u'Студент' |
||||
else: |
||||
result = user.email |
||||
return result |
||||
|
||||
|
||||
def get_user_phone(id): |
||||
result = u'' |
||||
try: |
||||
user = User.objects.get(id=id) |
||||
except User.DoesNotExist: |
||||
return u'Пользователь не найден' |
||||
except ValueError: |
||||
return u'Студент' |
||||
else: |
||||
result = user.get_phone() |
||||
return result |
||||
|
||||
|
||||
def get_service_data(id): |
||||
result = u'' |
||||
try: |
||||
service = Price.objects.get(id=id) |
||||
except Price.DoesNotExist: |
||||
return u'Пользователь не найден' |
||||
except ValueError: |
||||
return u'Услуга' |
||||
else: |
||||
result = service.get_name() |
||||
return result |
||||
|
||||
|
||||
####### |
||||
def read_users(): |
||||
i = 1 |
||||
while check_exists_row(i): |
||||
box = 'I%i' % i |
||||
USERS[box] = SHEET[box].value |
||||
USERS_P['J%s' % i] = USERS[box] |
||||
USERS_E['K%s' % i] = USERS[box] |
||||
print u'Читаю' |
||||
print box |
||||
print USERS[box] |
||||
i += 1 |
||||
|
||||
|
||||
def read_services(): |
||||
i = 1 |
||||
while check_exists_row(i): |
||||
box = 'H%i' % i |
||||
SERVICES[box] = SHEET[box].value |
||||
print u'Читаю' |
||||
print box |
||||
print SERVICES[box] |
||||
i += 1 |
||||
|
||||
|
||||
def write_users(): |
||||
for box, value in USERS.items(): |
||||
data = get_user_name(value) |
||||
try: |
||||
SHEET[box] = data |
||||
except openpyxl.utils.exceptions.CellCoordinatesException: |
||||
print u'Ошибка' |
||||
|
||||
print u'Пишу' |
||||
print box |
||||
print data |
||||
|
||||
for box, value in USERS_P.items(): |
||||
data = get_user_phone(value) |
||||
try: |
||||
SHEET[box] = data |
||||
except openpyxl.utils.exceptions.CellCoordinatesException: |
||||
print u'Ошибка' |
||||
|
||||
for box, value in USERS_E.items(): |
||||
data = get_user_email(value) |
||||
try: |
||||
SHEET[box] = data |
||||
except openpyxl.utils.exceptions.CellCoordinatesException: |
||||
print u'Ошибка' |
||||
|
||||
|
||||
def write_services(): |
||||
for box, value in SERVICES.items(): |
||||
data = get_service_data(value) |
||||
try: |
||||
SHEET[box] = data |
||||
except openpyxl.utils.exceptions.CellCoordinatesException: |
||||
print u'Ошибка' |
||||
|
||||
print u'Пишу' |
||||
print box |
||||
print data |
||||
|
||||
|
||||
read_users() |
||||
write_users() |
||||
read_services() |
||||
write_services() |
||||
BOOK.save(EXEL_PATH) |
||||
@ -0,0 +1,67 @@ |
||||
# coding=utf-8 |
||||
import os |
||||
import django |
||||
import sys |
||||
import simplejson |
||||
|
||||
|
||||
sys.path.append("/var/www/projects/codemy/") |
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||
django.setup() |
||||
|
||||
from courses.models import Course, CourseTheme, Lesson, Exam, Homework |
||||
|
||||
excludes = ['teachers', 'image', 'big_image', 'token', 'public', 'comments', 'materials', ] |
||||
data = simplejson.load(open('courses_dump.json')) |
||||
_map = {} |
||||
results = [] |
||||
|
||||
|
||||
def get_kwargs(fields): |
||||
result = {} |
||||
for key, value in fields.items(): |
||||
print(key, value) |
||||
if key not in excludes: |
||||
if key in _map: |
||||
if type(value) == list: |
||||
_result = [] |
||||
for _tmp in value: |
||||
_result.append(_map[key][_tmp]) |
||||
value = _result |
||||
else: |
||||
value = _map[key][value] if key in _map else value |
||||
|
||||
result[key] = value |
||||
results.append(result) |
||||
return result |
||||
|
||||
|
||||
def add_in_map(model, key, value): |
||||
if model not in _map: |
||||
_map[model] = {} |
||||
_map[model][key] = value |
||||
|
||||
for model in data: |
||||
if model['model'] == 'courses.course': |
||||
course, c = Course.objects.get_or_create(**(dict(get_kwargs(model['fields'])))) |
||||
add_in_map('course', model['pk'], course) |
||||
|
||||
elif model['model'] == 'courses.coursetheme': |
||||
course, c = CourseTheme.objects.get_or_create(**(dict(get_kwargs(model['fields'])))) |
||||
add_in_map('theme', model['pk'], course) |
||||
|
||||
elif model['model'] == 'courses.lesson': |
||||
course, c = Lesson.objects.get_or_create(**(dict(get_kwargs(model['fields'])))) |
||||
add_in_map('lesson', model['pk'], course) |
||||
|
||||
elif model['model'] == 'courses.exam': |
||||
course, c = Exam.objects.get_or_create(**(dict(get_kwargs(model['fields'])))) |
||||
add_in_map('exam', model['pk'], course) |
||||
|
||||
elif model['model'] == 'courses.homework': |
||||
course, c = Homework.objects.get_or_create(**(dict(get_kwargs(model['fields'])))) |
||||
add_in_map('homework', model['pk'], course) |
||||
|
||||
print(results) |
||||
|
||||
#print(data[0]) |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue