def post(self):
     """Saves members that will take a part in competition to database"""
     user = users.get_current_user()
     if not user:
         show_unauth_page(self)
     else:
         email = user.email()
         [is_org, is_lead, is_memb] = OtherHandlers.find_user(email)
         if is_lead and self.session.get("role") == "leader":
             days_checked_count = int(self.request.POST.get("daysCheckedCount"))
             comp_key = self.request.POST.get("competition")
             competition = Competition.get(comp_key)
             dist_query = db.Query(Distance).filter("competition =", competition)
             distances = dist_query.run(batch_size=1000)
             distinfos = []  # all groups of all days
             for dist in distances:
                 distinfo = (
                     db.Query(DistInfo).filter("distance =", dist).run()
                 )  # all groups for that day (=distance)
                 distinfos.append(distinfo)
             for i_day in range(days_checked_count):  # runs through all days one by one
                 memb_count_i_day = int(self.request.POST.get("membsInDay%s" % str(i_day)))
                 for j_memb in range(memb_count_i_day):  # runs through all member of i- day
                     memb_group = self.request.POST.get("checkMembGroup%s" % str(i_day) + "_%s" % str(j_memb))
                     keys = memb_group.split("_")
                     member = Member.get(keys[0])
                     group_code = keys[1]
                     CompMemb(competition=competition, member=member, group=group_code, day_numb=i_day + 1).put()
             time.sleep(0.1)
             self.redirect("/competition?dbKey=%s" % comp_key)
         else:
             show_unauth_page(self)
 def get(self):
     """Displays list of all members in system to mark whom will take a part in competition"""
     login = users.create_login_url(dest_url="/postSignIn")
     comp_key = self.request.GET["competition"]
     comp = Competition.get(comp_key)
     membs = db.Query(Member).order("surname")
     keys_in_comp = []
     keys_not_in = []
     memb_not_in = []
     memb_in_comp = []
     membs_comps = db.Query(CompMemb).filter("competition =", comp).order("member").run(batch_size=10000)
     for m in membs_comps:
         if m.member.key() not in keys_in_comp:
             memb_in_comp.append(m.member)
             keys_in_comp.append(m.member.key())
     for m in membs:
         if m.key() not in keys_in_comp:
             keys_not_in.append(m.key())
             memb_not_in.append(m)
     temp_values = {
         "login": login,
         "logout": users.create_logout_url("/login"),
         "name": comp.name,
         "membs_count": membs.count(),
         "membs_in": memb_in_comp,
         "membs_not": memb_not_in,
         "keys_in": keys_in_comp,
         "keys_not": keys_not_in,
         "competition": comp_key,
     }
     template = JINJA_ENVIRONMENT.get_template("/templates/tmmosc/member/MemberList.html")
     self.response.write(template.render(temp_values))
 def get(self):
     """Displays empty form to enter password of current user"""
     login = users.create_login_url(dest_url="/postSignIn")
     comp_key = self.request.GET["competition"]
     memb_key = self.request.GET["member"]
     comp = Competition.get(comp_key)
     member = Member.get(memb_key)
     try:
         self.request.GET["tooltip"]
         tooltip = u"Неверный пароль подтверждения. Попробуйте еще раз"
     except:
         tooltip = ""
     temp_values = {
         "login": login,
         "logout": users.create_logout_url("/login"),
         "name": comp.name,
         "competition": comp_key,
         "memb_key": memb_key,
         "surname": member.surname,
         "team": member.command.name,
         "card_title": u"Удаление участника из заявки",
         "tooltip": tooltip,
     }
     template = JINJA_ENVIRONMENT.get_template("/templates/tmmosc/member/EnterPass.html")
     self.response.write(template.render(temp_values))
 def post(self):
     """Displays group of current competition to check member"""
     login = users.create_login_url(dest_url="/postSignIn")
     memb_key = self.request.POST.get("member")
     memb = Member.get(memb_key)
     comp_key = self.request.POST.get("competition")
     comp = Competition.get(comp_key)
     distances = db.Query(Distance).filter("competition =", comp).order("day_numb")
     groups_by_days = []
     for dist in distances:
         groups_by_days.append(dist.distinfo_set.run(batch_size=100))
     temp_values = {
         "login": login,
         "logout": users.create_logout_url("/login"),
         "name": comp.name,
         "surname": memb.surname,
         "team": memb.command.name,
         "memb_key": memb_key,
         "competition": comp_key,
         "card_title": u"Заявка участника",
         "dists": distances,
         "groups_by_day": groups_by_days,
     }
     template = JINJA_ENVIRONMENT.get_template("/templates/tmmosc/member/ToDaysGroups.html")
     self.response.write(template.render(temp_values))
 def post(self):
     """Displays members added to current competition to check their groups"""
     user = users.get_current_user()
     if not user:
         show_unauth_page(self)
     else:
         email = user.email()
         [is_org, is_lead, is_memb] = OtherHandlers.find_user(email)
         roles = OtherHandlers.create_roles_head(self, is_org, is_lead, is_memb)
         if is_lead and self.session.get("role") == "leader":
             comp_key = self.request.POST.get("competition")
             competition = Competition.get(comp_key)
             days_count = competition.days_count
             membs_by_day = []
             show_tables = False
             for i in range(days_count):  # add members (keys) for each day
                 membs_key_day = self.request.POST.getall("checkMemb" + str(i))
                 membs_i_day = []
                 for memb_key in membs_key_day:
                     member = Member.get(memb_key)
                     membs_i_day.append(member)
                     if show_tables == False:
                         show_tables = True
                 membs_by_day.append(membs_i_day)
             show_arrow_back = True
             for membs_i_day in membs_by_day:
                 if len(membs_i_day) > 0:
                     show_arrow_back = False
                     break
             dist_query = db.Query(Distance).filter("competition =", competition)
             distances = dist_query.run()
             type_lent = []
             groups_on_day = []
             for dist in distances:
                 type_lent.append(dist.type + " " + dist.lent)
                 dist_infos = dist.distinfo_set.run(batch_size=1000)
                 groups_i_day = []
                 for info in dist_infos:
                     groups_i_day.append(info.group_name)
                 groups_on_day.append(groups_i_day)
             temp_values = {
                 "roles": roles,
                 "user_email": email,
                 "logout": users.create_logout_url("/login"),
                 "membs_by_day": membs_by_day,
                 "dists": type_lent,
                 "groups": groups_on_day,
                 "comp_key": comp_key,
                 "show_tables": show_tables,
                 "show_arrow": show_arrow_back,
             }
             template = JINJA_ENVIRONMENT.get_template("templates/tmmosc/leader/MembersToDays.html")
             self.response.write(template.render(temp_values))
         else:
             show_unauth_page(self)
 def post(self):
     """Deletes certain user from current competition"""
     memb_key = self.request.POST.get("member")
     member = Member.get(memb_key)
     paswd = self.request.POST.get("changePass")
     comp_key = self.request.POST.get("competition")
     comp = Competition.get(comp_key)
     if salt_pass(paswd) == member.pass_to_edit:
         comp_membs = CompMemb.all().filter("member =", member).filter("competition =", comp)
         db.delete(comp_membs)
         time.sleep(0.1)
         self.redirect("/entryOneMemb?competition=" + comp_key)
     else:
         self.redirect("/deleteFromComp?competition=" + comp_key + "&member=" + memb_key + "&tooltip=True")
 def get(self):
     """Displays list of team members to mark some on current competition"""
     user = users.get_current_user()
     if not user:
         show_unauth_page(self)
     else:
         email = user.email()
         [is_org, is_lead, is_memb] = OtherHandlers.find_user(email)
         roles = OtherHandlers.create_roles_head(self, is_org, is_lead, is_memb)
         if is_lead and self.session.get("role") == "leader":
             comp_key = self.request.GET["competition"]
             competition = Competition.get(comp_key)
             leader = db.Query(Leader).filter("user ="******"command =", team).order("surname")
             memb_team = team_q.run(batch_size=1000)
             entry_membs = []
             no_entry_membs = []
             days = []
             for memb in memb_team:
                 m = db.Query(CompMemb).filter("competition =", competition).filter("member =", memb)
                 membs = m.run()
                 if m.count():
                     entry_membs.append(memb)
                     m_d = []
                     for mem in membs:
                         m_d.append(mem.day_numb)
                     days.append(m_d)
                 else:
                     no_entry_membs.append(memb)
             temp_values = {
                 "roles": roles,
                 "user_email": email,
                 "logout": users.create_logout_url("/login"),
                 "team_name": team.name,
                 "membs_count": team_q.count(),
                 "entry_membs": entry_membs,
                 "no_entry_membs": no_entry_membs,
                 "comp_name": competition.name,
                 "days_count": range(1, int(competition.days_count) + 1),
                 "comp_key": comp_key,
                 "days": days,
             }
             template = JINJA_ENVIRONMENT.get_template("templates/tmmosc/leader/MembersToCompetition.html")
             self.response.write(template.render(temp_values))
         else:
             show_unauth_page(self)
 def post(self):
     """Saves current member to database so that he will take a part in competition"""
     memb_key = self.request.POST.get("member")
     memb = Member.get(memb_key)
     paswd = self.request.POST.get("changePass")
     comp_key = self.request.POST.get("competition")
     comp = Competition.get(comp_key)
     if salt_pass(paswd) == memb.pass_to_edit:
         for i in range(comp.days_count):
             infos_count = int(self.request.POST.get("infosCount%s" % str(i)))
             for group_num in range(infos_count):
                 checked_group = self.request.POST.get("checkMembGroup%s" % (str(i) + str(group_num)))
                 if checked_group:
                     entry = CompMemb(competition=comp, member=memb, group=checked_group, day_numb=i + 1)
                     entry.put()
                     time.sleep(0.1)
                     self.redirect("/entryOneMemb?competition=" + comp_key)
     else:
         login = users.create_login_url(dest_url="/postSignIn")
         distances = db.Query(Distance).filter("competition =", comp).order("day_numb")
         groups_by_days = []
         for dist in distances:
             groups_by_days.append(dist.distinfo_set.run(batch_size=100))
         temp_values = {
             "login": login,
             "logout": users.create_logout_url("/login"),
             "name": comp.name,
             "surname": memb.surname,
             "team": memb.command.name,
             "memb_key": memb_key,
             "competition": comp_key,
             "card_title": u"Заявка участника",
             "dists": distances,
             "groups_by_day": groups_by_days,
             "tooltip": u"Неверный пароль подтверждения. Попробуйте еще раз",
         }
         template = JINJA_ENVIRONMENT.get_template("/templates/tmmosc/member/ToDaysGroups.html")
         self.response.write(template.render(temp_values))
 def get(self):
     """Displays info about competition stored in database"""
     user = users.get_current_user()
     key = self.request.GET['dbKey']
     comp = Competition.get(key)
     info_values = info_from_db(comp)
     diz_values = diz_from_db(comp)
     memb_values = membs_from_db(comp)
     temp_values = {'start': format_date(str(comp.d_start)), 'finish': format_date(str(comp.d_finish)), 'name':
                    comp.name, 'days_count': range(1, comp.days_count + 1), 'comp_id': comp.key()}
     temp_values.update(info_values)
     temp_values.update(diz_values)
     temp_values.update(memb_values)
     if not user:    # user is anonim
         login = users.create_login_url(dest_url='/postSignIn')
         temp_values.update({'action': '/entryOneMemb', 'login': login})
         template = JINJA_ENVIRONMENT.get_template('templates/tmmosc/CertainCompetition.html')
     else:
         email = user.email()
         [is_org, is_lead, is_memb] = OtherHandlers.find_user(email)
         roles = OtherHandlers.create_roles_head(self, is_org, is_lead, is_memb)
         temp_values.update({'roles': roles, 'user_email': email, 'logout': users.create_logout_url('/login')})
         if is_org and self.session.get('role') == 'organizer':
             action = ''
             template = JINJA_ENVIRONMENT.get_template('templates/tmmosc/organizer/CertainCompetition.html')
         elif is_lead and self.session.get('role') == 'leader':
             action = '/entryMembs'
             template = JINJA_ENVIRONMENT.get_template('templates/tmmosc/leader/CertainCompetition.html')
         elif is_memb and self.session.get('role') == 'member':
             action = '/entryOneMemb'
             template = JINJA_ENVIRONMENT.get_template('templates/tmmosc/member/CertainCompetition.html')
         else:
             action = '/entryOneMemb'
             template = JINJA_ENVIRONMENT.get_template('templates/tmmosc/CertainCompetition.html')
         temp_values.update({'action': action})
     self.response.write(template.render(temp_values))