Exemple #1
0
  def get(self, team_name):
    team = Team.getTeam(team_name)
    if not team:
      template = jinja_environment.get_template("templates/error.html")
      self.response.out.write(template.render({'errmsg':'Invalid team: ' + team_name}))
      return

    results = overall_results(team)

    user_email = users.get_current_user().email()
    authorised = True
    if team == Team.MEN:
      authorised = user_email in mens_results_viewers
    if team == Team.WOMEN:
      authorised = user_email in womens_results_viewers

    params = {'team':team, 'results':results, 'authorised':authorised}
    template = jinja_environment.get_template("templates/results.html")
    self.response.out.write(template.render(params))
Exemple #2
0
  def post(self):
    opponent = self.request.get("opponent")
    date_string = self.request.get("date")
    venue = self.request.get("venue")
    player_id_strings = self.request.get_all("players")
    team = Team.getTeam(self.request.get("team"))
    weight = float(self.request.get("weight"))

    date_tokens = date_string.split("/")
    if len(date_tokens) == 1:
      date_tokens = date_string.split("-")
    if int(date_tokens[0]) < 100:
      date_tokens.reverse()
    date = datetime.date(int(date_tokens[0]), int(date_tokens[1]), int(date_tokens[2]))

    game = Game(opponent=opponent, date=date, venue=venue, team=team, weight=weight)
    player_keys = [ndb.Key('Player', int(pid)) for pid in player_id_strings]
    game.players = player_keys
    game.put()

    template = jinja_environment.get_template("templates/game_added.html")
    self.response.out.write(template.render({}))
Exemple #3
0
  def post(self):
    game_id = self.request.get("game_id")
    game = Game.get_by_id(int(game_id))
    if not game:
      self.response.out.write("Error: invalid game ID")
      logging.error("Invalid game ID: " + str(game_id))
      return

    if self.request.get("delete"):
      self.delete_game(game)
      template = jinja_environment.get_template("templates/game_deleted.html")
      self.response.out.write(template.render())
      return

    opponent = self.request.get("opponent")
    date_string = self.request.get("date")
    venue = self.request.get("venue")
    player_id_strings = self.request.get_all("players")
    team = Team.getTeam(self.request.get("team"))
    weight = float(self.request.get("weight"))

    date_tokens = date_string.split("/")
    if len(date_tokens) == 1:
      date_tokens = date_string.split("-")
    if int(date_tokens[0]) < 100:
      date_tokens.reverse()
    date = datetime.date(int(date_tokens[0]), int(date_tokens[1]), int(date_tokens[2]))

    game.opponent = opponent
    game.date = date
    game.venue = venue
    game.team = team
    game.weight = weight
    player_keys = [ndb.Key('Player', int(pid)) for pid in player_id_strings]
    game.players = player_keys
    game.put()

    template = jinja_environment.get_template("templates/game_saved.html")
    self.response.out.write(template.render({}))
Exemple #4
0
  def get(self, game_id=None):
    if not game_id:
      template = jinja_environment.get_template("templates/game_list.html")
      games = Game.query().order(Game.date).fetch(100)
      self.response.out.write(template.render({'games':games}))
      return

    game = Game.get_by_id(int(game_id))
    if not game:
      self.response.out.write("Error: invalid game ID")
      logging.error("Invalid game ID: " + str(game_id))
      return

    teams = Team.getAll();

    players = Player.query().order(Player.name).fetch(100)
    playing = [p for p in players if p.key in game.players]
    not_playing = [p for p in players if p.key not in game.players]

    template = jinja_environment.get_template("templates/add_edit_game.html")
    args = {'playing':playing,'not_playing':not_playing,'game':game, 'teams':teams}
    self.response.out.write(template.render(args))
Exemple #5
0
    def post(self):
        player_id = self.request.get("player")
        game_id = self.request.get("game")

        player = Player.get_by_id(int(player_id))
        game = Game.get_by_id(int(game_id))

        token = Token.query(ndb.AND(Token.game == game.key, Token.voter == player.key)).get()

        if not token:
            logging.info("No token found for %s. Creating new token.", player.name)
            token_string = base64.urlsafe_b64encode(os.urandom(16))
            token = Token(value=token_string, voter=player.key, game=game.key, used=False)
            token.put()
        else:
            logging.info("Token found for %s.", player.name)
            if token.used:
                logging.info("%s has already voted, not sending email.", player.name)
                return

        url = "http://vote.ouarfc.co.uk/vote/" + token.value

        if player.phone:
            logging.info("Sending SMS to %s", player.name)
            template = jinja_environment.get_template("templates/sms.txt")
            sms_data = {
                "ORIGINATOR": "OUARFC",
                "NUMBERS": player.phone,
                "BODY": template.render({"url": url, "opponent": game.opponent, "team": Team.getString(game.team)}),
            }

            response = urlfetch.fetch(
                "https://api.zensend.io/v3/sendsms",
                payload=urllib.urlencode(sms_data),
                method=urlfetch.POST,
                headers={"X-API-KEY": config.zensend_key},
            )
            content_type = response.headers["content-type"]
            if content_type is not None and "application/json" in content_type:
                result = json.loads(response.content)
                if "success" in result:
                    logging.info("Successfully sent SMS to " + player.phone)
                    if config.phone_only:
                        # SMS was a success, don't send email
                        return
                elif "failure" in result:
                    failure = result["failure"]
                    logging.error(
                        "SMS send failed. Player: %s, phone: %s, parameter: %s, error code: %s, status code: %s",
                        player.name,
                        player.phone,
                        failure["parameter"],
                        failure["failcode"],
                        response.status_code,
                    )
                else:
                    logging.error("SMS send failed. Status code: %s", response.status_code)
            else:
                logging.error("SMS send failed. Status code: %s", response.status_code)

        template = jinja_environment.get_template("templates/email.txt")
        subject = "OUARFC: Please Vote For Best & Fairest"
        message = mail.EmailMessage(sender="OUARFC <*****@*****.**>", subject=subject)
        message.to = player.email
        message.body = template.render(
            {
                "name": player.name,
                "opponent": game.opponent,
                "date": game.date,
                "team": Team.getString(game.team),
                "url": url,
            }
        )
        logging.info("Sending email to " + player.email)
        message.send()
        logging.info(message.body)
Exemple #6
0
 def get(self):
   teams = Team.getAll()
   template = jinja_environment.get_template("templates/results_menu.html")
   self.response.out.write(template.render({'teams': teams}))
Exemple #7
0
 def get(self):
   template = jinja_environment.get_template("templates/add_edit_game.html")
   players = Player.query().order(Player.name).fetch(1000)
   teams = Team.getAll()
   args = {'players':players, 'teams':teams}
   self.response.out.write(template.render(args))