def link_tappedout(self) -> None:
     if self.person is None:
         return
     tapped_name = self.form.get('to_username', None)
     if tapped_name is not None and self.person.tappedout_username != tapped_name:
         tapped_user = person.load_person_by_tappedout_name(tapped_name)
         if tapped_user is None:
             self.form.errors.to_username = '******'.format(
                 tapped_name=tapped_name)
         elif tapped_user.id is not None:
             self.form.errors.to_username = '******'.format(
                 tapped_name=tapped_name)
         else:
             person.squash(self.person.id, cast(int, tapped_user.id),
                           'mtgo_username', 'tappedout_username')
             self.disable_to = True
Ejemplo n.º 2
0
 def link_mtggoldfish(self) -> None:
     if self.person is None:
         return
     mtggoldfish_name = self.form.get('gf_username', None)
     if mtggoldfish_name and self.person.mtggoldfish_username != mtggoldfish_name:
         mtggoldfish_user = person.maybe_load_person_by_mtggoldfish_name(
             mtggoldfish_name)
         if mtggoldfish_user is None:
             self.form.errors.gf_username = '******'.format(
                 mtggoldfish_name=mtggoldfish_name)
         elif mtggoldfish_user.mtgo_username is not None:
             self.form.errors.gf_username = '******'.format(
                 mtggoldfish_name=mtggoldfish_name)
         else:
             person.squash(self.person.id, mtggoldfish_user.id,
                           'mtgo_username', 'mtggoldfish_username')
             self.disable_gf = True
Ejemplo n.º 3
0
def run() -> None:
    run_elo = False
    # pylint: disable=consider-using-enumerate
    for i in range(0, len(USERNAME_COLUMNS)):
        # pylint: disable=consider-using-enumerate
        for j in range(i + 1, len(USERNAME_COLUMNS)):
            sql = """
                SELECT p1.id AS p1_id, p2.id AS p2_id, '{col1}' AS col1, '{col2}' AS col2
                FROM person AS p1
                LEFT JOIN person AS p2
                ON p1.{col1} = p2.{col2} AND p1.id <> p2.id
                WHERE p1.id IS NOT NULL AND p2.id IS NOT NULL
            """.format(col1=USERNAME_COLUMNS[i], col2=USERNAME_COLUMNS[j])
            pairs = [Container(row) for row in db().execute(sql)]
            if len(pairs) > 0:
                run_elo = True
            for pair in pairs:
                person.squash(pair.p1_id, pair.p2_id, pair.col1, pair.col2)
    if run_elo:
        logger.warning('Running maintenance task to correct all Elo ratings.')
        elo.run()