Пример #1
0
def index(request):

    season = None
    if request.method == 'POST':
        filter_form = SeasonFilterForm(request.POST)
        if filter_form.is_valid():
            season = Season.get(str(filter_form.cleaned_data['season_key']))
            if not season is None:
                request.session['backup_season_key']=str(season.key())
    else:
        bskey = request.session.get('backup_season_key',None)
        if not bskey is None:
            season =  Season.get(str(bskey))
        if season is None:
            filter_form = SeasonFilterForm()
        else:
            filter_form = SeasonFilterForm({'season_key':str(season.key())})



    if season is None:
        course_list = None
    else:
        course_list = Course.list_season(str(season.key())) 

    return render_to_response('admin/backup_index.html', RequestContext(request, { 'filter_form':filter_form, 'course_list': course_list}))
Пример #2
0
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}))
Пример #3
0
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')
Пример #4
0
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}))
Пример #5
0
def update_all_students(request):
    logging.info("update_all_students")
    logging.info(request.POST)
    seasons = Season.list()
    for s in seasons:
        logging.info("season %s"%s.key())
        taskqueue.add(url='/task/update_all_students_for_season/', params={'season_id':s.key().id()})
    return HttpResponse('ok')
Пример #6
0
def delete(request, season_id):

    season = Season.get_by_id(int(season_id))
    if season is None:
        raise Http404

    season.delete()
    rebuild_seasons()
    return redirect('../..')
Пример #7
0
def udpate_folder_stats(request):
    logging.info('adding tasks for stats update')
    folders = Folder.list()
    seasons = Season.list()


    for s in seasons:
        for f in folders:
            logging.info('stats task season %s and folder %s' %(s,f))
            taskqueue.add(url='/task/update_folder_stats/', params={'season_key':str(s.key()), 'folder_key': str(f.key())})

    return HttpResponse('ok')
Пример #8
0
def import_school(request,file_id):

    f = FileBlob.get_by_id(int(file_id))

    if f is None:
        raise Http404

    d = cStringIO.StringIO(f.data)
    r = UnicodeReader(d,encoding='utf8', delimiter=',', quotechar='"')
   
    form = None
    course = None 
    
    season = None
    cskey = request.session.get('course_season_key',None)
    if not cskey is None:
        season =  Season.get(str(cskey))
    folder = None
    cfkey = request.session.get('course_folder_key',None)
    if not cfkey is None:
        folder =  Folder.get(str(cfkey))    
    
    logging.info('cfkey %s cskey %s'%(cskey,cfkey))
    logging.info('folder: %s'%folder)
    logging.info('season: %s'%season)
    if folder and season:
        cc = Course.get_COURSE_FILTER_CHOICES(str(season.key()),str(folder.key()))
    else:
        cc = Course.get_COURSE_CHOICES()
    
    
    logging.info('cc:%s'%cc)
    
    if request.method == 'POST':
        logging.info('meth post, filling form')
        form = TargetPickForm2(request.POST,courses = cc)
        if form.is_valid():
            course = Course.get(form.cleaned_data['course_key'])
            if course is None:
                raise Http404
          
    else:
        logging.info('meth get, blank form')
        form = TargetPickForm2(courses = cc)

    selected = None
    info = []
    
    return render_to_response('admin/import_school.html', RequestContext(request, {  'info': info, 'form':form, 'course':course, 'season':season, 'folder':folder}))
Пример #9
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')
Пример #10
0
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}))
Пример #11
0
 def valid_value(self, value):
     self._set_choices(Season.get_SEASON_CHOICES())
     return super(SeasonField, self).valid_value(value)
Пример #12
0
def index(request):

    course_list = None
    season = None
    folder = None
    if request.method == "POST":
        form = SeasonCategoryFilterForm(request.POST)
        if form.is_valid():
            season = Season.get(str(form.cleaned_data["season_key"]))
            folder = Folder.get(str(form.cleaned_data["folder_key"]))
            if not season is None:
                request.session["course_season_key"] = str(season.key())
            if not folder is None:
                request.session["course_folder_key"] = str(folder.key())
    else:
        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 (season is None) or (folder is None):
            form = SeasonCategoryFilterForm()
        else:
            form = SeasonCategoryFilterForm({"season_key": str(season.key()), "folder_key": str(folder.key())})

    if (season is None) or (folder is None):
        course_list = None
        if request.GET.get("all", None):
            logging.info("all mode")
            course_list = Course.list()

    else:
        if request.GET.get("all", None):
            logging.info("all mode")
            course_list = Course.list()
        else:
            course_list = Course.list_filter(str(season.key()), str(folder.key()))

    tc_em = 0
    tc_ef = 0
    tc_e = 0
    tc_pm = 0
    tc_pf = 0
    tc_p = 0

    tc_ppm = 0
    tc_ppf = 0
    tc_pp = 0

    tc_npm = 0
    tc_npf = 0
    tc_np = 0

    tc_sum = 0
    if course_list is not None:
        for c in course_list:
            tc_em += c.stat_e_m
            tc_ef += c.stat_e_f
            tc_e += c.usage
            tc_pm += c.stat_fp_m
            tc_pf += c.stat_fp_f
            tc_p += c.stat_fp_m + c.stat_fp_f
            tc_ppm += c.stat_pp_m
            tc_ppf += c.stat_pp_f
            tc_pp += c.stat_pp_m + c.stat_pp_f
            tc_npm += c.stat_np_m
            tc_npf += c.stat_np_f
            tc_np += c.stat_np_m + c.stat_np_f
            tc_sum += c.stat_paid

    return render_to_response(
        "admin/courses_index.html",
        RequestContext(
            request,
            {
                "form": form,
                "course_list": course_list,
                "tc_em": tc_em,
                "tc_ef": tc_ef,
                "tc_e": tc_e,
                "tc_pm": tc_pm,
                "tc_pf": tc_pf,
                "tc_p": tc_p,
                "tc_ppm": tc_ppm,
                "tc_ppf": tc_ppf,
                "tc_pp": tc_pp,
                "tc_npm": tc_npm,
                "tc_npf": tc_npf,
                "tc_np": tc_np,
                "tc_sum": tc_sum,
            },
        ),
    )
Пример #13
0
 def __init__(self, data=None, **kwargs):
     super(self.__class__, self).__init__(data, **kwargs)
     self.fields["season_key"]._set_choices(Season.get_SEASON_CHOICES())
Пример #14
0
def index(request):
    season_list=Season.list()

    return render_to_response('admin/seasons_index.html', RequestContext(request, { 'season_list': season_list }))
Пример #15
0
def import_students(request,file_id, seq_id=None):

    f = FileBlob.get_by_id(int(file_id))

    if f is None:
        raise Http404

    d = cStringIO.StringIO(f.data)
    r = UnicodeReader(d)
   
    form = None
    course = None 
    
    season = None
    cskey = request.session.get('course_season_key',None)
    if not cskey is None:
        season =  Season.get(str(cskey))
    folder = None
    cfkey = request.session.get('course_folder_key',None)
    if not cfkey is None:
        folder =  Folder.get(str(cfkey))    
    
    logging.info('cfkey %s cskey %s'%(cskey,cfkey))
    logging.info('folder: %s'%folder)
    logging.info('season: %s'%season)
    if folder and season:
        cc = Course.get_COURSE_FILTER_CHOICES(str(season.key()),str(folder.key()))
    else:
        cc = Course.get_COURSE_CHOICES()
    
    
    logging.info('cc:%s'%cc)
    
    if request.method == 'POST':
        form = TargetPickForm(request.POST,courses = cc)
    
    info = []
    seq = 0
    curr = None
    line = 0
    for row in r:
        if len(row)>6 and (row[0].startswith('#export kurz') or row[0].startswith('#zaloha kurz')):
            logging.info(row)
            if not curr is None:
                curr["end_line"]=line
                info.append(curr)
            curr = dict()
            curr["seq"]=seq
            seq+=1
            curr["start_line"]=line+1
            curr["code"]=row[1]
            curr["folder"]=row[2]
            curr["season"]=row[3]
            curr["students"]=0
            curr["info"]=row[6]
        elif len(row)>19 and not row[0].startswith('#'):
            curr["students"]+=1
        line+=1 

    if not curr is None:
        curr["end_line"]=line
        info.append(curr)
    else:
    	### no header detected.
    	curr = dict()
    	curr["seq"]=0
    	curr["start_line"]=0
    	curr["end_line"]=line
    	info.append(curr)
    	
    	

    selected = None
    if not seq_id is None:
        for c in info:
            if c["seq"]==int(seq_id):
                selected = c 
                break
        
        if selected is None:
            raise Http404

        if form is None: 
            form = TargetPickForm(courses = cc, initial={'start_line':selected['start_line'], 'end_line':selected['end_line']})
        else:
            if form.is_valid():
                course = Course.get(form.cleaned_data['course_key'])
                if course is None:
                    raise Http404
                

    return render_to_response('admin/import_students.html', RequestContext(request, {  'info': info, 'form':form, 'selected':selected, 'course':course, 'season':season, 'folder':folder}))
Пример #16
0
def index(request):


    season = None
    if request.method == 'POST':
        form = SeasonFilterForm(request.POST)
        if form.is_valid():
            season = Season.get(str(form.cleaned_data['season_key']))
            if not season is None:
                request.session['course_season_key']=str(season.key())
    else:
        cskey = request.session.get('course_season_key',None)
        if not cskey is None:
            season =  Season.get(str(cskey))

        if (season is None):
            form = SeasonFilterForm()
        else:
            form = SeasonFilterForm({'season_key':str(season.key())})


    logging.info(season)
    prev_season = None
    if not season is None:
        prev_season = season.get_prev()
    
    logging.info(prev_season)

    prev_prev_season = None
    if not prev_season is None:
        prev_prev_season = prev_season.get_prev()

    logging.info(prev_prev_season)



    folder_stats = []
    if not season is None:
    	folder_stats = list(FolderStats.list_by_season(str(season.key())))

    if not prev_season is None:
        prev_folder_stats = FolderStats.list_by_season(str(prev_season.key()))
        for fs,ps in izip(folder_stats,prev_folder_stats):
            fs.prev_season_sum_1 = ps.stat_sum


    if not prev_prev_season is None:
        prev_prev_folder_stats = FolderStats.list_by_season(str(prev_prev_season.key()))
        for fs,ps in izip(folder_stats,prev_prev_folder_stats):
            fs.prev_season_sum_2 = ps.stat_sum


    ts_em = 0
    ts_ef = 0
    ts_e = 0

    ts_pm = 0
    ts_pf = 0
    ts_p = 0

    ts_ppm = 0 
    ts_ppf = 0
    ts_pp = 0

    ts_npm = 0
    ts_npf = 0
    ts_np = 0

    ts_sum = 0

    ts_prev_s1 = 0
    ts_prev_s2 = 0

    for fs in folder_stats:
        ts_em = ts_em + fs.stat_em
        ts_ef = ts_ef + fs.stat_ef
        ts_e = ts_e + fs.stat_e

        ts_pm = ts_pm + fs.stat_pm
        ts_pf = ts_pf + fs.stat_pf
        ts_p = ts_p + fs.stat_p

        ts_ppm = ts_ppm + fs.stat_ppm
        ts_ppf = ts_ppf + fs.stat_ppf
        ts_pp = ts_pp + fs.stat_pp
 
        ts_npm = ts_npm + fs.stat_npm
        ts_npf = ts_npf + fs.stat_npf
        ts_np = ts_np + fs.stat_np

        ts_sum = ts_sum + fs.stat_sum

        ts_prev_s1 = ts_prev_s1 + fs.prev_season_sum_1
        ts_prev_s2 = ts_prev_s2 + fs.prev_season_sum_2

    return render_to_response('admin/index.html', RequestContext(request, {
    	'form': form, 'folder_stats':folder_stats, 
        'ts_em': ts_em, 'ts_ef': ts_ef, 'ts_e': ts_e,
        'ts_pm': ts_pm, 'ts_pf': ts_pf, 'ts_p': ts_p,
        'ts_ppm': ts_ppm, 'ts_ppf': ts_ppf, 'ts_pp': ts_pp,
        'ts_npm': ts_npm, 'ts_npf': ts_npf, 'ts_np': ts_np,
        'ts_sum':ts_sum, 'ts_prev_s1': ts_prev_s1, 'ts_prev_s2': ts_prev_s2,
        's': season, 'prev_s1': prev_season, 'prev_s2': prev_prev_season
    	}))