예제 #1
0
	def _save(self):
		self.task.description = request.POST['description']
		self.task.example_in = request.POST['example_in']
		self.task.example_out = request.POST['example_out']
		
		self.task.filetype = request.POST['filetype']	
		if request.POST['source'] != '':
			self.task.saveSource(request.POST['source'])
	
		for i in range(int(request.POST['count'])):
			if self.contest.mode == 2: # codex
				points = request.POST['points['+str(i)+']']
			else:
				points = 0

			if request.POST.has_key('file_in['+str(i)+']') and request.POST['file_in['+str(i)+']'] != '':
				judge = Judge(self.task.id, points=points, time_limit=request.POST['time_limit['+str(i)+']'], memory_limit=request.POST['memory_limit['+str(i)+']'])
				Session.add(judge)
				Session.commit()
				judge.saveFile(request.POST['file_in['+str(i)+']'])

			elif request.POST.has_key('id['+str(i)+']'):
				judge = Session.query(Judge).filter_by(id=request.POST['id['+str(i)+']']).one()
				judge.points = points
				judge.time_limit = request.POST['time_limit['+str(i)+']']
				judge.memory_limit = request.POST['memory_limit['+str(i)+']']

		Session.commit()
		self.task.load()
예제 #2
0
    def save(self):
        self.auth()

        id = self.user.id

        user = Session.query(User).filter_by(id=id).first()

        l = request.params

        if l['password'] == l['cpassword'] and l['password'] != "":
            user.password = hash(l['password'])

        if l['mail'] != "":
            user.mail = l['mail']

        user.fname = l['fname']
        user.lname = l['lname']
        user.cls = l['cls']

        Session.commit()
        del session['user']

        request.environ['REMOTE_USER'] = user
        request.environ['REMOTE_USER_NAME'] = session.get('user_name')
        self.user = user
        session['user'] = user
        session.save()

        return self.index()  #redirect_to(controller=None)
	def register(self, data):
		try:
			Session.add(User(data['login'], data['password'], data['mail'], data['fname'], data['lname'], data['cls']))
			Session.commit()
		except:
			return False


		return True
예제 #4
0
    def register(self, data):
        try:
            Session.add(
                User(data['login'], data['password'], data['mail'],
                     data['fname'], data['lname'], data['cls']))
            Session.commit()
        except:
            return False

        return True
	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')
예제 #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')
예제 #7
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')
예제 #8
0
    def _adminSave(self, id, params):
        user = Session.query(User).filter_by(id=id).first()
        user.fname = params['fname']
        user.lname = params['lname']
        user.mail = params['mail']
        user.cls = params['cls']
        if params['password'] != '' and params['password'] == params[
                'cpassword']:
            user.password = hash(params['password'])

        if params.has_key('admin'):
            user.admin = True
        else:
            user.admin = False
        Session.commit()
예제 #9
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')
예제 #10
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')
예제 #11
0
	def commit(self):
		self._save(self.source)
		self.datetime = datetime.datetime.now()
		Session.commit()
예제 #12
0
	def _remove(self):
		Session.execute(tasks_table.delete().where(tasks_table.c.id==self.task.id))
		Session.execute(sources_table.delete().where(sources_table.c.task_id==self.task.id))
		Session.commit()
예제 #13
0
	def _create(self, name):
		c = Contest(name)
		Session.add(c)
		Session.commit()
		return c.id
예제 #14
0
	def _reset(self, id):
		self._loadContest(id)
		self.contest.timeStart = None
		Session.commit()
예제 #15
0
	def _remove(self, id):
		Session.execute(contests_table.delete().where(contests_table.c.id==int(id)))
		Session.execute(tasks_table.delete().where(tasks_table.c.contest_id==int(id)))
		Session.execute(sources_table.delete().where(sources_table.c.contest_id==int(id)))
		Session.commit()
예제 #16
0
	def _save(self):
		r = Runner(request.params['lang'], request.params['compile'], request.params['run'])
		Session.add(r)
		Session.commit()
예제 #17
0
 def _save(self):
     r = Runner(request.params['lang'], request.params['compile'],
                request.params['run'])
     Session.add(r)
     Session.commit()
예제 #18
0
파일: task.py 프로젝트: elvis2e3/DevContest
	def saveFile(self, file):
		self.name = file.filename
		Session.commit()

		f = open(self._getFileName(), 'w')
		f.write(file.value)
예제 #19
0
 def commit(self):
     self._save(self.source)
     self.datetime = datetime.datetime.now()
     Session.commit()