Example #1
0
def get_offer_list(folder_id = None):

    if folder_id is None:
        folders_query=Folder.list()
    else:
        folders_query = []
        f = Folder.get_by_id(int(folder_id))
        if f:
            folders_query.append(f)
    
    courses_query=Course.list_for_enroll()  

    folders= set([])
    courses = []
    result = []
    for course in courses_query:
        folders.add(course.folder_key)
        courses.append(course)

    logging.info(folders)
    logging.info(courses)

    for folder in folders_query:
        fk = str(folder.key())
        logging.info('fk:%s'%fk)
        if fk in folders:
            logging.info('in')
            sub_list = [c for c in courses if fk==c.folder_key] 
            result.append({'folder':folder, 'courses':sub_list })
            pass
    return result
Example #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}))
Example #3
0
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')
Example #4
0
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}))
Example #5
0
def delete(request, folder_id):

    folder  = Folder.get_by_id(int(folder_id))
    if folder is None:
        raise Http404

    folder.delete()
    rebuild_folders() 
    return redirect('../..')
Example #6
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')
Example #7
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}))
Example #8
0
def get_offer_list2():
    courses_query=Course.list_for_enroll()  
    folder_courses= dict()
    result = []
    for course in courses_query:
        folder_courses.setdefault(course.folder_key,[]).append(course)         

    result=[]
    folders_query=Folder.list()
    for folder in folders_query:
        if str(folder.key()) in folder_courses:
            result.append({'folder':folder, 'courses':folder_courses[str(folder.key())]})
            
    logging.info(result)
   
    return result
Example #9
0
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}))
Example #10
0
 def valid_value(self, value):
     self._set_choices(Folder.get_FOLDER_CHOICES())
     return super(FolderField, self).valid_value(value)
Example #11
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,
            },
        ),
    )
Example #12
0
 def __init__(self, data=None, **kwargs):
     super(self.__class__, self).__init__(data, **kwargs)
     self.fields["folder_key"]._set_choices(Folder.get_FOLDER_CHOICES())
     self.fields["season_key"]._set_choices(Season.get_SEASON_CHOICES())
Example #13
0
def index(request):
    folder_list=Folder.list()

    return render_to_response('admin/folders_index.html', RequestContext(request, { 'folder_list': folder_list }))
Example #14
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}))