def get(self): user = tusers.get_current_user() #Get the institution i = self.request.get('i') i_key = ndb.Key(urlsafe=i) institution = i_key.get() reg = i_key.parent().get() if institution.authorised(user) and reg.open and institution.teams().count(limit=20)<20: if self.request.get('type') == 't': #Register a new Team team = InstitutionTeam(parent=institution.key) team.put() if self.request.get('type') == 'j': #Register a new judge judge = InstitutionJudge(parent=institution.key) judge.put() self.redirect(self.request.referer)
def post(self): user = tusers.get_current_user() #Get the requested tournament tid = self.request.get('t') key = ndb.Key('Tournament', int(tid)) t = key.get() reg = t.preRegRecord().get() if user: form = InstRegForm(self.request.POST) if (form.validate()): #If we are updating an existing registration, update it. if 'instkey' in self.request.arguments(): instkey = (self.request.get('instkey')) inst = ndb.Key(urlsafe=instkey).get() #Check they own it if inst.user != user.key: self.redirect('/reg?t=' + tid) #Otherwise, make a new institution registration else: #Check they haven't registered already if reg.isRegistered(user): self.redirect('/reg?t=' + tid) return inst = RegisteredInstitution(parent=reg.key) inst.user = user.key inst.name = form.name.data inst.user = user.key inst.put() #Add teams and judges if 'nTeams' in self.request.arguments(): nTeams = int(self.request.get('nTeams')) if nTeams > MAX_REG: nTeams = MAX_REG for i in range(nTeams): team = InstitutionTeam(parent=inst.key) team.put() if 'nJudges' in self.request.arguments(): nJudges = int(self.request.get('nJudges')) if nJudges > MAX_REG: nJudges = MAX_REG for i in range(nJudges): judge = InstitutionJudge(parent=inst.key) judge.put() self.redirect('/reg?t=' + tid) #If the form is invalid, show it again with errors. else: logging.info('invalid form') template_values = { 'user' : user, 't' : t, 'logout' : tusers.create_logout_url('/'), 'login' : tusers.create_login_url('/reg/team?t=' + tid), 'r' : reg, 'form' : form } template = JINJA_ENVIRONMENT.get_template('view/reginstitution.html') self.response.write(template.render(template_values)) else: self.redirect('/reg?t=' + tid)