def _status_change(request, id, status, comments=u''): """ Изменение статуса заявки. Вызывается из других представлений! """ try: prolongation = UserProlongation.objects.get(id=id) except UserProlongation.DoesNotExist: raise Http404() manager = manager_check(request.user,prolongation.recive_library_id ) if not manager: return HttpResponseForbidden(u'У вас нет доступа. Обратитесь к администратору.') if request.method == 'POST': form = ChangeStatusForm(request.POST) if form.is_valid(): status_change = form.save(commit=False) status_change.prolongation = prolongation status_change.prolongation_manager = manager status_change.status = status if status_change.status in prolongation.next_statuses(): status_change.save() else: raise ValueError(u'Wrong status code') return redirect('prolongation_prolongation_detail', id=id) else: form = ChangeStatusForm(initial={ 'comments':comments }) return render(request, 'prolongation/administration/change_status.html', { 'form': form, 'prolongation': prolongation })
def changestatus(): if 'email' not in session: return redirect(url_for('signin')) user = User.query.filter_by(email=session['email']).first() if user is None: return redirect(url_for('signin')) else: form = ChangeStatusForm() courses = Course.query.filter_by(ins_id=user.uid).all() courseChoices = [] for course in courses: courseChoices.append( (course.code, course.code + '-' + course.cname)) form.course.choices = courseChoices studentChoices = [] studentLinks = StudentCourseLink.query.filter_by( cid=courses[0].cid).all() for link in studentLinks: stu = Student.query.filter_by(sid=link.sid).first() sname = stu.sfirstname + ' ' + stu.slastname studentChoices.append((link.sid, str(link.sid) + ' - ' + sname)) form.student.choices = studentChoices if request.method == 'POST': status = form.att.data stu_id = form.student.data date = form.time.data course_code = form.course.data course_id = Course.query.filter_by(code=course_code).first().cid stu2 = Student.query.filter_by(sid=int(stu_id)).first() sname2 = stu2.sfirstname + ' ' + stu2.slastname exsiting = Attendance.query.filter_by(stu_id=stu_id, course_id=course_id, date=date).first() checkin_time = '' checkout_time = '' if exsiting is not None: checkin_time = exsiting.checkin_time checkout_time = exsiting.checkout_time db.session.delete(exsiting) db.session.commit() additional = 'manually checked in' newatt = Attendance(checkin_time, checkout_time, date, status, sname2, stu_id, course_code, course_id, additional) db.session.add(newatt) db.session.commit() return render_template('changestatus.html', form=form)