init new project

remotes/origin/pm_task_31703
Alexander Zolotarev 9 years ago
commit ce1f62e10c
  1. 40
      .gitignore
  2. 37
      .gitlab-ci.yml
  3. 18
      1.txt
  4. 39
      Dockerfile
  5. 0
      __migrate/__init__.py
  6. 9
      __migrate/dump_fixtures.py
  7. 15
      __migrate/fix_arch.py
  8. 1
      __migrate/fixtures/access.json
  9. 1
      __migrate/fixtures/courses.json
  10. 1
      __migrate/fixtures/finance.json
  11. 1
      __migrate/fixtures/management.json
  12. 1
      __migrate/fixtures/storage.json
  13. 105
      __migrate/journal_merge.py
  14. 63
      __migrate/load_fixtures.py
  15. 277
      __migrate/merge_courses.py
  16. 110
      __migrate/merge_finance.py
  17. 111
      __migrate/merge_fixtures.py
  18. 228
      __migrate/merge_journals.py
  19. 88
      __migrate/merge_management.py
  20. 100
      __migrate/merge_storage.py
  21. 116
      __migrate/merge_users.py
  22. 1
      __migrate/pk_maps.json
  23. 121
      __migrate/post_fixtures.py
  24. 11
      __migrate/test_course_map.py
  25. 83
      __test/access_api/form.js
  26. 5
      __test/access_api/jquery.min.js
  27. 19
      __test/access_api/text.html
  28. 13
      __test/other_pay.html
  29. 15
      __test/time_test.html
  30. 5796
      _practice/1.txt
  31. 10
      _practice/reg_test.py
  32. 71
      _utils/1.txt
  33. 117
      _utils/2.txt
  34. 108
      _utils/3.txt
  35. 142
      _utils/4.txt
  36. 0
      _utils/__init__.py
  37. 106
      _utils/aic_users4
  38. 20
      _utils/bills_migrate.py
  39. 121
      _utils/change_teacher.py
  40. 60
      _utils/check_HT.py
  41. 12
      _utils/check_course_map.py
  42. 21
      _utils/check_dubble_users_ip.py
  43. 12
      _utils/check_empty_LJ.py
  44. 24
      _utils/check_expired.py
  45. 20
      _utils/check_exsists_journal.py
  46. 106
      _utils/check_journal_access.py
  47. 34
      _utils/check_journals.py
  48. 28
      _utils/check_lesson_access.py
  49. 16
      _utils/check_lesson_open.py
  50. 47
      _utils/check_lesson_open_near_homework.py
  51. 28
      _utils/check_lesson_statuses.py
  52. 8
      _utils/check_many_journals.py
  53. 9
      _utils/check_middle_HT.py
  54. 26
      _utils/check_opens.py
  55. 27
      _utils/check_prices.py
  56. 41
      _utils/check_robo_prep.py
  57. 24
      _utils/check_robo_teacher.py
  58. 31
      _utils/check_storage.py
  59. 24
      _utils/check_waiting.py
  60. 56
      _utils/clean_bb_tags.py
  61. 20
      _utils/clean_bill.py
  62. 20
      _utils/clear_db.py
  63. 106
      _utils/copy_user.py
  64. 1
      _utils/courses_dump.json
  65. 20
      _utils/create_comments_bbtext.py
  66. 46
      _utils/create_diploms.py
  67. 25
      _utils/create_letter_result.py
  68. 22
      _utils/create_modal_task.py
  69. 18
      _utils/create_modals.py
  70. 28
      _utils/create_modals_stack.py
  71. 38
      _utils/diplom_nameless.txt
  72. 1
      _utils/emails_md5.txt
  73. 1
      _utils/emails_ux.txt
  74. 57
      _utils/error.log_back
  75. 0
      _utils/exclude_re_welcome.json
  76. 29
      _utils/export_vzaar.py
  77. 15
      _utils/finish_export_vzaar.py
  78. 8
      _utils/func_test.py
  79. 48
      _utils/gazprom.txt
  80. 26
      _utils/gen_diploms.py
  81. 27
      _utils/get_email_no_exclude_hw_for_course.py
  82. 17
      _utils/get_emails_customers.py
  83. 18
      _utils/get_no_active_users.py
  84. 27
      _utils/get_teacher_load.py
  85. 34
      _utils/get_users_with_bills.py
  86. 0
      _utils/import_JC/__init__.py
  87. 21
      _utils/import_JC/clean_journals.py
  88. 20
      _utils/import_JC/clear_users.py
  89. 173
      _utils/import_JC/create_user_map.py
  90. 1
      _utils/import_JC/create_users.py
  91. 3
      _utils/import_JC/test_imigrate.txt
  92. 751
      _utils/import_JC/users_base.txt
  93. 4716
      _utils/import_JC/users_base_back
  94. 56
      _utils/import_lesson_comments_to_hc.py
  95. 42
      _utils/import_profile_to_new_profile.py
  96. 1
      _utils/kaspi.txt
  97. 321
      _utils/lessons_comments_hc.xml
  98. 14
      _utils/load_as_customer.py
  99. 152
      _utils/load_bills_excel.py
  100. 67
      _utils/load_courses.py
  101. Some files were not shown because too many files have changed in this diff Show More

40
.gitignore vendored

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

18
1.txt

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

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,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>Я уже писал об этом и после четвёртого урока, и после пятого,&nbsp; но рассинхронизация становится всё хуже и хуже. Что-то понять, когда ты видишь одно, а слышишь совсем другое - это просто взрыв мозга.</p>
<p>Кроме того, не было ни слова сказано о</p>
<ul>
<li>Вопросы кроссбраузерности &ndash; логика введения новых компонентнов 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 минуте просто взял и закрыл. и стал смотреть подобные видео уроки на ютубе. Просто невозможно смотреть из-за этого рассинхрона. Очень жаль. Писали выше &quot;Да логики как-то нет!!!! Получается что тупо читают лекцию... ((((( Ожидал большего. В начале была в лекциях жизнь, интерес... желание... А сейчас как-то это напоминает вебинар, на котором рассказывают обо всем, но не о чем. Хотя где-то и затрагиваться моменты и логика работы скрипта. Я понимаю что нельзя все рассказать за 1,5 часа, но можно было бы тогда хоть материал дать, шпаргалку в которой бы написано было все что надо знать.&quot; - полностью с этим согласен :(</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>На многих бесплатных курсах на ютубе и то доходчивее обьясняют и видео от звука не отстаёт:((&nbsp;</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> и добавить оптимизацию пространства картинки&nbsp;как на <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>Я просто возмущена тем, что в таком режиме (рассинхронизации) невозможно учиться и что-то вообще понять... А главное, рассказывает преподаватель доходчиво... и очень обидно, что просто кто-то слепил все тяп-ляп, испортив хорошую вещь... А еще - переделать всё это элементарно, имея исходники... Почему ничего не меняется как минимум месяц, судя по первым комментариям?&nbsp; Кто-нибудь кроме недовольных учеников вообще их читает?</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>Интересно, а у всех получается повторить, что демонстрируется на лекции, у меня уже на предыдущей и этой лекции некоторые элементы не работают как у лектора. Делал все как и лектор, на прошлом занятии даже сравнивал с &quot;рыбой&quot; присланной к заданию - визуально всё правильно, но у меня, в отличие от &quot;рыбы&quot; не все работает!</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>Пару раз за прошлую лекцию он делал опечатки и у него тоже не работало.&nbsp;Потом их поправлял &quot;незаметно&quot;, по ходу рассказа о других вещах. А еще попробуйте пропустить Ваш код через HTML-валидатор, вот этот:&nbsp;<a href="https://validator.w3.org/#validate_by_upload">https://validator.w3.org/#validate_by_upload</a>&nbsp;. Возможно выдаваемые им ошибки подскажут, где Вы ошиблись. А так обычное для программирования дело: опечатки в одной букве, пропущенная точка с запятой и т.п.</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. Если Вы так и не сможете найти почему не работает, попробуйте еще открыть текст в &quot;умном&quot; текстовом редакторе, например Notepad++. Он подсвечивает синтаксис, возможно заметите опечатку или незакрытый тег. Еще есть средства разработчика во &nbsp;всех популярных&nbsp;браузерах, тоже полезны для поиска ошибок.</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>&quot; Потом их поправлял &quot;незаметно&quot;, по ходу рассказа о других вещах. &quot; - тоже подметил. Правильнее,&nbsp;грамотнее и полезнее для новичков было бы, если б лектор указывал на ошибки, опечатки и их исправление, а не делал бы это&nbsp;молча, как бы тайком.&nbsp;</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>Кто-нибудь, кроме студентов, видит, что изображение&nbsp;и&nbsp;речь рассинхронизированы!</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>Сильно раздражает не соответствие лекции&nbsp;и &quot;рыбы&quot;, а так же отставание экрана. Куда теперь отправлять ДЗ тоже не понятно.Подскажите!</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>Вот люди пишут:&quot;Я понимаю что нельзя все рассказать за 1,5 часа&quot;, а за 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…
Cancel
Save