Example #1
0
def description_meta_item_relation_combine_add(request,description_meta_id):
    session = Session()
    item_relation_objects = session.query(ItemRelation).all()
    description_meta_object = session.query(DescriptionMeta).get(description_meta_id)
    session.close()
    
    if description_meta_object is None:
        raise Http404
    
    item_relation_choice = [(obj.id,obj.title) for obj in item_relation_objects]  
   
    initial={"item_relation_choice":item_relation_choice,}
        
    if request.method == 'POST':
        form = DescriptionMetaItemRelationCombinationForm(request.POST,initial=initial,auto_id=False)
        if form.is_valid():
            id = form.save(description_meta_id = description_meta_id)
            if id is not None:
                data = {'template':'description/description_meta_list.html',
                     'ItemClass':DescriptionMeta,
                     'page':1,
                     }
                return HttpResponseRedirect(reverse('description_meta_list', kwargs=data)) 
    else:
        form = DescriptionMetaItemRelationCombinationForm(initial=initial,auto_id=False)
        
    data = {'form': form,'description_meta_object':description_meta_object}
    
    return render_to_response("description/description_meta_item_relation_combine_add.html", data, context_instance=RequestContext(request)) 
Example #2
0
def description_type_detail(request,description_type_id):
    session = Session() 
    
    description_type_object = session.query(DescriptionType).get(description_type_id)
    description_meta_object = session.query(DescriptionMeta).get(description_type_object.description_meta_id)

    if description_type_object is None or description_meta_object is None:
        raise Http404
    objs_in_relation = session.query(DescriptionTypeItemRelationCombination).\
    filter(DescriptionTypeItemRelationCombination.description_type_id == description_type_id).\
    order_by(DescriptionTypeItemRelationCombination.show_order)

    description_type_item_relation_detail_object_list = []
    for obj in objs_in_relation:
        item_relation_object = session.query(ItemRelation).get(obj.item_relation_id)
        item_relation_detail_object = DescriptionTypeItemRelationViewDetail(item_relation_id = item_relation_object.id,                                                            
                                                             item_relation_title = item_relation_object.title,
                                                             multi_number = obj.multi_number, 
                                                             show_order = obj.show_order,
                                                             )
        description_type_item_relation_detail_object_list.append(item_relation_detail_object)
    session.close()
    

        
    data = {'description_type_object':description_type_object,
            'description_meta_object':description_meta_object,
            'detail_list':description_type_item_relation_detail_object_list}
    return render_to_response("description/description_type_detail.html", data, context_instance=RequestContext(request)) 
Example #3
0
def item_relation_combine_add(request,item_relation_id):
    session = Session()
    item_objects = session.query(Item).all()
    item_relation_object = session.query(ItemRelation).get(item_relation_id)
    session.close()
    
    if item_relation_object is None:
        raise Http404
    item_info_list = []
    for item in item_objects:
        item_info_object = ItemRelationCombinationFormInfo(item_id=item.id,item_title=item.title)
        item_info_list.append(item_info_object)
    
    initial={"item_info_list":item_info_list,}    
    if request.method == 'POST':
        form = ItemRelationCombinationForm(request.POST,initial=initial,auto_id=False)
        if form.is_valid():
            id = form.save(item_relation_id = item_relation_id)
            if id is not None:
                data = {'template':'description/item_relation_list.html',
                     'ItemClass':ItemRelation,
                     'page':1,
                     }
                return HttpResponseRedirect(reverse('item_relation_list', kwargs=data)) 
    else:
        form = ItemRelationCombinationForm(initial=initial,auto_id=False)
        
    data = {'form': form,'item_relation_id':item_relation_id}
    
    return render_to_response("description/item_relation_combine_add.html", data, context_instance=RequestContext(request)) 
Example #4
0
 def save(self, commit=True):
     self.user.set_password(self.cleaned_data['new_password1'])
     if commit:
         session = Session()
         session.query(User).filter_by(id=self.user.id).update({"password": self.user.password})
         session.commit()
         session.close()
     return self.user
Example #5
0
    def save(self, commit=True, update=False,item_id=None):
        session = Session()
        
        if update:
            item = session.query(Item).get(item_id)
        else:
            item = Item()

        item.title = self.cleaned_data['title']        
        
        if not update:
            session.add(item)
        session.commit()        
        item.id = item.id
        #新建一个item 自动新建一个关系 和一个组合
        item_relation = ItemRelation(title = item.title)
        session.add(item_relation)
        session.commit()       

        item_relation.id = item_relation.id
        item_relation_combination = ItemRelationCombination(item_id =item.id,                                                                      
                                                            item_relation_id = item_relation.id,
                                                            combination_number = 1,
                                                            show_order = 1,
                                                            )
        session.add(item_relation_combination)
        session.commit()
        session.close()
        
        return item
Example #6
0
def description_type_item_relation_combine_add(request,description_type_id):
    session = Session()
    description_type_object = session.query(DescriptionType).get(description_type_id)
    
    if description_type_object is None:
        raise Http404
    description_meta_id = description_type_object.description_meta_id
    
    description_meta_object = session.query(DescriptionMeta).get(description_meta_id)
    if description_meta_object is None:
        raise Http404
    
    objs_in_relation = session.query(DescriptionMetaItemRelationCombination).filter(DescriptionMetaItemRelationCombination.description_meta_id == description_meta_id)

    form_info_list = []
    for obj in objs_in_relation:
        item_relation_object = session.query(ItemRelation).get(obj.item_relation_id)
        objs_in_relation_combination = session.query(ItemRelationCombination).filter(ItemRelationCombination.item_relation_id == item_relation_object.id)
        relation_items_number = 0
        for o in objs_in_relation_combination:
            relation_items_number += o.combination_number
        form_info_obj = DescriptionMetaItemRelationCombinationFormInfo(item_relation_id = item_relation_object.id,                                                            
                                                             item_relation_title = item_relation_object.title,
                                                             relation_items_number = relation_items_number
                                                             )
        form_info_list.append(form_info_obj)
    session.close()    

     
   
    initial={"form_info_list":form_info_list,}
        
    if request.method == 'POST':
        form = DescriptionTypeItemRelationCombinationForm(request.POST,initial=initial,auto_id=False)
        if form.is_valid():
            id = form.save(description_type_id = description_type_id)
            if id is not None:
                 
                data = {'description_meta_id':description_meta_id,'page':1}
                return HttpResponseRedirect(reverse('description_type_list', kwargs=data)) 
    else:
        form = DescriptionTypeItemRelationCombinationForm(initial=initial,auto_id=False)
        
    data = {'form': form,'description_type_id':description_type_id}
    
    return render_to_response("description/description_type_item_relation_combine_add.html", data, context_instance=RequestContext(request)) 
Example #7
0
def meta_delete(request, meta_id):
    session = Session()
    meta = session.query(ProblemMeta).get(int(meta_id))
    session.delete(meta)
    session.commit()
    session.close()

    return HttpResponseRedirect(reverse('meta_list', kwargs={'page': 1})) 
Example #8
0
def description_type_list(request, description_meta_id, page=1):
    session = Session()
    description_meta_object = session.query(DescriptionMeta).get(description_meta_id)
    session.close()
    if description_meta_object is None:
        raise Http404 
    description_type_objects = session.query(DescriptionType).filter(DescriptionType.description_meta_id == description_meta_id)

    paginator = Paginator(description_type_objects, settings.METAS_PER_PAGE)
    
    try:
        objects = paginator.page(description_type_objects)
    except (EmptyPage, InvalidPage):
        objects = paginator.page(paginator.num_pages)
    data = {"objects": objects,"description_meta_object":description_meta_object}
    return render_to_response("description/description_type_list.html", data,
                              context_instance=RequestContext(request))
Example #9
0
def problem_detail(request, prob_id):
    session = Session()
    prob = session.query(Problem).get(int(prob_id))
    if prob is None:
        session.close()
        raise Http404
    res = render_to_response('problem/problem_detail.html', {"prob": prob},
                             context_instance=RequestContext(request))
    session.close()
    return res
Example #10
0
    def authenticate(self, username=None, password=None):
        session = Session()
        user = session.query(User).filter_by(username=username).first()
        
        if user is not None:
            if not user.check_password(password):
                user = None     

        session.close()
        return user
Example #11
0
 def save(self, problem=None, user=None):
     if problem is None:
         return
     sub = Submission()
     sub.status = STATUS.pending
     sub.problem_id = problem.id
     sub.code_type = self.cleaned_data["code_type"]
     sub.code = self.cleaned_data["code_text"]
     sub.user = user
     sub.length = len(sub.code)
     session = Session()
     session.query(Problem).filter_by(id = problem.id).update({"submit": Problem.submit+1})
     session.query(User).filter_by(id = user.id).update({"submit": User.submit+1})
     session.add(sub)
     session.commit()
     self.handle_code(sub, self.cleaned_data["code_file"])
     session.close()
     
     return sub
Example #12
0
def item_relation_detail(request,item_relation_id):
    session = Session() 
    
    item_relation_object = session.query(ItemRelation).get(item_relation_id)
    items_in_relation = session.query(ItemRelationCombination).filter(ItemRelationCombination.item_relation_id == item_relation_id)
    item_relation_detail_object_list = []
    for i_in_relation in items_in_relation:
        item_object = session.query(Item).get(i_in_relation.item_id)
        item_relation_detail_object = ItemRelationViewDetail(item_id = item_object.id,                                                            
                                                             item_title=item_object.title,
                                                             combination_number = i_in_relation.combination_number, 
                                                             show_order = i_in_relation.show_order,
                                                             )
        item_relation_detail_object_list.append(item_relation_detail_object)
    session.close()
    if item_relation_object is None:
        raise Http404
     
    data = {'item_relation_object':item_relation_object,'detail_list':item_relation_detail_object_list}
    return render_to_response("description/item_relation_detail.html", data, context_instance=RequestContext(request)) 
Example #13
0
def meta_config_detail(request, detailClass, object_id, template):
    session = Session()
    object_detail = session.query(detailClass).get(int(object_id))
    
    if object_detail is None:
        session.close()
        raise Http404
    res = render_to_response(template, {"object_detail": object_detail},
                             context_instance=RequestContext(request))
    session.close()
    
    return res
Example #14
0
 def clean_username(self):
     # Since User.username is unique, this check is redundant,
     # but it sets a nicer error message than the ORM. See #13147.
     username = self.cleaned_data["username"]
     
     session = Session()
     c_users = session.query(User).filter_by(username=username).count()
     session.close()
     if c_users > 0:
         raise forms.ValidationError(self.error_messages['duplicate_username'])
     else:
         return username
Example #15
0
def meta_list(request, page=1):
    session = Session()
    metas_all = session.query(ProblemMeta).all()
    session.close()
    
    paginator = Paginator(metas_all, settings.METAS_PER_PAGE)
    
    try:
         metas = paginator.page(metas_all)
    except (EmptyPage, InvalidPage):
        metas = paginator.page(paginator.num_pages)
    return render_to_response('problem/meta_list.html', {"metas": metas},
                              context_instance=RequestContext(request))
Example #16
0
def meta_config_edit(request, configForm, editObjectClass, meta_id, object_id,
                     template_name=None, redirect_to=None):
    session = Session()
    meta = session.query(ProblemMeta).get(meta_id)
    if request.method == 'POST':
        request.POST.update({"problem_meta_id":meta_id})
        form = configForm(request.POST, request.FILES)
        
        if form.is_valid():
            obj = form.save(meta_id=meta_id, update=True, object_id=object_id)
            if redirect_to is None:
                res = HttpResponseRedirect(reverse('meta_detail', kwargs={'meta_id': meta_id}))
            else:
                res = HttpResponseRedirect(reverse(redirect_to, kwargs={'id': obj.id}))
            session.close()
            return res
    else:
        session = Session()
        object_detail = session.query(editObjectClass).get(int(object_id))
        
        if object_detail is None:
            session.close()
            raise Http404
        
        edit_object_class_attrs = [attr for attr in editObjectClass.__dict__ if attr[0] != '_']
        initial_data = {}
        
        for attr in edit_object_class_attrs:
            initial_data[attr] = getattr(object_detail,attr)
        
        form = configForm(initial=initial_data)
    res = render_to_response(template_name, {
            'form': form, "meta":meta},
            context_instance=RequestContext(request))
    session.close()
    
    return res 
    
Example #17
0
def show_list(request, template, ItemClass, page=1):
    session = Session()
    objects_all = session.query(ItemClass).all()
    session.close()
    
    paginator = Paginator(objects_all, settings.METAS_PER_PAGE)
    
    try:
        objects = paginator.page(objects_all)
    except (EmptyPage, InvalidPage):
        objects = paginator.page(paginator.num_pages)
    data = {"objects": objects}
    return render_to_response(template, data,
                              context_instance=RequestContext(request))
Example #18
0
def submit(request, prob_id):
    session = Session()
    prob = session.query(Problem).get(int(prob_id))
    if request.method == "POST":
        form = SubmissionForm(request.POST, request.FILES)
        if form.is_valid():
            form.save(problem=prob, user=request.user)
            return HttpResponseRedirect(reverse('status', kwargs={'page': 1}))
    else:
        form = SubmissionForm()
    res = render_to_response('problem/submit.html', {"prob": prob, "form": form},
                             context_instance=RequestContext(request))
    session.close()
    return res
Example #19
0
def meta_config_delete(request, deleteObjectClass, meta_id, object_id):
    session = Session()
    object_delete = session.query(deleteObjectClass).get(int(object_id))
    if object_delete is None:
        session.close()
        raise Http404
    
    if hasattr(object_delete, "on_delete"):
        object_delete.on_delete()
        
    session.delete(object_delete)
    session.commit()
    session.close()
    return HttpResponseRedirect(reverse('meta_detail', kwargs={'meta_id': meta_id})) 
Example #20
0
def problem_list_admin(request, page=1):
    session = Session()
    prob_all = session.query(Problem).all()
    
    paginator = Paginator(prob_all, settings.METAS_PER_PAGE)
    
    try:
         probs = paginator.page(prob_all)
    except (EmptyPage, InvalidPage):
        probs = paginator.page(paginator.num_pages)
    res = render_to_response('problem/problem_list_admin.html', {"probs": probs},
                             context_instance=RequestContext(request))
    session.close()
    
    return res
Example #21
0
def status(request, page=1):
    session = Session()
    sub_all = session.query(Submission).order_by(Submission.sub_time.desc())
    
    paginator = Paginator(sub_all, 100)#settings.METAS_PER_PAGE)
    
    try:
         subs = paginator.page(sub_all)
    except (EmptyPage, InvalidPage):
        subs = paginator.page(paginator.num_pages)
    res = render_to_response('problem/status_list.html', {"subs": subs},
                             context_instance=RequestContext(request))
    session.close()
    
    return res
Example #22
0
 def save(self, commit=True, meta_id=None, update=False, object_id=None):
     session = Session()        
     if update:
         output_check_config = session.query(OutputCheckConfig).get(int(object_id))
     else:
         output_check_config = OutputCheckConfig() 
     output_check_config.problem_meta_id = meta_id
     output_check_config.check_method = self.cleaned_data['check_method']   
     
     if not update:
         session.add(output_check_config)
     session.commit()
     session.close()
     
     return  output_check_config
Example #23
0
 def clean_email(self):
     """
     Validates that an active user exists with the given email address.
     """
     email = self.cleaned_data["email"]
     session = Session()
     self.users_cache = session.query(User).filter_by(email=email,
                                            is_active=True)
     session.close()
     if not len(self.users_cache):
         raise forms.ValidationError(self.error_messages['unknown'])
     if any((user.password == UNUSABLE_PASSWORD)
            for user in self.users_cache):
         raise forms.ValidationError(self.error_messages['unusable'])
     return email
Example #24
0
def meta_edit(request, meta_id):
    session = Session()
    meta = session.query(ProblemMeta).get(meta_id)
    if meta is None:
        session.close()
        raise Http404
    if request.method == "POST":
        form = ProblemMetaForm(request.POST)
        if form.is_valid():
            meta = form.save(update=True, meta_id=meta_id)
            return HttpResponseRedirect(reverse('meta_detail', kwargs={'meta_id': meta.id}))
    else:
        form = ProblemMetaForm(initial={"title":meta.title, "judge_flow":meta.judge_flow})
   
    data = {'form': form}
    return render_to_response("problem/problem_meta_edit.html", data, context_instance=RequestContext(request)) 
Example #25
0
 def save(self, commit=True, meta_id=None, update=False, object_id=None):
     session = Session()
     if update:
         compile_config = session.query(CompileConfig).get(int(object_id))
     else:
         compile_config = CompileConfig() 
     compile_config.problem_meta_id = meta_id      
     compile_config.code_type = self.cleaned_data['code_type']
     compile_config.config = self.cleaned_data['config']        
     
     if not update:
         session.add(compile_config)
     session.commit()
     session.close()
     
     return compile_config
Example #26
0
    def save(self, commit=True, update=False,item_relation_id=None):
        session = Session()
        
        if update:
            item_relation = session.query(ItemRelation).get(item_relation_id)
        else:
            item_relation = ItemRelation()

        item_relation.title = self.cleaned_data['title']        
        
        if not update:
            session.add(item_relation)
        session.commit()        
        item_relation.id = item_relation.id
        session.close()
        
        return item_relation
Example #27
0
    def save(self, commit=True, update=False,description_meta_id=None):
        session = Session()
        
        if update:
            description_meta = session.query(DescriptionMeta).get(description_meta_id)
        else:
            description_meta = DescriptionMeta()

        description_meta.title = self.cleaned_data['title']        
        
        if not update:
            session.add(description_meta)
        session.commit()        
        description_meta.id = description_meta.id
        session.close()
        
        return description_meta
Example #28
0
 def save(self, commit=True, meta_id=None, update=False, object_id=None):
     session = Session()
     if update:
         run_config = session.query(RuntimeConfig).get(int(object_id))
     else:
         run_config = RuntimeConfig() 
     run_config.problem_meta_id = meta_id
     run_config.code_type = self.cleaned_data['code_type'] 
     run_config.memory = self.cleaned_data['memory'] 
     run_config.time = self.cleaned_data['time']   
     
     if not update:
         session.add(run_config)
     session.commit()
     session.close()
     
     return  run_config
Example #29
0
 def save(self, commit=True, meta_id=None, update=False, object_id=None):
     session = Session()
     if update:
         input_output_data = session.query(InputOutputData).get(int(object_id))
     else:
         input_output_data = InputOutputData() 
     input_output_data.problem_meta_id = meta_id   
     input_output_data.name = self.cleaned_data['name']
     input_file = self.cleaned_data['input_file']
     output_file = self.cleaned_data['output_file']
     
     if not update:
         session.add(input_output_data)
     session.commit()        
     save_io_file(input_file, output_file, input_output_data, update)
     session.close()
     
     return input_output_data
Example #30
0
 def save(self, commit=True, update=False, meta_id=0):
     session = Session()
     if update:
         problem_meta = session.query(ProblemMeta).get(meta_id)
     else:
         problem_meta = ProblemMeta()
         
     problem_meta.title = self.cleaned_data['title']
     job_list = ""
     for job in self.cleaned_data['judge_flow']:
         job_list += JUDGE_FLOW_MARK_SEPARATOR + job
     problem_meta.judge_flow = job_list
     session.expire_on_commit = False
     if not update:
         session.add(problem_meta)
     session.commit()
     session.close()
     
     return problem_meta