def edit(request, page_info,id): contest = page_info.contest subpage = Subpage.filter(SubpageStruct(id=int(id)))[0] rights.roles = [Security.anonymous(),contest.contestant_role,None] rights.objects = [subpage,subpage,None] rights.check() class ContestSubpageEditForm(forms.Form): name = forms.CharField(label="Subpage name") visibility = rights.field() fid = SatoriSignedField(required=True) # (temporary) folder id content = forms.CharField(required=False, widget=forms.Textarea, label="Content") if request.method=="POST": form = ContestSubpageEditForm(request.POST) if form.is_valid(): if 'delete' in request.POST.keys(): subpage.delete() return HttpResponseRedirect(reverse('contest_manage',args=[contest.id])) data = form.cleaned_data fid = data['fid'] for rfile in request.POST: if rfile.startswith('rfile'): subpage.content_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): subpage.content_files_set_blob_path(os.path.basename(ufile), ufile) try: subpage.modify(SubpageStruct(name=data['name'], content=data['content'])) vis = data['visibility'] rights.set(vis) except SphinxException as sphinxException: attachments = valid_attachments(subpage.content_files_get_list()) form._errors['content'] = form.error_class([sphinxException]) return render_to_response('subpage_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'page_info' : page_info, 'subpage' : subpage }) return HttpResponseRedirect(reverse('contest_subpage', args=[page_info.contest.id, subpage.id])) else: vis = unicode(rights.current) fid = mkdtemp() form = ContestSubpageEditForm(initial={ 'name' : subpage.name, 'content' : subpage.content, 'fid' : fid, 'visibility' : vis }) attachments = valid_attachments(subpage.content_files_get_list()) return render_to_response('subpage_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'page_info' : page_info, 'subpage' : subpage })
def edit(request, page_info,id): message = Subpage.filter(SubpageStruct(id=int(id)))[0] if request.method=="POST": if 'delete' in request.POST.keys(): message.delete() return HttpResponseRedirect(reverse('contest_news',args=[page_info.contest.id])) form = ContestNewsEditForm(request.POST) if form.is_valid(): data = form.cleaned_data fid = data['fid'] for rfile in request.POST: if rfile.startswith('rfile'): message.content_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): message.content_files_set_blob_path(os.path.basename(ufile), ufile) try: message.modify(SubpageStruct(name=data['name'], content=data['content'], is_sticky=data['is_sticky'], is_public=data['is_public'])) if not data['is_public']: Privilege.revoke(Security.anonymous(),message,'VIEW') Privilege.grant(page_info.contest.contestant_role,message,'VIEW') else: Privilege.revoke(page_info.contest.contestant_role,message,'VIEW') Privilege.grant(Security.anonymous(),message,'VIEW') except SphinxException as sphinxException: attachments = valid_attachments(message.content_files_get_list()) form._errors['content'] = form.error_class([sphinxException]) return render_to_response('news_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'message' : message, 'page_info' : page_info }) return HttpResponseRedirect(reverse('contest_news',args=[page_info.contest.id])) else: fid = mkdtemp() form = ContestNewsEditForm(initial={ 'name' : message.name, 'content' : message.content, 'fid' : fid, 'is_public' : message.is_public, 'is_sticky' : message.is_sticky}) attachments = valid_attachments(message.content_files_get_list()) return render_to_response('news_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'message' : message, 'page_info' : page_info })
def edit(request, page_info, id): subpage = Subpage.filter(SubpageStruct(id=int(id)))[0] rightfield.roles = [Security.anonymous(),Security.authenticated(),None] rightfield.objects = [subpage,subpage,None] rightfield.rights = ['VIEW','VIEW',''] rightfield.check() if request.method=="POST": if 'delete' in request.POST.keys(): subpage.delete() return HttpResponseRedirect(reverse('news')) form = GlobalSubpageEditForm(request.POST) if form.is_valid(): data = form.cleaned_data fid = data['fid'] for rfile in request.POST: if rfile.startswith('rfile'): subpage.content_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): subpage.content_files_set_blob_path(os.path.basename(ufile), ufile) try: subpage.modify(SubpageStruct(name=data['name'], content=data['content'], is_public=data['is_public'])) rightfield.set(data['visibility']) except SphinxException as sphinxException: attachments = valid_attachments(subpage.content_files_get_list()) form._errors['content'] = form.error_class([sphinxException]) return render_to_response('subpage_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'page_info' : page_info, 'subpage' : subpage }) return HttpResponseRedirect(reverse('subpage',args=[subpage.id])) else: fid = mkdtemp() form = GlobalSubpageEditForm(initial={ 'name' : subpage.name, 'content' : subpage.content, 'visibility' : unicode(rightfield.current), 'fid' : fid, 'is_public' : subpage.is_public }) attachments = valid_attachments(subpage.content_files_get_list()) return render_to_response('subpage_edit.html', { 'attachments' : attachments, 'fid' : fid, 'form' : form, 'page_info' : page_info, 'subpage' : subpage })
def view(request, page_info,id): sinfo = Web.get_subpage_info(Subpage(int(id))) attachments = valid_attachments(sinfo.subpage.content_files_get_list()) content = fill_image_links(unicode(sinfo.html), 'Subpage', id, 'content_files') can_edit = sinfo.is_admin return render_to_response('subpage.html', { 'attachments' : attachments, 'can_edit' : can_edit, 'content' : content, 'page_info' : page_info, 'subpage' : sinfo.subpage })
def edit(request, page_info, id): contest = page_info.contest subpage = Subpage.filter(SubpageStruct(id=int(id)))[0] rights.roles = [Security.anonymous(), contest.contestant_role, None] rights.objects = [subpage, subpage, None] rights.check() class ContestSubpageEditForm(forms.Form): name = forms.CharField(label="Subpage name") visibility = rights.field() fid = SatoriSignedField(required=True) # (temporary) folder id content = forms.CharField(required=False, widget=forms.Textarea, label="Content") if request.method == "POST": form = ContestSubpageEditForm(request.POST) if form.is_valid(): if 'delete' in request.POST.keys(): subpage.delete() return HttpResponseRedirect( reverse('contest_manage', args=[contest.id])) data = form.cleaned_data fid = data['fid'] for rfile in request.POST: if rfile.startswith('rfile'): subpage.content_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): subpage.content_files_set_blob_path(os.path.basename(ufile), ufile) try: subpage.modify( SubpageStruct(name=data['name'], content=data['content'])) vis = data['visibility'] rights.set(vis) except SphinxException as sphinxException: attachments = valid_attachments( subpage.content_files_get_list()) form._errors['content'] = form.error_class([sphinxException]) return render_to_response( 'subpage_edit.html', { 'attachments': attachments, 'fid': fid, 'form': form, 'page_info': page_info, 'subpage': subpage }) return HttpResponseRedirect( reverse('contest_subpage', args=[page_info.contest.id, subpage.id])) else: vis = unicode(rights.current) fid = mkdtemp() form = ContestSubpageEditForm( initial={ 'name': subpage.name, 'content': subpage.content, 'fid': fid, 'visibility': vis }) attachments = valid_attachments(subpage.content_files_get_list()) return render_to_response( 'subpage_edit.html', { 'attachments': attachments, 'fid': fid, 'form': form, 'page_info': page_info, 'subpage': subpage })
def edit(request, page_info, id): message = Subpage.filter(SubpageStruct(id=int(id)))[0] if request.method == "POST": if 'delete' in request.POST.keys(): message.delete() return HttpResponseRedirect( reverse('contest_news', args=[page_info.contest.id])) form = ContestNewsEditForm(request.POST) if form.is_valid(): data = form.cleaned_data fid = data['fid'] for rfile in request.POST: if rfile.startswith('rfile'): message.content_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): message.content_files_set_blob_path(os.path.basename(ufile), ufile) try: message.modify( SubpageStruct(name=data['name'], content=data['content'], is_sticky=data['is_sticky'], is_public=data['is_public'])) if not data['is_public']: Privilege.revoke(Security.anonymous(), message, 'VIEW') Privilege.grant(page_info.contest.contestant_role, message, 'VIEW') else: Privilege.revoke(page_info.contest.contestant_role, message, 'VIEW') Privilege.grant(Security.anonymous(), message, 'VIEW') except SphinxException as sphinxException: attachments = valid_attachments( message.content_files_get_list()) form._errors['content'] = form.error_class([sphinxException]) return render_to_response( 'news_edit.html', { 'attachments': attachments, 'fid': fid, 'form': form, 'message': message, 'page_info': page_info }) return HttpResponseRedirect( reverse('contest_news', args=[page_info.contest.id])) else: fid = mkdtemp() form = ContestNewsEditForm( initial={ 'name': message.name, 'content': message.content, 'fid': fid, 'is_public': message.is_public, 'is_sticky': message.is_sticky }) attachments = valid_attachments(message.content_files_get_list()) return render_to_response( 'news_edit.html', { 'attachments': attachments, 'fid': fid, 'form': form, 'message': message, 'page_info': page_info })
def edit(request, page_info, id): mapping = ProblemMapping(int(id)) problem = mapping.problem suites = TestSuite.filter(TestSuiteStruct(problem=problem)) pdf_file = mapping.statement_files_get("pdf") if request.method == "POST": form = ProblemAddForm(data=request.POST, files=request.FILES, suites=suites) if form.is_valid(): data = form.cleaned_data fid = data['fid'] if 'delete' in request.POST.keys(): try: mapping.delete() except: return HttpResponseRedirect( reverse('contest_problems_edit', args=[page_info.contest.id, id])) return HttpResponseRedirect( reverse('contest_problems', args=[page_info.contest.id])) if 'remove_pdf' in request.POST.keys(): mapping.statement_files_delete('pdf') return HttpResponseRedirect( reverse('contest_problems_edit', args=[page_info.contest.id, id])) for rfile in request.POST: if rfile.startswith('rfile'): mapping.statement_files_delete(request.POST[rfile]) for ufile in glob.glob(os.path.join(fid, '*')): mapping.statement_files_set_blob_path(os.path.basename(ufile), ufile) pdf = form.cleaned_data.get('pdf', None) if pdf: writer = Blob.create(pdf.size) writer.write(pdf.read()) phash = writer.close() mapping.statement_files_set_blob_hash('pdf', phash) try: mapping.modify( ProblemMappingStruct(code=data['code'], title=data['title'], statement=data['statement'], group=data['group'], description=data['description'], default_test_suite=TestSuite( int(data['suite'])))) except SphinxException as sphinxException: attachments = valid_attachments( mapping.statement_files_get_list()) form._errors['statement'] = form.error_class([sphinxException]) return render_to_response( 'problems_add.html', { 'attachments': attachments, 'fid': fid, 'form': form, 'page_info': page_info, 'base': problem, 'editing': mapping }) if mapping.statement: return HttpResponseRedirect( reverse('contest_problems_view', args=[page_info.contest.id, id])) else: return HttpResponseRedirect( reverse('contest_problems', args=[page_info.contest.id])) else: fid = mkdtemp() form = ProblemAddForm(initial={ 'code': mapping.code, 'title': mapping.title, 'statement': mapping.statement, 'description': mapping.description, 'group': mapping.group, 'fid': fid, 'suite': mapping.default_test_suite.id }, suites=suites) attachments = valid_attachments(mapping.statement_files_get_list()) return render_to_response( 'problems_add.html', { 'attachments': attachments, 'page_info': page_info, 'fid': fid, 'form': form, 'base': problem, 'pdf_file': pdf_file, 'editing': mapping })