parent
cf8727331f
commit
d23dbd7218
7 changed files with 534 additions and 1 deletions
@ -0,0 +1,62 @@ |
|||||||
|
#! coding: utf-8 |
||||||
|
|
||||||
|
import os |
||||||
|
import django |
||||||
|
import sys |
||||||
|
import os |
||||||
|
|
||||||
|
from datetime import datetime |
||||||
|
|
||||||
|
sys.path.append("/var/www/skillbox") |
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||||
|
django.setup() |
||||||
|
|
||||||
|
from lms.settings import BASE_DIR |
||||||
|
from courses.models import Course |
||||||
|
from finance.models import Price |
||||||
|
from journals.models import TeacherJ, check_journal |
||||||
|
|
||||||
|
def check_course_journal(course_id): |
||||||
|
print('===========\nКурс: %s\n==============\n' % Course.objects.get(id=course_id).title) |
||||||
|
|
||||||
|
print('Начало проверки журнала курса') |
||||||
|
global_start = start = datetime.now() |
||||||
|
course = Course.objects.get(id=course_id) |
||||||
|
course.build_map() |
||||||
|
finish = datetime.now() |
||||||
|
print('Конец проверки журнала курса. Длительность: %s мсек\n' % (finish-start).microseconds) |
||||||
|
|
||||||
|
print('Начало проверки услуг') |
||||||
|
start = datetime.now() |
||||||
|
all = Price.objects.filter(by_time=0, post_fire=0, course__id=course_id).count() |
||||||
|
print('Количество услуг на проверку: %s' % all) |
||||||
|
for i in Price.objects.filter(by_time=0, post_fire=0, course__id=course_id): |
||||||
|
i.check_points() |
||||||
|
finish = datetime.now() |
||||||
|
print('Конец проверки услуг. Длительность: %s мсек\n' % (finish-start).microseconds) |
||||||
|
|
||||||
|
print('Начало очистки двойных журналов') |
||||||
|
start = datetime.now() |
||||||
|
os.system('python clean_twice_course_journals.py %s' % course_id) |
||||||
|
finish = datetime.now() |
||||||
|
print('Конец очистки двойных журналов. Длительность: %s\n' % (finish-start).microseconds) |
||||||
|
|
||||||
|
print('Начало проверки журналов') |
||||||
|
all = TeacherJ.objects.filter(progress__gt=0, course__id=course_id).count() |
||||||
|
print('Количество журналов на проверку: %s' % all) |
||||||
|
for i in TeacherJ.objects.filter(progress__gt=0, course__id=course_id).order_by('-id'): |
||||||
|
check_journal(i, from_console=True) |
||||||
|
print('Конец проверки журналов. Длительность: %s сек\n' % (finish-start).microseconds) |
||||||
|
|
||||||
|
print('Начало открытия уроков курса') |
||||||
|
start = datetime.now() |
||||||
|
os.system('python open_course_lesson.py %s' % course_id) |
||||||
|
finish = datetime.now() |
||||||
|
print('Конец открытия уроков курса. Длительность: %s\n' % (finish-start).microseconds) |
||||||
|
|
||||||
|
global_finish = datetime.now() |
||||||
|
print('==============================\nДлительность: %s сек' % (global_finish - global_start).seconds) |
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
course_id = sys.argv[1] |
||||||
|
check_course_journal(course_id) |
||||||
@ -0,0 +1,74 @@ |
|||||||
|
# coding=utf-8 |
||||||
|
import os |
||||||
|
import django |
||||||
|
import sys |
||||||
|
import datetime |
||||||
|
|
||||||
|
start = datetime.datetime.now() |
||||||
|
sys.path.append("/var/www/skillbox/") |
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||||
|
django.setup() |
||||||
|
|
||||||
|
from courses.models import Course, CourseTheme, Exam, Homework, Lesson |
||||||
|
from journals.models import TeacherJ, CourseThemeJ, LessonJ, HomeworkJ, ExamJ |
||||||
|
from access.models import User |
||||||
|
from lms.tools import show_progress |
||||||
|
|
||||||
|
|
||||||
|
def check_this(obj, collection): |
||||||
|
if not collection.get(obj.material.id): |
||||||
|
collection[obj.material.id] = True |
||||||
|
else: |
||||||
|
obj.delete() |
||||||
|
|
||||||
|
|
||||||
|
def check_TJ(_course, _user): |
||||||
|
try: |
||||||
|
_tj = TeacherJ.objects.get(course=_course, student=_user) |
||||||
|
except TeacherJ.DoesNotExist: |
||||||
|
return None |
||||||
|
except TeacherJ.MultipleObjectsReturned: |
||||||
|
_tmp = TeacherJ.objects.filter(course=_course, student=_user).order_by('start_date') |
||||||
|
_tj = _tmp[0] |
||||||
|
for i in _tmp: |
||||||
|
if i != _tj: |
||||||
|
i.delete() |
||||||
|
|
||||||
|
return _tj |
||||||
|
|
||||||
|
course_id = sys.argv[1] |
||||||
|
|
||||||
|
_all = User.objects.all().count() |
||||||
|
_n = 0 |
||||||
|
_about_time = [] |
||||||
|
for _user in User.objects.all(): # todo only course users |
||||||
|
_st = datetime.datetime.now() |
||||||
|
_course = Course.objects.filter(id=course_id) |
||||||
|
_l = dict({i.id: False for i in Lesson.objects.filter(course=_course)}) |
||||||
|
_h = dict({i.id: False for i in Homework.objects.filter(course=_course)}) |
||||||
|
_e = dict({i.id: False for i in Exam.objects.filter(course=_course)}) |
||||||
|
_t = dict({i.id: False for i in CourseTheme.objects.filter(course=_course)}) |
||||||
|
|
||||||
|
_tj = check_TJ(_course, _user) |
||||||
|
|
||||||
|
if _tj: |
||||||
|
for _cj in CourseThemeJ.objects.filter(parent=_tj): |
||||||
|
check_this(_cj, _t) |
||||||
|
|
||||||
|
for _lj in LessonJ.objects.filter(parent__parent=_tj): |
||||||
|
check_this(_lj, _l) |
||||||
|
|
||||||
|
for _hj in HomeworkJ.objects.filter(parent__parent=_tj): |
||||||
|
check_this(_hj, _h) |
||||||
|
|
||||||
|
for _ej in ExamJ.objects.filter(parent__parent=_tj): |
||||||
|
check_this(_ej, _e) |
||||||
|
|
||||||
|
_ft = datetime.datetime.now() |
||||||
|
_about_time.append((_ft - _st).microseconds) |
||||||
|
_average = (((_all - _n) * (sum(_about_time) / len(_about_time)))/1000000)/60 |
||||||
|
show_progress(_all, _n, post=' // "Удаление дуближей журналов" // Расчетное оставщееся время Этапа: {0:6.4} мин '.format(_average)) |
||||||
|
_n += 1 |
||||||
|
|
||||||
|
finish = datetime.datetime.now() |
||||||
|
print('\nTIME: %s seconds' % (finish - start).seconds) |
||||||
@ -0,0 +1,199 @@ |
|||||||
|
# coding=utf-8 |
||||||
|
import os |
||||||
|
import django |
||||||
|
import sys |
||||||
|
import datetime |
||||||
|
|
||||||
|
sys.path.append("/var/www/skillbox") |
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings") |
||||||
|
django.setup() |
||||||
|
|
||||||
|
from journals.models import CourseMap, LessonJ, TeacherJ, HomeworkTry |
||||||
|
from lms.tools import show_progress |
||||||
|
|
||||||
|
_NEED_OPEN = LessonJ.objects.get(material__id='1154', student__email='parabellum07@gmail.com') |
||||||
|
|
||||||
|
_TEACHERJ_FILTER = {'progress__gte': 0} |
||||||
|
_TEACHERJ_EXCLUDE = {'teacher': None} |
||||||
|
|
||||||
|
_READL_FILTER = {'f_date': None} |
||||||
|
_READL_EXCLUDE = {'date': None} |
||||||
|
|
||||||
|
_SUCCESSL_FILTER = {'success': True} |
||||||
|
_SUCCESSL_EXCLUDE = {'date': None} |
||||||
|
|
||||||
|
|
||||||
|
def get_all_journals(course_id): |
||||||
|
return TeacherJ.objects.filter(**_TEACHERJ_FILTER, course__id=course__id).exclude(**_TEACHERJ_EXCLUDE).order_by('id') |
||||||
|
|
||||||
|
|
||||||
|
def get_all_journals_count(): |
||||||
|
return TeacherJ.objects.filter(**_TEACHERJ_FILTER).exclude(**_TEACHERJ_EXCLUDE).count() |
||||||
|
|
||||||
|
|
||||||
|
def get_last_lessons(__journal): |
||||||
|
# Получить последний читаемый уроки и выполненный |
||||||
|
_READL_FILTER['student'] = __journal.student |
||||||
|
_READL_FILTER['material__course'] = __journal.course |
||||||
|
_SUCCESSL_FILTER['student'] = __journal.student |
||||||
|
_SUCCESSL_FILTER['material__course'] = __journal.course |
||||||
|
return (LessonJ.objects.filter(**_READL_FILTER).exclude(**_READL_EXCLUDE).order_by('id').last(), |
||||||
|
LessonJ.objects.filter(**_SUCCESSL_FILTER).exclude(**_SUCCESSL_EXCLUDE).order_by('id').last()) |
||||||
|
|
||||||
|
|
||||||
|
def open_lesson_befor_this(_lessonJ): |
||||||
|
# Погружается объект последнего журнала урока |
||||||
|
# Получаем все уроки этого журнала |
||||||
|
_map = CourseMap.objects.get(lesson=_lessonJ.material) |
||||||
|
for i in CourseMap.objects.filter(course=_map.course).exclude(lesson=None): |
||||||
|
if i.sort < _map.sort: |
||||||
|
try: |
||||||
|
_j = LessonJ.objects.get( |
||||||
|
material__token=i.token, |
||||||
|
student=_lessonJ.student, |
||||||
|
material__course=i.course |
||||||
|
) |
||||||
|
except LessonJ.DoesNotExist as e: |
||||||
|
print(e) |
||||||
|
else: |
||||||
|
check_to_success(_j) |
||||||
|
|
||||||
|
|
||||||
|
def check_to_access(_journal): |
||||||
|
# Проверка материала на доступ в прохождению |
||||||
|
_journal.open_material() |
||||||
|
|
||||||
|
|
||||||
|
def check_to_success(_journal): |
||||||
|
# Проверка материала на завершенность |
||||||
|
_journal.saw_this() |
||||||
|
|
||||||
|
|
||||||
|
def check_lesson_after_hw(__journal, _target): |
||||||
|
# Проверить - доступны ли уроки до ДЗ со статусом success |
||||||
|
# Проверить - доступны ли видео до ДЗ не блокированного или пройденного |
||||||
|
_last = HomeworkTry.objects.filter( |
||||||
|
student=__journal.student, |
||||||
|
material__course=__journal.course |
||||||
|
).order_by('id').last() |
||||||
|
# Если стутс - success |
||||||
|
_candidate = None |
||||||
|
if _last: |
||||||
|
try: |
||||||
|
_candidate = CourseMap.objects.get( |
||||||
|
sort=int(CourseMap.objects.get(token=_last.material.token).sort)+1, |
||||||
|
course=__journal.course |
||||||
|
) |
||||||
|
except CourseMap.DoesNotExist: |
||||||
|
print('Ошибка получения карты журнала') |
||||||
|
|
||||||
|
else: |
||||||
|
# Проверить - доступен ли журнал для чтения |
||||||
|
if _candidate.lesson: |
||||||
|
__candidate = LessonJ.objects.get( |
||||||
|
material__token=_candidate.token, |
||||||
|
student=_target.student, |
||||||
|
material__course=__journal.course |
||||||
|
) |
||||||
|
check_to_access(__candidate) |
||||||
|
|
||||||
|
if _candidate and _candidate.lesson and \ |
||||||
|
int(CourseMap.objects.get( |
||||||
|
token=_target.material.token, |
||||||
|
course=__journal.course).sort) \ |
||||||
|
< int(_candidate.sort): |
||||||
|
|
||||||
|
_target = LessonJ.objects.get( |
||||||
|
material__token=_candidate.token, |
||||||
|
student=_target.student, |
||||||
|
material__course=__journal.course) |
||||||
|
print('Цель изменена: %s' % _target.material.title) |
||||||
|
|
||||||
|
return _target |
||||||
|
|
||||||
|
|
||||||
|
def main(course_id): |
||||||
|
start = datetime.datetime.now() |
||||||
|
_ERRORS = set() |
||||||
|
_WARNING = set() |
||||||
|
#for i in open('error.log'): |
||||||
|
# _ERRORS.add(i.strip()) |
||||||
|
_GOOD = 0 |
||||||
|
_now = 0 |
||||||
|
big = [] |
||||||
|
if _NEED_OPEN: |
||||||
|
open_lesson_befor_this(_NEED_OPEN) |
||||||
|
|
||||||
|
else: |
||||||
|
if not _ERRORS: |
||||||
|
_journals = get_all_journals(course_id) |
||||||
|
_jcount = get_all_journals_count() |
||||||
|
print('Количество журналов на проверку: %s' % _jcount) |
||||||
|
else: |
||||||
|
_journals = list([i for i in TeacherJ.objects.filter(student__email__in=_ERRORS)]) |
||||||
|
_jcount = len(_journals) |
||||||
|
print('Журналы с ошибками: %s' % _jcount) |
||||||
|
|
||||||
|
for __journal in _journals: |
||||||
|
_start = datetime.datetime.now() |
||||||
|
show_progress(_jcount, _now) |
||||||
|
print('\nЖурнал: %s' % __journal.student.email) |
||||||
|
try: |
||||||
|
read, success = get_last_lessons(__journal) |
||||||
|
|
||||||
|
except Exception as e: |
||||||
|
print('!!! Ошибка обработки') |
||||||
|
print(e) |
||||||
|
if __journal.course.id == 20: |
||||||
|
_WARNING.add(__journal.student.email) |
||||||
|
_ERROR_MAILS = open('error.log', 'a+') |
||||||
|
_ERROR_MAILS.write('%s\n' % __journal.student.email) |
||||||
|
_ERROR_MAILS.close() |
||||||
|
|
||||||
|
else: |
||||||
|
print('%s // %s' % (read.material.title if read else ' - ', success.material.title if success else ' - ')) |
||||||
|
|
||||||
|
if not success and read: |
||||||
|
_target = read |
||||||
|
|
||||||
|
elif read and (int(CourseMap.objects.get(lesson=read.material).sort) > int(CourseMap.objects.get(lesson=success.material).sort)): |
||||||
|
_target = read |
||||||
|
|
||||||
|
elif success: |
||||||
|
_target = success |
||||||
|
|
||||||
|
else: |
||||||
|
_target = None |
||||||
|
|
||||||
|
if _target: |
||||||
|
open_lesson_befor_this(check_lesson_after_hw(__journal, _target)) |
||||||
|
|
||||||
|
_GOOD += 1 |
||||||
|
|
||||||
|
_now += 1 |
||||||
|
_finish = datetime.datetime.now() |
||||||
|
_time_result = (_finish - _start).seconds |
||||||
|
print('\nTIME: %s seconds' % _time_result) |
||||||
|
if int(_time_result) > 1: |
||||||
|
big.append(__journal.student.email) |
||||||
|
print('Добавлено на проверку') |
||||||
|
|
||||||
|
print('===========\n') |
||||||
|
|
||||||
|
finish = datetime.datetime.now() |
||||||
|
print('\nTIME: %s seconds' % (finish - start).seconds) |
||||||
|
print('Нужно обратить внимание:') |
||||||
|
for i in _WARNING: |
||||||
|
print(i) |
||||||
|
#print('Самые длительные записи:') |
||||||
|
#print(big) |
||||||
|
if _ERRORS: |
||||||
|
if _GOOD == _now: |
||||||
|
print('Все ошибки исправлены') |
||||||
|
else: |
||||||
|
print('Количество ошибок: %s' % int(_now - _GOOD)) |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__': |
||||||
|
course_id = sys.argv[1] |
||||||
|
main(course_id) |
||||||
@ -0,0 +1,127 @@ |
|||||||
|
Жиров Олег, niozuki@mail.ru, 5016 |
||||||
|
Лавриненко Светлана, svelavs@gmail.com, 4648 |
||||||
|
Санжар Суршанов, sanzharsurshanov@gmail.com, 4749 |
||||||
|
Моторина Екатерина, katepainter@yandex.ru, 4424 |
||||||
|
Белонович Гаянэ, gb.gayane@gmail.com, 4747 |
||||||
|
Злобин Иван, baho9208@mail.ru, 4569 |
||||||
|
Киселев Сергей, kiselev_s_l@mail.ru, 5307 |
||||||
|
Мокичев Дмитрий, dmokichev@gmail.com, 5941 |
||||||
|
Якухина Кира, kira.yakuhina@gmail.com, 4917 |
||||||
|
Кулаев Виктор, geiz@yandex.ru, 4795 |
||||||
|
Зайидова Aнна, annazayidova@gmail.com, 5039 |
||||||
|
Демосюк Екатерина, ekde@wide-web.spb.ru, 5593 |
||||||
|
Анастасова Светлана, zvetaan@gmail.com, 4751 |
||||||
|
Киосов Георгий, goha@kiosov.com, 5240 |
||||||
|
Мирзаева Кира, jalalovna@yandex.ru, 5687 |
||||||
|
Донцов Александр, alex.dntv@gmail.com, 4659 |
||||||
|
Попов Александр, ap@ds-p.ru, 5362 |
||||||
|
Жоламанов Айдар, pobiz@inbox.ru, 4632 |
||||||
|
Ковальская Станислава, skovalska@mail.ru, 5597 |
||||||
|
Исаев Дмитрий, wrusha@yandex.ru, 4634 |
||||||
|
Павлов Иван, pavlov@complexsys.ru, 5069 |
||||||
|
Жарков Александр, alexzarkov@gmail.com, 5657 |
||||||
|
Тихонов Александр, 9330733@mail.ru, 4865 |
||||||
|
Залисский Артем, artemzig@gmail.com, 6030 |
||||||
|
Тмур Антон, anton.tmur@gmail.com, 5877 |
||||||
|
Масленников Михаил, mmaslennikov@mail.ru, 5510 |
||||||
|
Пешинский Евгений, jack@creo.od.ua, 5930 |
||||||
|
Тухачевский Дмитрий, tuhachevski@gmail.com, 5911 |
||||||
|
Копачинский Константин, fazeful@gmail.com, 6115 |
||||||
|
Рыжков Антон, tonyavec@gmail.com, 6029 |
||||||
|
Сипатов Андрей, madjaw@mail.ru, 296 |
||||||
|
Литвин Максим, corpas@gmail.com, 4730 |
||||||
|
Шульга Игорь, ishulga86@gmail.com, 5600 |
||||||
|
Макаров Алексей, avmakarov@asuproject.ru, 6122 |
||||||
|
Фадеева Елена, alpha5@yandex.ru, 5926 |
||||||
|
Палий Нина, slavinanm@gmail.com, 6117 |
||||||
|
Портнова Оксана, portnova.ok@yandex.ru, 5947 |
||||||
|
Копылова Христиана, blood4085@inbox.ru, 6037 |
||||||
|
Галин Олег, ogalin@aevrika.ru, 5932 |
||||||
|
Богданова Евгения, egysakova@gmail.com, 5945 |
||||||
|
Дёмушкин Виктор, dinozavrix@gmail.com, 5610 |
||||||
|
Бодров Илья, feyorz@gmail.com, 4652 |
||||||
|
Махаева Василиса, kornblumchen@yandex.ru, 5756 |
||||||
|
Трунова Ольга , trunovaon@gmail.com, 5759 |
||||||
|
Аплемах Антон, a@cdnvideo.ru, 6034 |
||||||
|
Павлов Алексей, kronos2k4@gmail.com, 4514 |
||||||
|
Манасян Георгий, gsm_elst@rambler.ru, 5939 |
||||||
|
Umnikov Aleksandr Сергеевич, strife88@mail.ru, 5919 |
||||||
|
Самородова Анастасия, polgolovy@gmail.com, 4736 |
||||||
|
Лемтюгова Катерина, lemma.ka@gmail.com, 4900 |
||||||
|
Свинин Александр Александрович, alexandersvinin@gmail.com, 4541 |
||||||
|
Поздняков Александр Сергеевич, alexpozdnyakof@gmail.com, 5459 |
||||||
|
Климов Василий, vklimovs@mail.ru, 6047 |
||||||
|
Воротникова Алена, alvo_05@mail.ru, 4742 |
||||||
|
Аникьев Ян, yanchus@mail.ru, 6041 |
||||||
|
Энч Андрей, captainanch@ya.ru, 5936 |
||||||
|
Вусс Ольга, lesiawuss@gmail.com, 6619 |
||||||
|
Крюков Денис, denis.kryukov@cyberiada.com, 5976 |
||||||
|
Пастухова Екатерина, k-pastukhova@yandex.ru, 6832 |
||||||
|
Кубасова Екатерина, cat.kubasova@yandex.ru, 6136 |
||||||
|
Сутырина Евгения, jeneva7@gmail.com, 6965 |
||||||
|
Вычик Павел, pavelvch@gmail.com, 7033 |
||||||
|
Семашко Эдуард, info@darneo.ru, 5584 |
||||||
|
Брюханов Денис, denisbryuhanov@gmail.com, 6962 |
||||||
|
Плахов Павел, pplahov@gmail.com, 6775 |
||||||
|
Подгорный Евгений, sonicmails@yandex.ru, 6977 |
||||||
|
Пионтковская Наталья, pnz_08@mail.ru, 5977 |
||||||
|
Ганина Ольга, onimfa@mail.ru, 6867 |
||||||
|
Коробицин Иван, korobajr@ya.ru, 5504 |
||||||
|
Денисов Владимир, dv@ilab.kz, 6208 |
||||||
|
Pavlovska Anastasiia, 702752@gmail.com, 5363 |
||||||
|
Карпов Александр Юрьевич, ikarp84@gmail.com, 6646 |
||||||
|
Афанасьев Ярослав, ya@rl.ru, 6633 |
||||||
|
Скробот Алексей, alekseyskrobot@gmail.com, 6942 |
||||||
|
K Sergey, 1ngeneer@mail.ru, 6032 |
||||||
|
Мельбурн Саша, sasha.melbourne@gmail.com, 5540 |
||||||
|
Гулин Евгений, gulin@labizum.ru, 4759 |
||||||
|
Литвин Артем, artemich92@mail.ru, 6779 |
||||||
|
Киреичев Игорь, wm5soft@gmail.com, 6061 |
||||||
|
Степанов Александр, alexsteptlt@mail.ru, 6616 |
||||||
|
Кропанев Женя, kropev@rarus.ru, 4757 |
||||||
|
Курылев Константин, cooryliof@gmail.com, 6241 |
||||||
|
Казарова Елена, strekozka_l@mail.ru, 8207 |
||||||
|
Епифанов Павел, pae1@europlan.ru, 6471 |
||||||
|
Долженков Роман, tooob52@gmail.com, 6976 |
||||||
|
Антоневич Алексей, atree2010@gmail.com, 7169 |
||||||
|
Burchilina Maria, merabella00@yandex.ru, 7770 |
||||||
|
Агарзаева Марина, agarzaeva@yandex.ru, 6939 |
||||||
|
Сидоренко Илья , ilya@iskros.com, 7564 |
||||||
|
Китов Владислав, vlkitov@gmail.com, 6038 |
||||||
|
Репкин Антон, tingmann@gmail.com, 5943 |
||||||
|
Протасевич Андрей, torus.andrey@gmail.com, 6062 |
||||||
|
Велькин Андрей, wellkin@gmail.com, 5974 |
||||||
|
Савченко Игорь, neo-quake@yandex.ru, 6752 |
||||||
|
Ромаметьева Евгения, zhenyusya14@gmail.com, 6063 |
||||||
|
Щербакова Ольга, olga@adt.ru, 7769 |
||||||
|
Пашкевич Алексей , aplusp@yandex.ru, 6328 |
||||||
|
Бурунин Игорь, burunin@gmail.com, 7974 |
||||||
|
Боев Максим, skp_15@mail.ru, 6966 |
||||||
|
Сухоставская Алла, alla.sukhostavskaya@gmail.com, 6739 |
||||||
|
Шашкова Ольга, shashnia@gmail.com, 7007 |
||||||
|
Малахова Екатерина, kononenko.e.p@gmail.com, 6312 |
||||||
|
Саросек Михаил, sarosekml@yandex.ru, 7026 |
||||||
|
Царенко Илья, itsarenko@gmail.com, 6724 |
||||||
|
Соловьева Анна, miragann@gmail.com, 7656 |
||||||
|
Дементьев Сергей, ldvmake@gmail.com, 8219 |
||||||
|
Борисова Ирина, i.k.borisova@gmail.com, 8362 |
||||||
|
Макеев Сергей , makini@ya.ru, 8313 |
||||||
|
Гук Антон, anton.m.gook@gmail.com, 8031 |
||||||
|
Колмогоров Дмитрий, kitt.diz@gmail.com, 7217 |
||||||
|
Фомина Елена, efomina@msk.vtb.ru, 6120 |
||||||
|
Назарова Евгения, nazarova-evg@yandex.ru, 7666 |
||||||
|
Сергиенко Ольга Александровна , jayalila108@mail.ru, 7275 |
||||||
|
Зарипов Алмаз, almazzar@gmail.com, 9381 |
||||||
|
Ахкямова Эльвира, juniperland@gmail.com, 4929 |
||||||
|
Рубцова Ирина, beruchie@yandex.ru, 6968 |
||||||
|
Багаммаева Мадина, galadriel2007@mail.ru, 6951 |
||||||
|
Четвериков Юрий, yuriy.chetverikov@gmail.com, 7168 |
||||||
|
Маклакова Мария, tuna1706@yandex.ru, 6580 |
||||||
|
Монаков Евгений, fridays365@gmail.com, 8637 |
||||||
|
Прохоров Алексей, alex@space-o.ru, 6436 |
||||||
|
Зайцев Никита, nickzaytzev@gmail.com, 6635 |
||||||
|
Кожевников Андрей, helloandrei@mail.ru, 9536 |
||||||
|
Лисивец Юрий Станиславович, lisivets@ya.ru, 7318 |
||||||
|
Келемзина Софья, sofiakelemzina@gmail.com, 6204 |
||||||
|
Зорина Алина, alinazoryna@gmail.com, 5973 |
||||||
|
Кунакулов Ахнаф, axnaf@list.ru, 7733 |
||||||
Loading…
Reference in new issue