def create_tournament(self, name, date, past_event=False):
        """Create a tournament"""
        to_username = '******'.format(name)
        db.session.add(Account(to_username, '{}@bar.com'.format(to_username)))
        db.session.flush()

        if past_event:
            # We need to do this by hand with the daos
            dao = Tournament(name)
            dao.date = date
            dao.to_username = to_username
            db.session.add(dao)
            db.session.commit()

            tourn = Tourn(name)
        else:
            tourn = Tourn(name).new(**{
                'date': date.strftime(Tourn.DATE_FORMAT),
                'to_username': to_username
            })

        self.tournaments.add(tourn)
    def new(self, **details):
        """
        add a tournament to the db
        Expects:
            - details - dict of keys to put into the DAO
        """
        if self.get_dao() is not None:
            raise RuntimeError('A tournament with name {} already exists! ' \
            'Please choose another name'.format(self.tournament_id))

        dao = TournamentDAO(self.tournament_id)
        dao.to_username = details.pop('to_username')
        try:
            dao.date = datetime.strptime(details.pop('date'), self.DATE_FORMAT)
            if dao.date.date() < date.today():
                raise ValueError()
        except ValueError:
            raise ValueError('Enter a valid date')
        db.session.add(dao)
        db.session.commit()

        self._set_details(details)
        return self