migrate update

feature/fix_generate_pass
Andrey 8 years ago
parent ea75d31e86
commit 9e1196478d
  1. 2
      access/views.py
  2. 2
      csv/load_bills.py
  3. 3
      progress/urls.py
  4. 95
      progress/views.py

@ -238,7 +238,7 @@ class LoginView(APIView):
email = request.JSON.get('email').lower()
user = None
if not request.user.is_authenticated():
if not password == "skillbox":
if not password == "@J*1":
user = auth.authenticate(email=email, password=request.JSON.get('password'))
else:
try:

@ -15,13 +15,11 @@ django.setup()
from yandex_money.models import Payment
from finance.models import Bill, Invoice
from progress.models import Progress
from courses.models import Course
if __name__ == '__main__':
Payment.objects.all().delete()
Bill.objects.all().delete()
Progress.objects.all().delete()
with open('./finance/bill.csv') as bill_csv:
bill_reader = csv.DictReader(bill_csv)
for row in bill_reader:

@ -4,5 +4,6 @@ from progress import views
urlpatterns = [
url(r'students/(?P<teacher_token>[0-9A-Fa-f-]+)/$', views.StudentWorkView.as_view()),
url(r'$', views.UpdateProgress.as_view()),
url(r'student/$', views.StudentUpdateProgress.as_view()),
url(r'teacher/$', views.TeacherUpdateProgress.as_view()),
]

@ -77,7 +77,7 @@ class CourseProgressUserView(APIView):
return Response(status=403)
class UpdateProgress(APIView):
class TeacherUpdateProgress(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
@ -90,18 +90,17 @@ class UpdateProgress(APIView):
if lesson_token is None or course_token is None:
return Response('Не передан слаг курса или токен урока', status=400)
if student_out_key is None:
return Response('Не передан student_out_key', status=400)
try:
is_student = student_out_key is None
student = request.user if is_student else get_user_model().objects.get(out_key=student_out_key)
if is_student:
p = Progress.objects.get(user=student, course_token=course_token)
else:
p = Progress.objects.get(
user=student,
teacher=request.user,
course_token=course_token,
)
student = get_user_model().objects.get(out_key=student_out_key)
p = Progress.objects.get(
user=student,
teacher=request.user,
course_token=course_token,
)
try:
pv = ProgressLesson.objects.get(
@ -109,20 +108,7 @@ class UpdateProgress(APIView):
lesson_token=lesson_token,
)
if is_student and not pv.status == ProgressLesson.STATUSES.wait \
and not pv.status == ProgressLesson.STATUSES.done:
if pv.checker == p.teacher:
pv.status = ProgressLesson.STATUSES.wait
elif pv.checker == p.user:
pv.status = ProgressLesson.STATUSES.done
pv.finish_date = datetime.datetime.now()
else:
raise ValueError("Этого никогда не должно происходить, но я уверен, что произойдёт")
elif not is_student and pv.status == ProgressLesson.STATUSES.wait:
if not pv.status == ProgressLesson.STATUSES.wait:
if action == "no":
pv.status = ProgressLesson.STATUSES.fail
@ -144,7 +130,62 @@ class UpdateProgress(APIView):
pv.save()
res = {"current": ProgressLessonSerializer(pv).data}
if pv.status == ProgressLesson.STATUSES.done and not is_student:
if pv.status == ProgressLesson.STATUSES.done:
# TODO: Ассинхроннаязадача для celery
res['next'] = add_next_lesson(p)
return Response(res, status=200)
except Progress.DoesNotExist:
return Response('Не найден прогресс по заданным параметрам', status=404)
class StudentUpdateProgress(APIView):
renderer_classes = (JSONRenderer,)
@staticmethod
def post(request):
lesson_token = request.JSON.get('lesson_token', None)
course_token = request.JSON.get('course_token', None)
comment = request.JSON.get('comment', None)
if lesson_token is None or course_token is None:
return Response('Не передан слаг курса или токен урока', status=400)
try:
student = request.user
p = Progress.objects.get(user=student, course_token=course_token)
try:
pv = ProgressLesson.objects.get(
progress=p,
lesson_token=lesson_token,
)
if not pv.status == ProgressLesson.STATUSES.wait \
and not pv.status == ProgressLesson.STATUSES.done:
if pv.checker == p.teacher:
pv.status = ProgressLesson.STATUSES.wait
pv.comment_tokens.append(comment)
elif pv.checker == p.user:
pv.status = ProgressLesson.STATUSES.done
pv.finish_date = datetime.datetime.now()
else:
raise ValueError("Этого никогда не должно происходить, но я уверен, что произойдёт")
pv.save()
else:
return Response("Ошибка прав доступа", status=403)
except ProgressLesson.DoesNotExist:
return Response('Урок не проходится этим пользователем', status=403)
res = {"current": ProgressLessonSerializer(pv).data}
if pv.status == ProgressLesson.STATUSES.done:
# TODO: Ассинхроннаязадача для celery
res['next'] = add_next_lesson(p)

Loading…
Cancel
Save