Merge branch 'develop' into 'master'

Develop

See merge request skillbox/go.skillbox.ru!59
remotes/origin/pm_task_31703
Zolotarev Alexander 8 years ago
commit fefaa503eb
  1. 89
      _utils/check_course_journal.py
  2. 5
      access/new_urls.py
  3. 68
      access/new_view.py
  4. 3
      access/serializers.py
  5. 2
      courses/new_view.py
  6. BIN
      oferta.pdf
  7. 2
      templates/contacts.html

@ -2,10 +2,10 @@
import os
import django
import sys
import sys
import os
from datetime import datetime
from datetime import datetime
sys.path.append("/var/www/skillbox")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "lms.settings")
@ -16,48 +16,49 @@ 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)
print('===========\nКурс: %s\n==============\n' % Course.objects.get(id=course_id).title)
if __name__ == "__main__":
course_id = sys.argv[1]
check_course_journal(course_id)
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)

@ -3,5 +3,10 @@ from access import new_view as views
urlpatterns = [
url(r'teachers/$', views.TeacherListView.as_view()),
url(r'info/$', views.InfoUserView.as_view()),
url(r'check/$', views.CheckUserView.as_view()),
url(r'registration/$', views.RegistrationView.as_view()),
url(r'change_password/$', views.ChangePasswordView.as_view()),
url(r'login/$', views.LoginView.as_view()),
url(r'logout/$', views.LogoutView.as_view()),
]

@ -5,6 +5,7 @@ from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response
from access.serializers import UserInitSerializer
from courses.models import Course
class TeacherListView(APIView):
@ -12,11 +13,18 @@ class TeacherListView(APIView):
status_code = 200
def get(self, request):
return Response([teacher.full_name() for teacher in get_user_model().objects.filter(
kwargs = dict(
in_role='T',
is_active=True,
reg_status=4,
)], self.status_code)
)
res = []
course_id = request.GET.get('course_id', 0)
if course_id:
kwargs['course_teachers'] = Course.objects.get(id=course_id)
for teacher in get_user_model().objects.filter(**kwargs):
res.append(teacher.full_name())
return Response(res, self.status_code)
class CheckUserView(APIView):
@ -29,20 +37,64 @@ class CheckUserView(APIView):
return Response(False, status=self.status_code)
class LoginView(APIView):
class InfoUserView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 200
def get(self, request):
if request.user.is_authenticated():
return Response(UserInitSerializer(request.user).data, status=self.status_code)
return Response('anonymous', status=self.status_code)
class RegistrationView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
try:
user = get_user_model().objects.get(email=request.JSON['email'].lower())
except get_user_model().DoesNotExist:
user = get_user_model().objects.create_user(
email=request.JSON['email'].lower(),
)
user.set_password(request.JSON['password'])
user.reg_status = '2'
user.save()
return Response(UserInitSerializer(user).data, status=200)
class ChangePasswordView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
if request.user.is_authenticated and not request.user.check_password(request.JSON['old_password']):
return Response("Неверный пароль", status=404)
request.user.set_password(request.JSON['new_password'])
request.user.save()
return Response("Пароль был изменён", status=200)
class LoginView(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
if not request.user.is_authenticated():
user = auth.authenticate(email=request.JSON.get('email'), password=request.JSON.get('password'))
return Response(UserInitSerializer(user).data, status=self.status_code)
return Response(status=403)
try:
auth.login(request, user)
except AttributeError:
return Response("Неверный пароль", status=404)
return Response(UserInitSerializer(request.user).data, status=200)
class LogoutView(APIView):
renderer_classes = (JSONRenderer,)
status_code = 204
def get(self, request):
return Response(False, status=self.status_code)
@staticmethod
def post(request):
if request.user.is_authenticated():
auth.logout(request)
return Response(status=204)

@ -6,4 +6,5 @@ class UserInitSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = '__all__'
fields = ['id', 'email', 'phone', 'name',
'fname', 'oname', 'city', 'b_day']

@ -65,7 +65,7 @@ class CourseListView(APIView):
if course.public:
course_serialize = CourseListSerializer(course).data
course_serialize['is_mine'] = False
if Bill.objects.filter(service__course=course, user=request.user, status='F').exists():
if request.user.is_authenticated() and Bill.objects.filter(service__course=course, user=request.user, status='F').exists():
course_serialize['is_mine'] = True
res.append(course_serialize)

Binary file not shown.

@ -23,7 +23,7 @@
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-3" style=" padding-top: 30px;
padding-bottom: 20px;">
<b style="padding-bottom: 5px;">Юридическая информация</b><Br>
<p style="margin-top: 5px;">ИП Коропов Игорь Валентинович<br> ИНН 504793474705<br> ОГРНИП 314504727900026<br></p>
<p style="margin-top: 5px;">ООО «СКИЛБОКС» <br> ИНН 9701078611<br> ОГРН 1177746566140<br></p>
</div>
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-3" style="padding-top: 30px; padding-bottom: 20px; width: 500px;">
<b style="padding-bottom: 5px;">Контакты</b><Br>

Loading…
Cancel
Save