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
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
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()