def admin(self, id=None, param=None): self.auth(admin=True) self.page = id c.lang = self.extension c.error = '' if param=="remove": self._remove() return redirect_to(id=None, param=None) if id=="_" and param=="create": self._create(request.params['url']) return redirect_to(id=self.page, param=None) if not id: c.list = self._getListOfPages() return render("admin/pageList.mako") if id and param=="save": if not self._save(request.params['area']): c.error = _('The page couldn\'t be saved') else: c.success = _('Page was saved succesfull') self._loadPage() return render("admin/pageEdit.mako")
def admin(self, id=None, param=None): self.auth(admin=True) self.page = id c.lang = self.extension c.error = '' if param == "remove": self._remove() return redirect_to(id=None, param=None) if id == "_" and param == "create": self._create(request.params['url']) return redirect_to(id=self.page, param=None) if not id: c.list = self._getListOfPages() return render("admin/pageList.mako") if id and param == "save": if not self._save(request.params['area']): c.error = _('The page couldn\'t be saved') else: c.success = _('Page was saved succesfull') self._loadPage() return render("admin/pageEdit.mako")
def admin(self, id=None, param=None): self.auth(admin=True) if not id: c.list = self._getContestsList() return render('/admin/contestList.mako') if param=="remove": self._remove(id) return self.toIndex() if param=="reset": self._reset(id) return self.toIndex() if id=="_" and param=="create": id = self._create(request.params['name']) return self.toIndex(id=id) self._loadContest(id) if param=="save": self.contest.name = request.params['contest_name'] self.contest.mode = request.params['mode'] if request.params.has_key('results'): self.contest.results = True else: self.contest.results = False Session.commit() return redirect_to(param=None) if param=="start": self.contest.start() Session.commit() return self.toIndex() if param=="stop": self.contest.stop() Session.commit() return self.toIndex() if param=="create_task": t = Task(self.contest.id, request.params['name']) Session.add(t) Session.commit() return redirect_to(controller="admin", action="task", id=t.id, param=None) c.list = self._loadTasks() c.contest = self.contest return render('/admin/contestTasks.mako')
def index(self, id=None): if not id: return redirect_to(controller="home", action="index", id=None) self.page = id if self._pageExists(): self._loadPage() # Return a rendered template return render('/page.mako') else: return render('error.mako')
def admin(self, id, param): self.auth(admin=True) if id == "remove" and param: Session.execute( users_table.delete().where(users_table.c.id == int(param))) Session.commit() if id == "save" and param: params = request.params self._adminSave(param, params) return redirect_to(id="edit") if id == "edit" and param: c.user = Session.query(User).filter_by(id=int(param)).first() return render("admin/userEdit.mako") if id == "source_rerun" and param: c.source = Session.query(Source).filter_by(id=int(param)).first() contest = Session.query(Contest).filter_by( id=c.source.contest_id).first() result = c.source.run(contest, Runner, Judge) c.source.status = result['status'] c.source.points = result['points'] c.source.errors = '' sum = len(result['judges']) for i, result in enumerate(result['judges']): c.source.errors += '<li>%s/%s: %s</li>' % (i + 1, sum, result) Session.commit() return redirect_to(id="source_view") if id == "source_view" and param: c.source = Session.query(Source).filter_by(id=int(param)).first() c.user = Session.query(User).filter_by(id=c.source.user_id).first() c.task_name = self._getTaskName(c.source.task_id) return render("admin/viewSource.mako") if id == "sources" and param: c.user = Session.query(User).filter_by(id=int(param)).first() c.sources = Session.query(Source).filter_by( user_id=int(param)).order_by( sources_table.c.datetime.desc()).all() c.getTaskName = self._getTaskName c.taskExists = self._taskExists return render("admin/userSources.mako") c.users = Session.query(User).order_by(users_table.c.lname, users_table.c.fname).all() return render('admin/user.mako')
def sources(self): self.auth() c.sources = Session.query(Source).filter_by(user_id=self.user.id).all() c.getTaskName = self._getTaskName return render('sources.mako')
def top(self, id=10): self.auth() countShow = int(id) users = None if self.user: if self.user.admin: users = Session.query(User).all() if not users: users = Session.query(User).filter_by(admin=False).all() contests = Session.query(Contest).filter_by(is_running=True).all() runningContests = [] for contest in contests: runningContests.append(contest.id) c.users = [] for user in users: count = Session.query(Source).filter_by( user_id=user.id, status=True).filter( not_(Source.contest_id.in_(runningContests))).count() if count: c.users.append({'user': user, 'count': count}) c.users = sorted(c.users, key=lambda rank: (int(rank['count']), rank['user']), reverse=True)[:countShow] return render('top.mako')
def check(self): c.success = False c.errors = [] form = self.getPost() if not form['login']: c.errors.append(_("Enter your login")) if Session.query(User).filter_by(login=form['login']).count() != 0: c.errors.append(_("This login name is already used")) if form['password'] != form['cpassword'] or not form['password']: c.errors.append(_("Passwords are empty or wrong")) if not form['mail'] or form['mail'] == "@": c.errors.append(_("Enter your e-mail")) if Session.query(User).filter_by(mail=form['mail']).count() != 0: c.errors.append(_("E-mail is already registered")) if len(c.errors) == 0: if not self.register(form): c.errors.append( _("Registration failed. Sorry. Please, contact us.")) else: c.success = True return render('/registration.mako') return self.index()
def rank(self, id): self._loadContest(id) if not self.contest.results and self.contest.is_running and not self.user.admin: return redirect_to(action="tasks") c.rank = self.contest.getRank(self.user.admin) c.contest = self.contest return render("rank.mako")
def document(self): """Render the error document""" resp = request.environ.get('pylons.original_response') content = literal(resp.body) or cgi.escape(request.GET.get('message', '')) page = error_document_template % \ dict(prefix=request.environ.get('SCRIPT_NAME', ''), code=cgi.escape(request.GET.get('code', str(resp.status_int))), message=content) #return page return render('error.mako')
def source(self, id=0): self.auth() c.source = Session.query(Source).filter_by( id=id, user_id=self.user.id).first() if not c.source: return redirect_to(action="sources", id=None) c.task_name = self._getTaskName(c.source.task_id) return render('source.mako')
def document(self): """Render the error document""" resp = request.environ.get('pylons.original_response') content = literal(resp.body) or cgi.escape( request.GET.get('message', '')) page = error_document_template % \ dict(prefix=request.environ.get('SCRIPT_NAME', ''), code=cgi.escape(request.GET.get('code', str(resp.status_int))), message=content) #return page return render('error.mako')
def admin(self, id=None, param=None): self.auth(admin=True) if param=="remove": Session.execute(runners_table.delete().where(runners_table.c.id==int(id))) Session.commit() if id=="save": self._save() c.list = Session.query(Runner).all() return render('/admin/runners.mako')
def admin(self, id=None, param=None): self.auth(admin=True) if param == "remove": Session.execute( runners_table.delete().where(runners_table.c.id == int(id))) Session.commit() if id == "save": self._save() c.list = Session.query(Runner).all() return render('/admin/runners.mako')
def signin(self): try: login = request.params['login'] password = request.params['password'] except: return self.index() user = Session.query(User).filter_by(login=login, password=hash(password)).first() if user: session['user'] = user session.save() return self.index() else: c.error = _('Login failed') return render('/home.mako')
def admin(self, id=None, param=None, num=None): self.auth(admin=True) if param=="deljudge" and num is not None: Session.execute(judges_table.delete().where(judges_table.c.id==int(num))) Session.commit() self._load(id) if param=="download": if num is None: download = self.task.source name = str(self.task.id)+"."+self.task.filetype size = self.task.sourceSize() file = download else: download = Session.query(Judge).filter_by(id=num).one() name = download.name size = download.size() file = download.getFile() response.headers['Content-Type'] = "text/plain; name=%s" % (name) response.headers['Content-length'] = "%s" % (size) response.headers['Content-Disposition'] = "attachment; filename= %s" %(name) shutil.copyfileobj(file, response) return if param=="save": self._save() if param=="remove": contest_id = self.task.contest_id self._remove() return redirect_to(action="contest", id=contest_id, param=None) c.task = self.task if self.task.source: c.runner = Session.query(Runner).filter_by(lang=self.task.filetype).one() c.contest = self.contest c.runners = Session.query(Runner).all() return render('/admin/taskEdit.mako')
def show(self, id, param=None): self.auth() self._load(id) c.task = self.task c.runners = Session.query(Runner).all() c.contest = self.contest self.source = Session.query(Source).filter_by(user_id=self.user.id, task_id=id).first() if self.source: self.source.load() c.status = self.source.status if param=="upload": if self._upload(): c.result = self._runUserScript() self.source.status = c.result['status'] if int(self.source.points) < int(c.result['points']): self.source.points = c.result['points'] err = '' sum = len(c.result['judges']) for i, result in enumerate(c.result['judges']): err += '<li>%s/%s: %s</li>' % (i+1, sum, result) self.source.errors = err self.source.commit() c.source = self.source if c.source: c.status = c.source.status else: c.status = False self.task.description = self.task.description.replace("\n", "<br>").replace(" ", " "*4).strip("<br>") return render("task.mako")
def check(self): c.success = False c.errors = [] form = self.getPost() if not form['login']: c.errors.append(_("Enter your login")) if Session.query(User).filter_by(login=form['login']).count()!=0: c.errors.append(_("This login name is already used")) if form['password']!=form['cpassword'] or not form['password']: c.errors.append(_("Passwords are empty or wrong")) if not form['mail'] or form['mail']=="@": c.errors.append(_("Enter your e-mail")) if Session.query(User).filter_by(mail=form['mail']).count()!=0: c.errors.append(_("E-mail is already registered")) if len(c.errors)==0: if not self.register(form): c.errors.append(_("Registration failed. Sorry. Please, contact us.")) else: c.success = True return render('/registration.mako') return self.index()
def index(self): c.list = Session.query(Contest).filter_by(is_running=False).filter( Contest.timeStart != None).all() return render('archiv.mako')
def tasks(self, id): self.auth() c.list = self._loadTasks(id) c.timeSolved = self.timeSolved return render('/contestTasks.mako')
def contest(self, id): c.list = Session.query(Task).filter_by(contest_id=id).all() c.okUsers = self._okUsers c.allUsers = self._allUsers return render('archivTasks.mako')
def index(self): return render('/home.mako')
def index(self): c.list = Session.query(Contest).filter_by(is_running=False).filter(Contest.timeStart!=None).all() return render('archiv.mako')
def index(self): c.form = self.getPost() return render('/registration.mako')
def index(self): self.auth() c.user = self.user return render('user.mako')