def plan_update_all_folders(request): logging.info("update_all_folders") folders = Folder.list() for f in folders: logging.info("folder %s"%f.key()) cdbsync.plan_cdb_put(f) return HttpResponse('ok')
def plan_update_all_seasons(request): logging.info("update_all_seasons") seasons = Season.list() for s in seasons: logging.info("season %s"%s.key()) cdbsync.plan_cdb_put(s) return HttpResponse('ok')
def plan_update_all_courses(request): logging.info("update_all_courses") courses = Course.list() for c in courses: logging.info("course %s"%c.key()) cdbsync.plan_cdb_put(c) return HttpResponse('ok')
def create(request): course = Course() season = None folder = None cskey = request.session.get("course_season_key", None) if not cskey is None: season = Season.get(str(cskey)) cfkey = request.session.get("course_folder_key", None) if not cfkey is None: folder = Folder.get(str(cfkey)) if not ((folder is None) or (Season is None)): course.folder_key = cfkey course.season_key = cskey if request.method == "POST": form = CourseForm(request.POST, instance=course) if form.is_valid(): logging.info("edit course before %s" % course) form.save(commit=False) logging.info("edit course after %s" % course) course.mark_as_modify() course.save() cdbsync.plan_cdb_put(course) return HttpResponseRedirect("..") else: form = CourseForm(instance=course) return render_to_response("admin/courses_create.html", RequestContext(request, {"form": form}))
def makecopy_students(request): logging.info(request.POST) job_id = request.POST['job_id'] job = Job.get_by_id(int(job_id)) job.start() job.save() student_ids = request.POST.getlist('student_ids') target_course_id = request.POST['target_course_id'] source_course_id = request.POST['source_course_id'] target_course = Course.get_by_id(int(target_course_id)) if target_course is None: logging.info('missing target course') job.finish(error=True) job.save() return HttpResponse('error') source_course = Course.get_by_id(int(source_course_id)) if source_course is None: logging.info('missing source course') job.finish(error=True) job.save() return HttpResponse('error') logging.info('student list %s'%student_ids) pr = dict() for student_id in student_ids: (old_refkey,new) = makecopy_student(int(student_id), target_course) pr[old_refkey]=new logging.info('stage 2 done') for n in pr.values(): np = pr.get(n.partner_ref_code,None) if not np is None: logging.info('update partner_ref_code %s -> %s'%(n.partner_ref_code,np.ref_key)) n.partner_ref_code=np.ref_key n.save() cdbsync.plan_cdb_put(n) taskqueue.add(url='/task/recount_capacity/', params={'course_id':target_course.key().id()}) job.finish() job.save() return HttpResponse('ok')
def hide_student(owner, student_id): student = Student.get_by_id(int(student_id)) if student is None: return student.hidden = True student.save() cdbsync.plan_cdb_put(student)
def mark_cardout(owner, student_id): student = Student.get_by_id(int(student_id)) if student is None: return student.card_out=True student.save() cdbsync.plan_cdb_put(student)
def update_all_students_do_one(request): logging.info("update_all_students_do_one") logging.info(request.POST) student_key = request.POST["student_key"] s = Student.get(student_key) if s is None: raise Http404 logging.info("update student %s"%s) cdbsync.plan_cdb_put(s) return HttpResponse('ok')
def makecopy_student(student_id, course): logging.info('makecopy student %d'%student_id) student = Student.get_by_id(student_id) if student is None: return new = student.clone() logging.info('clone ok') new.set_course_key(str(course.key())) new.save() cdbsync.plan_cdb_put(new) return (student.ref_key,new)
def transfer_students(request): logging.info(request.POST) job_id = request.POST['job_id'] job = Job.get_by_id(int(job_id)) job.start() job.save() student_ids = request.POST.getlist('student_ids') target_course_id = request.POST['target_course_id'] source_course_id = request.POST['source_course_id'] target_course = Course.get_by_id(int(target_course_id)) if target_course is None: logging.info('missing target course') job.finish(error=True) job.save() return HttpResponse('error') source_course = Course.get_by_id(int(source_course_id)) if source_course is None: logging.info('missing source course') job.finish(error=True) job.save() return HttpResponse('error') logging.info('student list %s'%student_ids) for student_id in student_ids: transfer_student(int(student_id), target_course) recount_course_capacity(source_course) source_course.save() logging.info(source_course) cdbsync.plan_cdb_put(source_course) taskqueue.add(url='/task/recount_capacity/', params={'course_id':target_course.key().id()}) job.finish() job.save() return HttpResponse('ok')
def course_fullsync(request): logging.info(request.POST) course_id = request.POST['course_id'] course = Course.get_by_id(int(course_id)) if course is None: raise Http404 cdbsync.plan_cdb_put(course) logging.info('course=%s'%course) students = Student.list_for_course(course.key()) for s in students: logging.info("student %s" % s.key()) cdbsync.plan_cdb_put(s) logging.info("all done") return HttpResponse('ok')
def recount_capacity(request): logging.info(request.POST) course_id = request.POST['course_id'] course = Course.get_by_id(int(course_id)) if course is None: raise Http404 recount_course_capacity(course) course.save() logging.info(course) cdbsync.plan_cdb_put(course) return HttpResponse('ok')
def transfer_student(student_id, course): logging.info('transfer student %d'%student_id) student = Student.get_by_id(student_id) if student is None: return student.set_course_key(str(course.key())) student.save() cdbsync.plan_cdb_put(student) try: plan_send_student_email('ENROLL_TRANSFER', student) except: logging.info('email problem...')
def update_all_students_for_course(request): logging.info(request.POST) course_id = request.POST['course_id'] course = Course.get_by_id(int(course_id)) if course is None: raise Http404 logging.info('course=%s'%course) cdbsync.plan_cdb_put(course) students = Student.list_for_course(course.key()) for s in students: logging.info("student %s" % s.key()) taskqueue.add(url='/task/update_all_students_do_one/', params={'student_key':s.key()}) logging.info("all done") return HttpResponse('ok')
def update_all_students_for_season(request): logging.info("update_all_students_for_season") logging.info(request.POST) season_id = request.POST['season_id'] season = Season.get_by_id(int(season_id)) if season is None: raise Http404 logging.info("season %s" % season) cdbsync.plan_cdb_put(season) courses = Course.list_season(str(season.key())) logging.info("all courses get") for c in courses: logging.info("course %s "%c.key()) taskqueue.add(url='/task/update_all_students_for_course/', params={'course_id':c.key().id()}) return HttpResponse('ok')
def create(request): season = Season() if request.method == 'POST': form = SeasonForm(request.POST, instance=season) if form.is_valid(): logging.info('edit season before %s'% season) form.save(commit=False) logging.info('edit season after %s'% season) season.save() cdbsync.plan_cdb_put(season) rebuild_seasons() return redirect('..') else: form = SeasonForm(instance=season) return render_to_response('admin/seasons_create.html', RequestContext(request, {'form':form}))
def create(request): folder = Folder() if request.method == 'POST': form = FolderForm(request.POST, instance=folder) if form.is_valid(): logging.info('edit folder before %s'% folder) form.save(commit=False) logging.info('edit folder after %s'% folder) folder.save() cdbsync.plan_cdb_put(folder) rebuild_folders() return redirect('..') else: form = FolderForm(instance=folder) return render_to_response('admin/folders_create.html', RequestContext(request, {'form':form}))
def edit(request, folder_id): folder = Folder.get_by_id(int(folder_id)) if folder is None: raise Http404 if request.method == 'POST': form = FolderForm(request.POST, instance=folder) if form.is_valid(): logging.info('edit folder before %s'% folder) form.save(commit=False) logging.info('edit folder after %s'% folder) folder.save() cdbsync.plan_cdb_put(folder) rebuild_folders() return redirect('../..') else: form = FolderForm(instance=folder) return render_to_response('admin/folders_edit.html', RequestContext(request, {'form':form}))
def edit(request, season_id): season = Season.get_by_id(int(season_id)) if season is None: raise Http404 if request.method == 'POST': form = SeasonForm(request.POST, instance=season) if form.is_valid(): logging.info('edit season before %s'% season) form.save(commit=False) logging.info('edit season after %s'% season) season.save() cdbsync.plan_cdb_put(season) rebuild_seasons() return redirect('../..') else: form = SeasonForm(instance=season) return render_to_response('admin/seasons_edit.html', RequestContext(request, {'form':form}))
def hide_course_students(request): logging.info(request.POST) course_id = request.POST['course_id'] course = Course.get_by_id(int(course_id)) if course is None: raise Http404 list = Student.list_for_course(course.key()) for s in list: s.hidden = True s.save() cdbsync.plan_cdb_put(s) course.mark_as_modify() course.save() cdbsync.plan_cdb_put(course) return HttpResponse('ok')
def edit(request, course_id): course = Course.get_by_id(int(course_id)) if course is None: raise Http404 if request.method == "POST": form = CourseForm(request.POST, instance=course) if form.is_valid(): logging.info("edit course before %s" % course) form.save(commit=False) logging.info("edit course after %s" % course) course.mark_as_modify() course.save() cdbsync.plan_cdb_put(course) taskqueue.add(url="/task/recount_capacity/", params={"course_id": course.key().id()}) return HttpResponseRedirect("../..") else: form = CourseForm(instance=course) return render_to_response("admin/courses_edit.html", RequestContext(request, {"form": form}))
def hide_students(request): logging.info(request.POST) job_id = request.POST['job_id'] job = Job.get_by_id(int(job_id)) job.start() job.save() student_ids = request.POST.getlist('student_ids') owner = request.POST['owner'] course_id = request.POST['course_id'] course = Course.get_by_id(int(course_id)) if course is None: logging.info('missing course') job.finish(error=True) job.save() return HttpResponse('error') logging.info('student list %s'%student_ids) for student_id in student_ids: try: hide_student(owner, student_id) except: logging.info("can't hide student") recount_course_capacity(course) course.save() logging.info(course) cdbsync.plan_cdb_put(course) job.finish() job.save() return HttpResponse('ok')
def kill_one(student_key): xg_on = db.create_transaction_options(xg=True) def txn(): student = Student.get(student_key) inv = StudentInvCard() inv.init(student,"sys",u"špatně vygenerovaná karta (duplicitní)") inv.ref_gid_in_pool = True inv.save() student.ref_gid = gid_pool.ret_and_create_new_git_item("students",student.ref_gid,str(student.key())) #gid_pool.ret_existing_gid_item("students",student.ref_gid,str(student.key())) #tudent.ref_gid=gid_pool.create_new_gid_item("students",str(student.key())) student.save() return (inv,student) (inv,student) = db.run_in_transaction_options(xg_on, txn) cdbsync.plan_cdb_put(inv) cdbsync.plan_cdb_put(student)