Merge branch 'develop' into 'master'

Develop

See merge request !53
remotes/origin/pm_task_31703
Zolotarev Alexander 8 years ago
commit 3e4ca8155e
  1. 1
      .gitignore
  2. 16
      access/middleware.py
  3. 10
      analytics/urls.py
  4. 155
      analytics/views.py
  5. 4
      courses/views.py
  6. 3
      lms/settings.py
  7. 1
      lms/urls.py
  8. 37
      media/analitycs/theme/seprogress.csv
  9. 38
      media/analytics/homework/s2017-08-03e2017-08-17progress.csv
  10. 38
      media/analytics/homework/seprogress.csv
  11. 37
      media/analytics/theme/s2017-08-09e2017-08-16progress.csv
  12. 37
      media/analytics/theme/s2017-08-09e2017-08-24progress.csv
  13. 37
      media/analytics/theme/seprogress.csv
  14. 41
      templates/analytics/base.html
  15. 2
      templates/analytics/homework.html
  16. 12
      templates/analytics/index.html
  17. 9
      templates/analytics/theme.html
  18. 7
      templates/index_menu.html

1
.gitignore vendored

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

@ -0,0 +1,16 @@
from django.http import HttpResponseForbidden
class CheckPerm(object):
@staticmethod
def process_request(request):
if '/admin' in request.path or "/management" in request.path \
or '/analytics' in request.path:
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()

@ -0,0 +1,10 @@
from django.conf.urls import url
from analytics import views
urlpatterns = [
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),
]

@ -0,0 +1,155 @@
from django.shortcuts import render_to_response, redirect, render
import time, os, csv
from datetime import date
from lms.settings import MEDIA_ROOT
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):
if start:
if end:
return (start < end) and (end < date.today())
return start < date.today()
return end < date.today() if end else True

@ -47,9 +47,9 @@ def course(request, slug):
_map = CourseMap.objects.filter(course=course).order_by('sort').first()
_j = _map.get_obj()
if _map._type == 'H':
j = HomeworkJ.objects.get(material=_j, student=request.user)
j, _created = HomeworkJ.objects.get_or_create(material=_j, student=request.user)
if _map._type == 'L':
j = LessonJ.objects.get(material=_j, student=request.user)
j, _created = LessonJ.objects.get_or_create(material=_j, student=request.user)
j.open_material()
else:
journal, created = TeacherJ.objects.get_or_create(course=course, student=user_fabric(request.user))

@ -103,6 +103,7 @@ MIDDLEWARE_CLASSES = [
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'access.middleware.CheckPerm',
]
ROOT_URLCONF = 'lms.urls'
@ -180,5 +181,5 @@ REDACTOR_OPTIONS = {'lang': 'ru'}
REDACTOR_UPLOAD = 'uploads/'
RAVEN_CONFIG = {
'dsn': 'http://56855e5263f04dbda3e97fb9c950cb45:02ceda8b67bc45fb800754958bca7883@s.codemy.ru/2'
'dsn': 'http://caaea487274f4e23a9107862484c79f3:3d463ad4717942508536f7a659921950@sentry.skillbox.ru/3'
}

@ -30,6 +30,7 @@ urlpatterns = [
url(r'^forum/', include('management.forum_urls')),
url(r'^service/', include('service.urls')),
url(r'^redactor/', include('redactor.urls')),
url(r'^analytics/', include('analytics.urls')),
#url(r'^jet/', include('jet.urls', 'jet')),
#url(r'^jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')),
url(r'^admin/', include(admin.site.urls)),

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

@ -100,6 +100,13 @@
<span>Отчеты</span>
</a>
</li>
<li style="z-index: 1;">
<a href="/analytics/">
<i class="glyphicon glyphicon-list-alt"></i>
<span>Аналитика</span>
</a>
</li>
{% endif %}
<!--
<div style="text-align: center; width:200px;">

Loading…
Cancel
Save