コード例 #1
0
ファイル: test_views.py プロジェクト: prcek/TSReg
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')
コード例 #2
0
ファイル: test_views.py プロジェクト: prcek/TSReg
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')
コード例 #3
0
ファイル: test_views.py プロジェクト: prcek/TSReg
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')
コード例 #4
0
ファイル: course_views.py プロジェクト: prcek/TSReg
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}))
コード例 #5
0
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')
コード例 #6
0
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)
コード例 #7
0
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)
コード例 #8
0
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')
コード例 #9
0
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)
コード例 #10
0
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')
コード例 #11
0
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')
コード例 #12
0
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')
コード例 #13
0
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...')
コード例 #14
0
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')
コード例 #15
0
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')
コード例 #16
0
ファイル: season_views.py プロジェクト: prcek/TSReg
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}))
コード例 #17
0
ファイル: folder_views.py プロジェクト: prcek/TSReg
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}))
コード例 #18
0
ファイル: folder_views.py プロジェクト: prcek/TSReg
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}))
コード例 #19
0
ファイル: season_views.py プロジェクト: prcek/TSReg
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}))
コード例 #20
0
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')
コード例 #21
0
ファイル: course_views.py プロジェクト: prcek/TSReg
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}))
コード例 #22
0
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')
コード例 #23
0
ファイル: test_views.py プロジェクト: prcek/TSReg
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)