Exemplo n.º 1
0
	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")
Exemplo n.º 2
0
    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")
Exemplo n.º 3
0
	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')
Exemplo n.º 4
0
    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')
Exemplo n.º 5
0
	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')
Exemplo n.º 6
0
    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')
Exemplo n.º 7
0
    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')
Exemplo n.º 8
0
    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')
Exemplo n.º 9
0
    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()
Exemplo n.º 10
0
	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")
Exemplo n.º 11
0
	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')
Exemplo n.º 12
0
    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')
Exemplo n.º 13
0
 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')
Exemplo n.º 14
0
	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')
Exemplo n.º 15
0
    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')
Exemplo n.º 16
0
	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')
Exemplo n.º 17
0
    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')
Exemplo n.º 18
0
	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')
Exemplo n.º 19
0
	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("    ", "&nbsp;"*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()
Exemplo n.º 21
0
 def index(self):
     c.list = Session.query(Contest).filter_by(is_running=False).filter(
         Contest.timeStart != None).all()
     return render('archiv.mako')
Exemplo n.º 22
0
	def tasks(self, id):
		self.auth()

		c.list = self._loadTasks(id)
		c.timeSolved = self.timeSolved
		return render('/contestTasks.mako')
Exemplo n.º 23
0
 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')
Exemplo n.º 24
0
	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')
Exemplo n.º 25
0
	def index(self):
		return render('/home.mako')
Exemplo n.º 26
0
	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')
Exemplo n.º 28
0
 def index(self):
     c.form = self.getPost()
     return render('/registration.mako')
Exemplo n.º 29
0
    def index(self):
        self.auth()

        c.user = self.user

        return render('user.mako')
Exemplo n.º 30
0
 def index(self):
     return render('/home.mako')