From e2968fd60f28a97845673fafa4ae460583dfb0ef Mon Sep 17 00:00:00 2001 From: andrey Date: Tue, 29 Aug 2017 12:25:46 +0300 Subject: [PATCH 01/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B0=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/urls.py | 6 +++--- analytics/views.py | 16 ---------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/analytics/urls.py b/analytics/urls.py index de29679..cac8c8c 100644 --- a/analytics/urls.py +++ b/analytics/urls.py @@ -1,7 +1,7 @@ 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'^new/$', views.new_view), ] \ No newline at end of file diff --git a/analytics/views.py b/analytics/views.py index 99ecfbb..fddc766 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -1,23 +1,14 @@ from django.shortcuts import render_to_response, redirect 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', '') @@ -53,13 +44,6 @@ def index_view(request): 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', '') From 5a2ca903c0b99058114439b39caab7bc147b5ca2 Mon Sep 17 00:00:00 2001 From: andrey Date: Tue, 29 Aug 2017 12:40:30 +0300 Subject: [PATCH 02/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B0=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/settings.py b/lms/settings.py index e3ac93e..a73bd79 100644 --- a/lms/settings.py +++ b/lms/settings.py @@ -136,7 +136,7 @@ DATABASES = { 'NAME': os.environ.get('DB_NAME', 'codemy'), 'USER': os.environ.get('PG_ENV_POSTGRES_USER', 'team'), 'PASSWORD': os.environ.get('PG_ENV_POSTGRES_PASSWORD', 'nu5Xefise'), - 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '192.168.0.6'), + 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '127.0.0.1'), 'PORT': os.environ.get('PG_PORT_5432_TCP_PORT', '5432'), }, } From 2eeaeb215d49c653d3cf9dff53a62dcfd07edce3 Mon Sep 17 00:00:00 2001 From: andrey Date: Tue, 29 Aug 2017 12:42:43 +0300 Subject: [PATCH 03/10] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D1=82=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20=D0=BA=D0=BE=D0=B4=D0=B0=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5?= =?UTF-8?q?=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B0=D0=BD=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D1=87=D0=B0=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/analytics.html | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 templates/analytics.html diff --git a/templates/analytics.html b/templates/analytics.html new file mode 100644 index 0000000..6711221 --- /dev/null +++ b/templates/analytics.html @@ -0,0 +1,37 @@ +

Дата создания отчёта {{ date_create }}

+ + +
+ + + + + +
+ + + + {% for i in header %} + + {% endfor %} + + + {% for i in body %} + + {% for j in i %} + + {% endfor %} + + {% endfor %} +
{{ i }}
{{ j.value }}
+

+ В данной таблице представлены данные о том, сколько студентов прошло заданную тему.
+ Темы не всегда проходятся последовательно, поэтому порой тему с большим порядковым номером прошло большее количество пользовавтелей.
+ Вы можите выставить фильтр по последней акутивности пользователя, фильтр может быть ограничивающим с одной стороны или может отсутствовать,
+ в случае ввода невалидных данных ошибки не происходит вас просто перенапровляет на начальную страницу.
+ Вы можите скачать отчёт в формате csv метка $-$yellow говорит о том что в данной теме есть экзамен,
+ в таблице темы содержашие экзамен подсвечены жёлтым светом +

+ +

Внимание! Новый отчёт генерируется 1 раз! Следите за записью в хедоре страницы, если вы нуждаетесь в обновлении
+ данных жмите кнопку "Сгенерировать отчёт" таким образом вы получите обновлённые данные для заданных пораметров фильтрации

\ No newline at end of file From bd4df55233db04ec1cac962fdd2ab2d94bd45eb7 Mon Sep 17 00:00:00 2001 From: andrey Date: Tue, 29 Aug 2017 16:49:26 +0300 Subject: [PATCH 04/10] =?UTF-8?q?=D0=AF=D0=B2=D0=BD=D0=B0=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D1=81=D1=83=D1=89?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=B8=20?= =?UTF-8?q?media=20=D0=B4=D0=B5=D1=80=D1=80=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D0=B8=20media?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/analytics/views.py b/analytics/views.py index fddc766..eb440a6 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -79,7 +79,7 @@ def new_view(request): writercsv = csv.writer(csvfile, delimiter=',', quotechar='|') writercsv.writerow(list) except FileNotFoundError: - os.mkdir(MEDIA_ROOT + '/analytics') + os.makedirs(MEDIA_ROOT + '/analytics') redirect("/analytics/new/?start=" + start + "&end=" + end) return redirect("/analytics/?start=" + start + "&end=" + end) From 0a9b55cbde38d252ccf5927399943ee298812904 Mon Sep 17 00:00:00 2001 From: andrey Date: Tue, 29 Aug 2017 17:43:04 +0300 Subject: [PATCH 05/10] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/views.py | 6 +++--- templates/analytics.html | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/analytics/views.py b/analytics/views.py index eb440a6..bc19e5b 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -78,11 +78,11 @@ def new_view(request): "$-$yellow" if i._type == 'Ex' or i._type == 'M' else "")) writercsv = csv.writer(csvfile, delimiter=',', quotechar='|') writercsv.writerow(list) + return redirect("/analytics/?start=" + start + "&end=" + end) + except FileNotFoundError: os.makedirs(MEDIA_ROOT + '/analytics') - redirect("/analytics/new/?start=" + start + "&end=" + end) - - return redirect("/analytics/?start=" + start + "&end=" + end) + return redirect("/analytics/new/?start=" + start + "&end=" + end) def check_date_validate(start=None, end=None): diff --git a/templates/analytics.html b/templates/analytics.html index 6711221..e431c17 100644 --- a/templates/analytics.html +++ b/templates/analytics.html @@ -1,11 +1,11 @@

Дата создания отчёта {{ date_create }}

- +
- + - +
From 266fa6ae5df41876ef44e2ee4ae29dc890775f08 Mon Sep 17 00:00:00 2001 From: andrey Date: Wed, 30 Aug 2017 10:39:07 +0300 Subject: [PATCH 06/10] =?UTF-8?q?=D0=92=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D1=85=D0=BE=D1=81=D1=82=20=D0=B4=D0=BB=D1=8F=20=D0=B1=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BC=D0=B5=D1=81=D1=82=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lms/settings.py b/lms/settings.py index a73bd79..e3ac93e 100644 --- a/lms/settings.py +++ b/lms/settings.py @@ -136,7 +136,7 @@ DATABASES = { 'NAME': os.environ.get('DB_NAME', 'codemy'), 'USER': os.environ.get('PG_ENV_POSTGRES_USER', 'team'), 'PASSWORD': os.environ.get('PG_ENV_POSTGRES_PASSWORD', 'nu5Xefise'), - 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '127.0.0.1'), + 'HOST': os.environ.get('PG_PORT_5432_TCP_ADDR', '192.168.0.6'), 'PORT': os.environ.get('PG_PORT_5432_TCP_PORT', '5432'), }, } From 2856764163a9d4fb7fa4544507c8246aa8db9d39 Mon Sep 17 00:00:00 2001 From: andrey Date: Wed, 30 Aug 2017 14:37:58 +0300 Subject: [PATCH 07/10] =?UTF-8?q?=D0=BD=D0=B5=D1=82=20=D0=B2=D1=80=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BE=D0=B1=D1=8A=D1=8F=D1=81=D0=BD?= =?UTF-8?q?=D1=8F=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/urls.py | 5 +- analytics/views.py | 212 ++++++++++++++++++++------------- templates/analytics.html | 37 ------ templates/analytics/base.html | 41 +++++++ templates/analytics/index.html | 12 ++ templates/analytics/theme.html | 9 ++ 6 files changed, 198 insertions(+), 118 deletions(-) delete mode 100644 templates/analytics.html create mode 100644 templates/analytics/base.html create mode 100644 templates/analytics/index.html create mode 100644 templates/analytics/theme.html diff --git a/analytics/urls.py b/analytics/urls.py index cac8c8c..5b97d15 100644 --- a/analytics/urls.py +++ b/analytics/urls.py @@ -3,5 +3,8 @@ from analytics import views urlpatterns = [ url(r'^$', views.index_view), - url(r'^new/$', views.new_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), ] \ No newline at end of file diff --git a/analytics/views.py b/analytics/views.py index bc19e5b..47a51b9 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -1,88 +1,140 @@ -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 lms.settings import MEDIA_ROOT -from courses.models import Course, CourseTheme -from journals.models import CourseThemeJ - - -def index_view(request): - 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): - 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) - return redirect("/analytics/?start=" + start + "&end=" + end) - - except FileNotFoundError: - os.makedirs(MEDIA_ROOT + '/analytics') - return redirect("/analytics/new/?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} + 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' or i._type == 'M' 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, + } + 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)) + ) + ("$-$yellow" if i._type == 'Ex' or i._type == 'M' else "")) + writercsv = csv.writer(csvfile, delimiter=',', quotechar='|') + writercsv.writerow(list) def check_date_validate(start=None, end=None): diff --git a/templates/analytics.html b/templates/analytics.html deleted file mode 100644 index e431c17..0000000 --- a/templates/analytics.html +++ /dev/null @@ -1,37 +0,0 @@ -

Дата создания отчёта {{ date_create }}

- - -
- - - - - -
- - - - {% for i in header %} - - {% endfor %} - - - {% for i in body %} - - {% for j in i %} - - {% endfor %} - - {% endfor %} -
{{ i }}
{{ j.value }}
-

- В данной таблице представлены данные о том, сколько студентов прошло заданную тему.
- Темы не всегда проходятся последовательно, поэтому порой тему с большим порядковым номером прошло большее количество пользовавтелей.
- Вы можите выставить фильтр по последней акутивности пользователя, фильтр может быть ограничивающим с одной стороны или может отсутствовать,
- в случае ввода невалидных данных ошибки не происходит вас просто перенапровляет на начальную страницу.
- Вы можите скачать отчёт в формате csv метка $-$yellow говорит о том что в данной теме есть экзамен,
- в таблице темы содержашие экзамен подсвечены жёлтым светом -

- -

Внимание! Новый отчёт генерируется 1 раз! Следите за записью в хедоре страницы, если вы нуждаетесь в обновлении
- данных жмите кнопку "Сгенерировать отчёт" таким образом вы получите обновлённые данные для заданных пораметров фильтрации

\ No newline at end of file diff --git a/templates/analytics/base.html b/templates/analytics/base.html new file mode 100644 index 0000000..f134227 --- /dev/null +++ b/templates/analytics/base.html @@ -0,0 +1,41 @@ + + + + + Аналитика + + +

Дата создания отчёта {{ date_create }}

+ + + +
+ + + + + +
+ + + + {% for i in header %} + + {% endfor %} + + {% for i in body %} + + {% for j in i %} + + {% endfor %} + + {% endfor %} +
{{ i }}
{{ j.value }}
+

+ {% block description %}{% endblock %} +

+ +

Внимание! Новый отчёт генерируется 1 раз! Следите за записью в хедоре страницы, если вы нуждаетесь в обновлении
+ данных жмите кнопку "Сгенерировать отчёт" таким образом вы получите обновлённые данные для заданных пораметров фильтрации

+ + \ No newline at end of file diff --git a/templates/analytics/index.html b/templates/analytics/index.html new file mode 100644 index 0000000..72e6a43 --- /dev/null +++ b/templates/analytics/index.html @@ -0,0 +1,12 @@ + + + + + Аналитика + + +

Меню поиска

+

Студентов успешно прошедших тему

+

Студентов ожидающих проверки домашки

+ + \ No newline at end of file diff --git a/templates/analytics/theme.html b/templates/analytics/theme.html new file mode 100644 index 0000000..3e3f0b2 --- /dev/null +++ b/templates/analytics/theme.html @@ -0,0 +1,9 @@ +{% extends 'analytics/base.html' %} +{% block description %} + В данной таблице представлены данные о том, сколько студентов прошло заданную тему.
+ Темы не всегда проходятся последовательно, поэтому порой тему с большим порядковым номером прошло большее количество пользовавтелей.
+ Вы можите выставить фильтр по последней акутивности пользователя, фильтр может быть ограничивающим с одной стороны или может отсутствовать,
+ в случае ввода невалидных данных ошибки не происходит вас просто перенапровляет на начальную страницу.
+ Вы можите скачать отчёт в формате csv метка $-$yellow говорит о том что в данной теме есть экзамен,
+ в таблице темы содержашие экзамен подсвечены жёлтым светом +{% endblock %} \ No newline at end of file From d9adc2da54e1b556bf107aeb203553dabeae1f78 Mon Sep 17 00:00:00 2001 From: andrey Date: Wed, 30 Aug 2017 15:42:39 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=B8=D1=82=D0=BE=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + media/analitycs/theme/seprogress.csv | 37 ++++++++++++++++++ .../s2017-08-03e2017-08-17progress.csv | 38 +++++++++++++++++++ media/analytics/homework/seprogress.csv | 37 ++++++++++++++++++ .../theme/s2017-08-09e2017-08-16progress.csv | 37 ++++++++++++++++++ .../theme/s2017-08-09e2017-08-24progress.csv | 37 ++++++++++++++++++ media/analytics/theme/seprogress.csv | 37 ++++++++++++++++++ templates/analytics/homework.html | 2 + 8 files changed, 226 insertions(+) create mode 100644 media/analitycs/theme/seprogress.csv create mode 100644 media/analytics/homework/s2017-08-03e2017-08-17progress.csv create mode 100644 media/analytics/homework/seprogress.csv create mode 100644 media/analytics/theme/s2017-08-09e2017-08-16progress.csv create mode 100644 media/analytics/theme/s2017-08-09e2017-08-24progress.csv create mode 100644 media/analytics/theme/seprogress.csv create mode 100644 templates/analytics/homework.html diff --git a/.gitignore b/.gitignore index e38b38e..d3e82d9 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ build *.pyc __pycache__ +/static/ diff --git a/media/analitycs/theme/seprogress.csv b/media/analitycs/theme/seprogress.csv new file mode 100644 index 0000000..92c5448 --- /dev/null +++ b/media/analitycs/theme/seprogress.csv @@ -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 diff --git a/media/analytics/homework/s2017-08-03e2017-08-17progress.csv b/media/analytics/homework/s2017-08-03e2017-08-17progress.csv new file mode 100644 index 0000000..2d84435 --- /dev/null +++ b/media/analytics/homework/s2017-08-03e2017-08-17progress.csv @@ -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 diff --git a/media/analytics/homework/seprogress.csv b/media/analytics/homework/seprogress.csv new file mode 100644 index 0000000..5b16599 --- /dev/null +++ b/media/analytics/homework/seprogress.csv @@ -0,0 +1,37 @@ +Профессия — интернет-маркетолог,110,143,85,2,32,13,1,2,0,0,0,0,0,0,0,0,0 +test,0 +Как открыть веб-студию,8,13,8,5,6,0,2,0,3,0,1,0,0,0,0 +Дипломный проект «MOS.RU»,3,2,0$-$yellow +Дипломный проект «НТВ ПЛЮС»,2,3 +Акварельная живопись,13,22,13,7,3,5,0,0,0,0 +Веб-Дизайн PRO,120,67,68,10,12,25,33,10,8,11,0,2,3,0,2,5,4$-$yellow +Скетчинг для дизайнера,21,4,12,9,6,9,3,4,2,0,1,0,0,0,0,0 +Дипломный проект «Фестиваль молодежи»,9,10 +Android-разработчик,8,11,11,2,6,5,8,0,0,0,0,0,0,0,0,0,0$-$yellow +Дипломный проект «Промсвязьбанк»,34,0 +ux design,129,326,158,98,124,169,560,155,69,0,0,0,0,24,0,0,0,0$-$yellow,1$-$yellow +Дипломный проект «Газпромбанк»,13,12,0$-$yellow +Дипломный проект «ПОЧТА БАНК»,15,5 +Excel продвинутый,2,0,4,5,5,0,0,0,0$-$yellow +Дипломный проект «СМП БАНК»,20,4 +ux design special AIC,5,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +Профессия интернет-маркетолог от А до Я,0,23,5,1,0,0,0,1,0,0,0 +Blockchain,16,2,1,0,0 +JavaScript,33,49,45,36,33,39,27,30,24,26,21,26,16,20,12,4,0$-$yellow,21$-$yellow +Разработчик 1С-Битрикс,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0$-$yellow +Веб-Дизайн для начинающих,0,0,99,0,214,123,94,48,114,33,21,32,16,64,0,0,62 +Управление проектами,22,33,47,43,2,8,4,26,8,2,8,3,0,0,0 +Веб-разработчик,441,655,516,599,200,884,172,318,167,324,706,323,363,339,309,0,0$-$yellow,494$-$yellow,0,0 +Дипломный проект «Yota»,14,11,0$-$yellow +ux аналитик,5,7,37,33,21,6,0,12,7,3,4,14,5,2,3,3,0,0 +Дипломный проект «Kaspi.kz»,9,3,0$-$yellow +Видеоблогинг,29,20,13,0,0,0,0 +UI анимация,85,37,25,24,24,13,24,6,0,1,0,0,1,2,0,0,0,0,0,0 +Key Visual,18,2,2,0,0,2,0,0 +Профессия PR-менеджер,71,55,15,9,14,0$-$yellow +Дипломный проект «Ticketland»,4,5 +Дипломный проект «Mos.ru-2»,6,0 +iOS Разработчик,6,5,9,11,11,11,13,3,9,8,3,0,4,4,1,0,0$-$yellow +Java разработчик,572,590,1005,684,861,476,401,1458,590,224,163,127,12,30,66,0,38$-$yellow +Excel базовый,2,2,1,1,5,1,1,9,10$-$yellow +C# разработчик,34,25,33,28,13,22,11,25,19,13,36,27,30,28,22,0,66$-$yellow diff --git a/media/analytics/theme/s2017-08-09e2017-08-16progress.csv b/media/analytics/theme/s2017-08-09e2017-08-16progress.csv new file mode 100644 index 0000000..694bc22 --- /dev/null +++ b/media/analytics/theme/s2017-08-09e2017-08-16progress.csv @@ -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 diff --git a/media/analytics/theme/s2017-08-09e2017-08-24progress.csv b/media/analytics/theme/s2017-08-09e2017-08-24progress.csv new file mode 100644 index 0000000..1518b36 --- /dev/null +++ b/media/analytics/theme/s2017-08-09e2017-08-24progress.csv @@ -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 diff --git a/media/analytics/theme/seprogress.csv b/media/analytics/theme/seprogress.csv new file mode 100644 index 0000000..92c5448 --- /dev/null +++ b/media/analytics/theme/seprogress.csv @@ -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 diff --git a/templates/analytics/homework.html b/templates/analytics/homework.html new file mode 100644 index 0000000..7629c61 --- /dev/null +++ b/templates/analytics/homework.html @@ -0,0 +1,2 @@ +{% extends 'analytics/base.html' %} +{% block description %}{% endblock %} \ No newline at end of file From a0a04af61746cc42c4b466257c72503ac27a9a3b Mon Sep 17 00:00:00 2001 From: andrey Date: Wed, 30 Aug 2017 16:09:17 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=81=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B1=D0=BE=D1=80=D0=BA=D1=83=20=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/views.py | 6 +- media/analytics/homework/seprogress.csv | 73 +++++++++++++------------ 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/analytics/views.py b/analytics/views.py index 47a51b9..934c5ac 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -112,7 +112,7 @@ def new_view_access_theme(end_date, start_date, csvfile): 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 "")) + "$-$yellow" if i._type == 'Ex' else "")) writercsv = csv.writer(csvfile, delimiter=',', quotechar='|') writercsv.writerow(list) @@ -124,6 +124,8 @@ def new_view_homework_wait(end_date, start_date, csvfile): 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 @@ -132,7 +134,7 @@ def new_view_homework_wait(end_date, start_date, csvfile): 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)) - ) + ("$-$yellow" if i._type == 'Ex' or i._type == 'M' else "")) + )) writercsv = csv.writer(csvfile, delimiter=',', quotechar='|') writercsv.writerow(list) diff --git a/media/analytics/homework/seprogress.csv b/media/analytics/homework/seprogress.csv index 5b16599..6ee49b2 100644 --- a/media/analytics/homework/seprogress.csv +++ b/media/analytics/homework/seprogress.csv @@ -1,37 +1,38 @@ -Профессия — интернет-маркетолог,110,143,85,2,32,13,1,2,0,0,0,0,0,0,0,0,0 +ntcn1,0,0 test,0 -Как открыть веб-студию,8,13,8,5,6,0,2,0,3,0,1,0,0,0,0 -Дипломный проект «MOS.RU»,3,2,0$-$yellow -Дипломный проект «НТВ ПЛЮС»,2,3 -Акварельная живопись,13,22,13,7,3,5,0,0,0,0 -Веб-Дизайн PRO,120,67,68,10,12,25,33,10,8,11,0,2,3,0,2,5,4$-$yellow -Скетчинг для дизайнера,21,4,12,9,6,9,3,4,2,0,1,0,0,0,0,0 -Дипломный проект «Фестиваль молодежи»,9,10 -Android-разработчик,8,11,11,2,6,5,8,0,0,0,0,0,0,0,0,0,0$-$yellow -Дипломный проект «Промсвязьбанк»,34,0 -ux design,129,326,158,98,124,169,560,155,69,0,0,0,0,24,0,0,0,0$-$yellow,1$-$yellow -Дипломный проект «Газпромбанк»,13,12,0$-$yellow -Дипломный проект «ПОЧТА БАНК»,15,5 -Excel продвинутый,2,0,4,5,5,0,0,0,0$-$yellow -Дипломный проект «СМП БАНК»,20,4 -ux design special AIC,5,1,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -Профессия интернет-маркетолог от А до Я,0,23,5,1,0,0,0,1,0,0,0 -Blockchain,16,2,1,0,0 -JavaScript,33,49,45,36,33,39,27,30,24,26,21,26,16,20,12,4,0$-$yellow,21$-$yellow -Разработчик 1С-Битрикс,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0$-$yellow -Веб-Дизайн для начинающих,0,0,99,0,214,123,94,48,114,33,21,32,16,64,0,0,62 -Управление проектами,22,33,47,43,2,8,4,26,8,2,8,3,0,0,0 -Веб-разработчик,441,655,516,599,200,884,172,318,167,324,706,323,363,339,309,0,0$-$yellow,494$-$yellow,0,0 -Дипломный проект «Yota»,14,11,0$-$yellow -ux аналитик,5,7,37,33,21,6,0,12,7,3,4,14,5,2,3,3,0,0 -Дипломный проект «Kaspi.kz»,9,3,0$-$yellow -Видеоблогинг,29,20,13,0,0,0,0 -UI анимация,85,37,25,24,24,13,24,6,0,1,0,0,1,2,0,0,0,0,0,0 -Key Visual,18,2,2,0,0,2,0,0 -Профессия PR-менеджер,71,55,15,9,14,0$-$yellow -Дипломный проект «Ticketland»,4,5 -Дипломный проект «Mos.ru-2»,6,0 -iOS Разработчик,6,5,9,11,11,11,13,3,9,8,3,0,4,4,1,0,0$-$yellow -Java разработчик,572,590,1005,684,861,476,401,1458,590,224,163,127,12,30,66,0,38$-$yellow -Excel базовый,2,2,1,1,5,1,1,9,10$-$yellow -C# разработчик,34,25,33,28,13,22,11,25,19,13,36,27,30,28,22,0,66$-$yellow +Как открыть веб-студию,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 From 882954901c5617077f73148d46aa462102320c8e Mon Sep 17 00:00:00 2001 From: andrey Date: Wed, 30 Aug 2017 16:38:48 +0300 Subject: [PATCH 10/10] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=20=D0=BF=D1=83=D1=82=D0=B8=20?= =?UTF-8?q?=D0=B2=20media?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- analytics/views.py | 16 ++++++++++++---- templates/analytics/base.html | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/analytics/views.py b/analytics/views.py index 934c5ac..6ca748f 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -28,10 +28,10 @@ def index_view_decor(url): 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]} + 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)): @@ -44,7 +44,15 @@ def index_view_decor(url): date_create = time.ctime(os.stat(path).st_atime) - context = {'body': res, 'header': first, 'date_create': date_create, 'start': start, 'end': end} + 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) diff --git a/templates/analytics/base.html b/templates/analytics/base.html index f134227..64d1492 100644 --- a/templates/analytics/base.html +++ b/templates/analytics/base.html @@ -7,7 +7,7 @@

Дата создания отчёта {{ date_create }}

- +