Merge branch 'feature-statystics' into 'develop'

Feature statystics

See merge request !51
remotes/origin/pm_task_31703
Zolotarev Alexander 8 years ago
commit c6a61fb0b0
  1. 1
      .gitignore
  2. 9
      analytics/urls.py
  3. 240
      analytics/views.py
  4. 37
      media/analitycs/theme/seprogress.csv
  5. 38
      media/analytics/homework/s2017-08-03e2017-08-17progress.csv
  6. 38
      media/analytics/homework/seprogress.csv
  7. 37
      media/analytics/theme/s2017-08-09e2017-08-16progress.csv
  8. 37
      media/analytics/theme/s2017-08-09e2017-08-24progress.csv
  9. 37
      media/analytics/theme/seprogress.csv
  10. 41
      templates/analytics/base.html
  11. 2
      templates/analytics/homework.html
  12. 12
      templates/analytics/index.html
  13. 9
      templates/analytics/theme.html

1
.gitignore vendored

@ -19,3 +19,4 @@ build
*.pyc
__pycache__
/static/

@ -1,7 +1,10 @@
from django.conf.urls import url
from .views import index_view, new_view
from analytics import views
urlpatterns = [
url(r'^$', index_view),
url(r'^new/$', new_view),
url(r'^$', views.index_view),
url(r'^theme/$', views.index_view_access_theme),
url(r'^theme/new/$', views.new_view_access_theme),
url(r'^homework/$', views.index_view_homework_wait),
url(r'^homework/new/$', views.new_view_homework_wait),
]

@ -1,104 +1,150 @@
from django.shortcuts import render_to_response, redirect
from django.shortcuts import render_to_response, redirect, render
import time, os, csv
from datetime import date
from django.http import HttpResponseForbidden
from lms.settings import MEDIA_ROOT
from django.contrib.auth import get_user_model
from courses.models import Course, CourseTheme
from journals.models import CourseThemeJ
def index_view(request):
if not request.user.is_authenticated():
return HttpResponseForbidden()
if not (
request.user.in_role == "M" or request.user.in_role == "S" or request.user.in_role == "A" or request.user.is_admin):
return HttpResponseForbidden()
start = request.GET.get('start', '')
end = request.GET.get('end', '')
path = MEDIA_ROOT + '/analytics/s' + start + 'e' + end + 'progress.csv'
try:
with open(path, newline='') as file:
reader = csv.reader(file, delimiter=',', quotechar='|')
max = 0
res = []
for row in reader:
max = max if max > len(row) else len(row)
res1 = []
for i in row:
k = i.split("$-$")
k = {'value': k[0], 'background': 'none'} if len(i.split("$-$")) == 1 else {'value': k[0],
'background': k[1]}
res1.append(k)
res.append(res1)
for i in res:
for j in range(max - len(i)):
i.append({'value': 0, 'background': 'none'})
first = ['Курсы']
for i in range(max - 1):
first.append("Тема " + str(i + 1))
except FileNotFoundError:
return redirect("/analytics/new/?start=" + start + "&end=" + end)
date_create = time.ctime(os.stat(path).st_atime)
return render_to_response('analytics.html',
{'body': res, 'header': first, 'date_create': date_create, 'start': start, 'end': end})
def new_view(request):
if not request.user.is_authenticated():
return HttpResponseForbidden()
if not (
request.user.in_role == "M" or request.user.in_role == "S" or request.user.in_role == "A" or request.user.is_admin):
return HttpResponseForbidden()
start = request.GET.get('start', '')
end = request.GET.get('end', '')
path = MEDIA_ROOT + '/analytics/s' + start + 'e' + end + 'progress.csv'
start_date = None
end_date = None
try:
start_date = date(*[int(i) for i in start.split('-')])
end_date = date(*[int(i) for i in end.split('-')])
except ValueError:
pass
if not check_date_validate(start_date, end_date):
return redirect("/analytics/")
try:
with open(path, 'w', newline='') as csvfile:
for course in Course.objects.order_by('sort'):
list = [course.title]
for i in CourseTheme.objects.filter(course=course):
kwargs = {
'material': i,
'success': True,
}
if end_date:
kwargs['student__last_time__lte'] = end_date
if start_date:
kwargs['student__last_time__gte'] = start_date
list.append(str(len(CourseThemeJ.objects.filter(**kwargs))) + (
"$-$yellow" if i._type == 'Ex' or i._type == 'M' else ""))
writercsv = csv.writer(csvfile, delimiter=',', quotechar='|')
writercsv.writerow(list)
except FileNotFoundError:
os.mkdir(MEDIA_ROOT + '/analytics')
redirect("/analytics/new/?start=" + start + "&end=" + end)
return redirect("/analytics/?start=" + start + "&end=" + end)
from courses.models import Course, CourseTheme, Homework, Exam
from journals.models import CourseThemeJ, HomeworkTry, ExamTry
index_view = lambda request: render_to_response('analytics/index.html')
def index_view_decor(url):
def wrap(func):
def get_request(request):
start = request.GET.get('start', '')
end = request.GET.get('end', '')
path = MEDIA_ROOT + url + 's' + start + 'e' + end + 'progress.csv'
try:
with open(path, newline='') as file:
reader = csv.reader(file, delimiter=',', quotechar='|')
max = 0
res = []
for row in reader:
max = max if max > len(row) else len(row)
res1 = []
for i in row:
k = i.split("$-$")
k = {'value': k[0], 'background': 'none'}\
if len(i.split("$-$")) == 1 else {'value': k[0],'background': k[1]}
res1.append(k)
res.append(res1)
for i in res:
for j in range(max - len(i)):
i.append({'value': 0, 'background': 'none'})
first = ['Курсы']
for i in range(max - 1):
first.append("Тема " + str(i + 1))
except FileNotFoundError:
return redirect(url + "new/?start=" + start + "&end=" + end)
date_create = time.ctime(os.stat(path).st_atime)
context = {
'body': res,
'header': first,
'date_create': date_create,
'start': start,
'end': end,
'url': url,
}
context.update(func())
return render(request, url[1:-1] + '.html', context=context)
return get_request
return wrap
@index_view_decor("/analytics/theme/")
def index_view_access_theme():
return {}
@index_view_decor("/analytics/homework/")
def index_view_homework_wait():
return {}
def new_view_decor(url):
def wrap(func):
def get_request(request):
start = request.GET.get('start', '')
end = request.GET.get('end', '')
path = MEDIA_ROOT + url + 's' + start + 'e' + end + 'progress.csv'
start_date = None
end_date = None
try:
start_date = date(*[int(i) for i in start.split('-')])
end_date = date(*[int(i) for i in end.split('-')])
except ValueError:
pass
if not check_date_validate(start_date, end_date):
return redirect(url)
try:
with open(path, 'w', newline='') as csvfile:
func(end_date, start_date, csvfile)
return redirect(url + "?start=" + start + "&end=" + end)
except FileNotFoundError:
os.makedirs(MEDIA_ROOT + url)
return redirect(url + "new/?start=" + start + "&end=" + end)
return get_request
return wrap
@new_view_decor("/analytics/theme/")
def new_view_access_theme(end_date, start_date, csvfile):
for course in Course.objects.order_by('sort'):
list = [course.title]
for i in CourseTheme.objects.filter(course=course):
kwargs = {
'material': i,
'success': True,
}
if end_date:
kwargs['student__last_time__lte'] = end_date
if start_date:
kwargs['student__last_time__gte'] = start_date
list.append(str(len(CourseThemeJ.objects.filter(**kwargs))) + (
"$-$yellow" if i._type == 'Ex' else ""))
writercsv = csv.writer(csvfile, delimiter=',', quotechar='|')
writercsv.writerow(list)
@new_view_decor("/analytics/homework/")
def new_view_homework_wait(end_date, start_date, csvfile):
for course in Course.objects.order_by('sort'):
list = [course.title]
for i in CourseTheme.objects.filter(course=course):
kwargs = {
'success': False,
'expired': False,
'f_date': None
}
if end_date:
kwargs['student__last_time__lte'] = end_date
if start_date:
kwargs['student__last_time__gte'] = start_date
list.append(str(
len(HomeworkTry.objects.filter(material=Homework.objects.filter(theme=i), **kwargs)) +
len(ExamTry.objects.filter(material=Exam.objects.filter(theme=i), **kwargs))
))
writercsv = csv.writer(csvfile, delimiter=',', quotechar='|')
writercsv.writerow(list)
def check_date_validate(start=None, end=None):

@ -0,0 +1,37 @@
Профессия — интернет-маркетолог,176,75,34,30,21,13,12,11,12,11,11,11,11,11,11,11,11
test,0
Как открыть веб-студию,67,42,38,36,29,29,26,23,19,18,17,14,13,11,9
Дипломный проект «MOS.RU»,9,2,2$-$yellow
Дипломный проект «НТВ ПЛЮС»,11,3
Акварельная живопись,13,10,9,4,3,1,1,1,1,1
Веб-Дизайн PRO,144,102,83,66,61,52,43,37,34,28,25,23,22,19,19,18,7$-$yellow
Скетчинг для дизайнера,77,56,43,24,21,19,12,10,9,8,5,4,4,4,3,4
Дипломный проект «Фестиваль молодежи»,16,5
Android-разработчик,25,15,11,4,4,4,2,2,2,2,2,2,1,2,2,3,1$-$yellow
Дипломный проект «Промсвязьбанк»,2,1
ux design,953,820,676,556,428,338,211,140,90,66,66,64,64,66,49,50,47,34$-$yellow,13$-$yellow
Дипломный проект «Газпромбанк»,15,4,0$-$yellow
Дипломный проект «ПОЧТА БАНК»,14,8
Excel продвинутый,10,10,9,9,7,4,5,4,4$-$yellow
Дипломный проект «СМП БАНК»,10,5
ux design special AIC,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Профессия интернет-маркетолог от А до Я,56,41,35,35,31,30,30,31,37,29,33
Blockchain,38,13,1,0,0
JavaScript,57,47,44,42,40,36,32,29,25,25,24,24,21,18,15,14,4$-$yellow,7$-$yellow
Разработчик 1С-Битрикс,10,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0$-$yellow
Веб-Дизайн для начинающих,201,74,348,44,289,218,187,165,141,109,99,85,74,43,12,12,36
Управление проектами,245,107,143,86,79,65,48,37,28,25,16,5,5,5,5
Веб-разработчик,813,727,661,613,598,503,441,369,327,290,247,217,205,189,164,63,84$-$yellow,56$-$yellow,15,34
Дипломный проект «Yota»,16,7,2$-$yellow
ux аналитик,108,84,61,43,36,30,6,24,21,19,19,14,13,11,7,6,6,6
Дипломный проект «Kaspi.kz»,20,11,2$-$yellow
Видеоблогинг,144,42,7,4,3,3,3
UI анимация,158,125,88,60,42,31,16,12,10,7,7,7,7,6,6,7,6,6,6,6
Key Visual,20,18,15,13,10,8,8,9
Профессия PR-менеджер,73,32,26,17,13,2$-$yellow
Дипломный проект «Ticketland»,12,6
Дипломный проект «Mos.ru-2»,5,4
iOS Разработчик,30,32,28,28,23,21,17,16,12,7,8,7,7,5,5,3,3$-$yellow
Java разработчик,426,300,224,172,134,111,103,69,48,31,24,19,16,15,13,12,12$-$yellow
Excel базовый,32,25,23,24,21,20,20,18,14$-$yellow
C# разработчик,62,47,42,37,34,29,27,25,24,22,18,13,13,13,11,5,8$-$yellow
unable to load file from base commit

@ -0,0 +1,38 @@
ntcn1,0$-$yellow,0
test,0
Как открыть веб-студию,0,3,0,0,0,0,0,0,2,0,0,0,0,0,0
Дипломный проект «MOS.RU»,0,0,0$-$yellow
Дипломный проект «НТВ ПЛЮС»,1,2
Акварельная живопись,7,2,4,1,1,0,0,0,0,0
Веб-Дизайн PRO,21,16,8,2,2,6,10,2,1,4,0,0,1,0,1,3,2$-$yellow
Скетчинг для дизайнера,1,0,3,0,0,1,0,0,0,0,0,0,0,0,0,0
Дипломный проект «Фестиваль молодежи»,1,3
Android-разработчик,0,2,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0$-$yellow
Дипломный проект «Промсвязьбанк»,9,0
ux design,16,64,25,14,25,31,111,31,13,0,0,0,0,8,0,0,0,0$-$yellow,0$-$yellow
Дипломный проект «Газпромбанк»,4,2,0$-$yellow
Дипломный проект «ПОЧТА БАНК»,3,2
Excel продвинутый,0,0,0,0,0,0,0,0,0$-$yellow
Дипломный проект «СМП БАНК»,2,0
ux design special AIC,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Blockchain,6,0,0,0,0
JavaScript,13,11,13,9,12,8,8,11,10,10,8,6,7,8,7,3,0$-$yellow,8$-$yellow
Профессия — интернет-маркетолог,17,25,13,0,4,0,0,0,0,0,0,0,0,0,0,0,0
Разработчик 1С-Битрикс,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0$-$yellow
Веб-Дизайн для начинающих,0,0,17,0,36,18,12,13,24,7,4,7,6,19,0,0,15
Управление проектами,3,11,9,14,0,2,0,0,0,0,0,0,0,0,0
Веб-разработчик,18,45,46,34,13,71,7,20,14,39,61,21,34,32,32,0,0$-$yellow,50$-$yellow,0,0
Дипломный проект «Yota»,0,0,0$-$yellow
ux аналитик,0,1,5,5,2,1,0,2,1,1,2,1,3,1,0,1,0,0
Дипломный проект «Kaspi.kz»,0,0,0$-$yellow
Видеоблогинг,4,3,2,0,0,0,0
UI анимация,13,3,3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Key Visual,5,0,0,0,0,0,0,0
Профессия PR-менеджер,7,6,0,2,1,0$-$yellow
Дипломный проект «Ticketland»,2,0
Дипломный проект «Mos.ru-2»,2,0
Профессия интернет-маркетолог от А до Я,0,6,0,0,0,0,0,0,0,0,0
iOS Разработчик,0,0,0,0,0,3,1,0,0,0,0,0,0,0,0,0,0$-$yellow
Java разработчик,59,77,134,80,66,53,45,129,76,20,45,44,1,2,2,0,3$-$yellow
Excel базовый,2,0,0,0,0,0,0,0,0$-$yellow
C# разработчик,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0$-$yellow
unable to load file from base commit

@ -0,0 +1,38 @@
ntcn1,0,0
test,0
Как открыть веб-студию,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
Дипломный проект «MOS.RU»,0,0,0
Дипломный проект «НТВ ПЛЮС»,0,0
Акварельная живопись,0,0,0,0,0,1,0,0,0,0
Веб-Дизайн PRO,2,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0
Скетчинг для дизайнера,0,0,0,0,0,2,0,0,0,0,1,0,0,0,0,0
Дипломный проект «Фестиваль молодежи»,0,0
Android-разработчик,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Дипломный проект «Промсвязьбанк»,1,0
ux design,5,4,8,1,4,5,4,1,1,0,0,0,0,0,0,0,0,0,0
Дипломный проект «Газпромбанк»,0,0,0
Дипломный проект «ПОЧТА БАНК»,0,0
Excel продвинутый,0,0,0,0,0,0,0,0,0
Дипломный проект «СМП БАНК»,0,0
ux design special AIC,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Blockchain,1,0,0,0,0
JavaScript,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2
Профессия — интернет-маркетолог,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0
Разработчик 1С-Битрикс,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Веб-Дизайн для начинающих,0,0,7,0,5,1,1,2,1,0,2,0,0,1,0,0,4
Управление проектами,7,0,2,1,0,0,0,1,1,1,3,2,0,0,0
Веб-разработчик,1,3,4,2,0,3,1,0,0,1,2,2,0,0,3,0,0,0,0,0
Дипломный проект «Yota»,0,0,0
ux аналитик,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
Дипломный проект «Kaspi.kz»,0,0,0
Видеоблогинг,0,0,0,0,0,0,0
UI анимация,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Key Visual,0,0,0,0,0,1,0,0
Профессия PR-менеджер,0,2,0,0,0,0
Дипломный проект «Ticketland»,0,0
Дипломный проект «Mos.ru-2»,0,0
Профессия интернет-маркетолог от А до Я,0,0,0,0,0,0,0,0,0,0,0
iOS Разработчик,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0
Java разработчик,1,2,1,1,2,0,0,1,1,1,0,0,0,0,1,0,6
Excel базовый,0,0,0,0,2,0,0,1,2
C# разработчик,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2
unable to load file from base commit

@ -0,0 +1,37 @@
Профессия — интернет-маркетолог,17,8,5,5,3,1,1,1,1,1,1,1,1,1,1,1,1
test,0
Как открыть веб-студию,3,2,1,1,1,2,2,1,1,0,0,0,0,0,0
Дипломный проект «MOS.RU»,0,0,0$-$yellow
Дипломный проект «НТВ ПЛЮС»,0,0
Акварельная живопись,2,2,2,1,1,0,0,0,0,0
Веб-Дизайн PRO,14,13,11,10,10,9,9,9,8,8,6,6,5,4,4,4,1$-$yellow
Скетчинг для дизайнера,8,5,3,2,2,2,0,0,0,0,0,0,0,0,0,0
Дипломный проект «Фестиваль молодежи»,4,2
Android-разработчик,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0$-$yellow
Дипломный проект «Промсвязьбанк»,1,1
ux design,76,69,56,48,41,33,16,14,10,5,4,4,3,9,3,3,3,0$-$yellow,0$-$yellow
Дипломный проект «Газпромбанк»,2,1,0$-$yellow
Дипломный проект «ПОЧТА БАНК»,1,1
Excel продвинутый,0,0,0,0,0,0,0,0,0$-$yellow
Дипломный проект «СМП БАНК»,0,0
ux design special AIC,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Профессия интернет-маркетолог от А до Я,0,0,0,0,0,0,0,1,0,0,0
Blockchain,4,0,0,0,0
JavaScript,4,4,4,4,4,3,3,3,2,2,2,2,2,2,1,1,0$-$yellow,1$-$yellow
Разработчик 1С-Битрикс,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0$-$yellow
Веб-Дизайн для начинающих,15,3,24,1,21,19,17,17,15,11,10,10,9,6,1,1,5
Управление проектами,27,13,20,10,9,7,5,3,2,2,2,2,2,2,2
Веб-разработчик,29,27,25,27,25,23,20,18,15,14,13,11,9,8,7,4,3$-$yellow,4$-$yellow,2,4
Дипломный проект «Yota»,1,1,0$-$yellow
ux аналитик,7,6,6,5,5,5,1,4,3,3,3,3,3,2,2,2,1,1
Дипломный проект «Kaspi.kz»,2,2,1$-$yellow
Видеоблогинг,8,4,0,0,0,0,0
UI анимация,13,9,8,4,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1
Key Visual,3,1,1,0,0,0,0,0
Профессия PR-менеджер,4,3,1,0,1,0$-$yellow
Дипломный проект «Ticketland»,1,1
Дипломный проект «Mos.ru-2»,0,0
iOS Разработчик,2,2,2,2,2,3,2,2,0,0,0,0,0,0,0,0,0$-$yellow
Java разработчик,16,15,11,8,6,6,6,5,4,4,4,3,2,2,2,1,2$-$yellow
Excel базовый,0,0,0,0,0,1,1,0,0$-$yellow
C# разработчик,2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0,0$-$yellow
unable to load file from base commit

@ -0,0 +1,37 @@
Профессия — интернет-маркетолог,128,56,27,24,17,9,8,7,7,7,7,7,7,7,7,7,7
test,0
Как открыть веб-студию,26,13,13,12,10,11,11,8,6,7,6,3,3,2,2
Дипломный проект «MOS.RU»,0,0,0$-$yellow
Дипломный проект «НТВ ПЛЮС»,2,1
Акварельная живопись,6,5,5,3,3,1,1,1,1,1
Веб-Дизайн PRO,68,52,48,40,39,31,26,24,21,19,16,15,14,12,12,12,5$-$yellow
Скетчинг для дизайнера,34,26,23,16,13,11,7,5,5,4,2,1,1,1,0,0
Дипломный проект «Фестиваль молодежи»,8,3
Android-разработчик,8,6,4,2,2,2,1,1,0,0,0,0,0,0,0,0,0$-$yellow
Дипломный проект «Промсвязьбанк»,2,1
ux design,373,318,258,217,169,141,80,58,44,29,29,23,23,35,20,19,19,13$-$yellow,8$-$yellow
Дипломный проект «Газпромбанк»,7,3,0$-$yellow
Дипломный проект «ПОЧТА БАНК»,6,5
Excel продвинутый,4,4,4,4,3,1,1,1,1$-$yellow
Дипломный проект «СМП БАНК»,5,4
ux design special AIC,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Профессия интернет-маркетолог от А до Я,30,26,21,22,19,18,18,20,21,18,21
Blockchain,35,13,1,0,0
JavaScript,24,21,19,19,17,14,13,12,9,9,9,9,7,5,3,3,0$-$yellow,2$-$yellow
Разработчик 1С-Битрикс,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0$-$yellow
Веб-Дизайн для начинающих,87,32,179,24,156,130,113,105,94,75,68,57,47,30,7,5,26
Управление проектами,149,78,112,75,70,60,47,37,28,25,16,5,5,5,5
Веб-разработчик,178,166,154,149,142,120,104,92,83,72,63,53,49,47,40,18,19$-$yellow,16$-$yellow,7,13
Дипломный проект «Yota»,4,4,1$-$yellow
ux аналитик,54,41,33,22,22,21,2,17,15,14,13,10,9,7,4,3,3,3
Дипломный проект «Kaspi.kz»,4,4,2$-$yellow
Видеоблогинг,45,24,3,1,0,0,0
UI анимация,84,62,46,37,28,22,11,8,7,4,4,4,4,3,3,4,3,3,3,3
Key Visual,18,17,14,12,9,7,7,8
Профессия PR-менеджер,28,18,14,12,11,2$-$yellow
Дипломный проект «Ticketland»,8,3
Дипломный проект «Mos.ru-2»,3,3
iOS Разработчик,8,8,6,6,6,7,6,5,2,2,1,0,0,0,0,0,0$-$yellow
Java разработчик,95,83,67,57,49,42,38,28,18,14,12,10,7,6,5,4,5$-$yellow
Excel базовый,4,3,2,2,2,3,3,1,2$-$yellow
C# разработчик,14,12,12,11,10,9,9,8,8,7,4,3,3,3,3,0,1$-$yellow
unable to load file from base commit

@ -0,0 +1,37 @@
Профессия — интернет-маркетолог,176,75,34,30,21,13,12,11,12,11,11,11,11,11,11,11,11
test,0
Как открыть веб-студию,67,42,38,36,29,29,26,23,19,18,17,14,13,11,9
Дипломный проект «MOS.RU»,9,2,2$-$yellow
Дипломный проект «НТВ ПЛЮС»,11,3
Акварельная живопись,13,10,9,4,3,1,1,1,1,1
Веб-Дизайн PRO,144,102,83,66,61,52,43,37,34,28,25,23,22,19,19,18,7$-$yellow
Скетчинг для дизайнера,77,56,43,24,21,19,12,10,9,8,5,4,4,4,3,4
Дипломный проект «Фестиваль молодежи»,16,5
Android-разработчик,25,15,11,4,4,4,2,2,2,2,2,2,1,2,2,3,1$-$yellow
Дипломный проект «Промсвязьбанк»,2,1
ux design,953,820,676,556,428,338,211,140,90,66,66,64,64,66,49,50,47,34$-$yellow,13$-$yellow
Дипломный проект «Газпромбанк»,15,4,0$-$yellow
Дипломный проект «ПОЧТА БАНК»,14,8
Excel продвинутый,10,10,9,9,7,4,5,4,4$-$yellow
Дипломный проект «СМП БАНК»,10,5
ux design special AIC,2,2,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Профессия интернет-маркетолог от А до Я,56,41,35,35,31,30,30,31,37,29,33
Blockchain,38,13,1,0,0
JavaScript,57,47,44,42,40,36,32,29,25,25,24,24,21,18,15,14,4$-$yellow,7$-$yellow
Разработчик 1С-Битрикс,10,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0$-$yellow
Веб-Дизайн для начинающих,201,74,348,44,289,218,187,165,141,109,99,85,74,43,12,12,36
Управление проектами,245,107,143,86,79,65,48,37,28,25,16,5,5,5,5
Веб-разработчик,813,727,661,613,598,503,441,369,327,290,247,217,205,189,164,63,84$-$yellow,56$-$yellow,15,34
Дипломный проект «Yota»,16,7,2$-$yellow
ux аналитик,108,84,61,43,36,30,6,24,21,19,19,14,13,11,7,6,6,6
Дипломный проект «Kaspi.kz»,20,11,2$-$yellow
Видеоблогинг,144,42,7,4,3,3,3
UI анимация,158,125,88,60,42,31,16,12,10,7,7,7,7,6,6,7,6,6,6,6
Key Visual,20,18,15,13,10,8,8,9
Профессия PR-менеджер,73,32,26,17,13,2$-$yellow
Дипломный проект «Ticketland»,12,6
Дипломный проект «Mos.ru-2»,5,4
iOS Разработчик,30,32,28,28,23,21,17,16,12,7,8,7,7,5,5,3,3$-$yellow
Java разработчик,426,300,224,172,134,111,103,69,48,31,24,19,16,15,13,12,12$-$yellow
Excel базовый,32,25,23,24,21,20,20,18,14$-$yellow
C# разработчик,62,47,42,37,34,29,27,25,24,22,18,13,13,13,11,5,8$-$yellow
unable to load file from base commit

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Аналитика</title>
</head>
<body>
<h2>Дата создания отчёта {{ date_create }}</h2>
<button><a href="new?start={{ start }}&end={{ end }}">Сгенирировать отчёт</a></button>
<button style="margin-bottom: 20px"><a href="/media{{ url }}s{{ start }}e{{ end }}progress.csv">Скачать отчёт</a></button>
<button><a href="/analytics">На главную</a></button>
<form action="">
<label>от</label>
<input name="start" type="date" value="{{ start }}">
<label>до</label>
<input name="end" type="date" value="{{ end }}">
<button type="submit">Подготовить отчёт</button>
</form>
<table border="1px">
<tr>
{% for i in header %}
<th>{{ i }}</th>
{% endfor %}
</tr>
{% for i in body %}
<tr>
{% for j in i %}
<td style="background: {{j.background}}">{{ j.value }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<p>
{% block description %}{% endblock %}
</p>
<h2>Внимание! Новый отчёт генерируется 1 раз! Следите за записью в хедоре страницы, если вы нуждаетесь в обновлении <br>
данных жмите кнопку "Сгенерировать отчёт" таким образом вы получите обновлённые данные для заданных пораметров фильтрации</h2>
</body>
</html>

@ -0,0 +1,2 @@
{% extends 'analytics/base.html' %}
{% block description %}{% endblock %}

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Аналитика</title>
</head>
<body>
<h2>Меню поиска</h2>
<h4><a href="theme">Студентов успешно прошедших тему</a></h4>
<h4><a href="homework">Студентов ожидающих проверки домашки</a></h4>
</body>
</html>

@ -0,0 +1,9 @@
{% extends 'analytics/base.html' %}
{% block description %}
В данной таблице представлены данные о том, сколько студентов прошло заданную тему. <br>
Темы не всегда проходятся последовательно, поэтому порой тему с большим порядковым номером прошло большее количество пользовавтелей. <br>
Вы можите выставить фильтр по последней акутивности пользователя, фильтр может быть ограничивающим с одной стороны или может отсутствовать, <br>
в случае ввода невалидных данных ошибки не происходит вас просто перенапровляет на начальную страницу. <br>
Вы можите скачать отчёт в формате csv метка $-$yellow говорит о том что в данной теме есть экзамен,<br>
в таблице темы содержашие экзамен подсвечены жёлтым светом
{% endblock %}
Loading…
Cancel
Save