Exemple #1
0
    def main(self):
        if not database_exists(self.CONFIG["database_url"]):
            self.logger.info("Creating new database")
            Database.init_db(self.CONFIG["database_url"])
        self.logger.info("Connecting to the database")
        db = Database.from_url(self.CONFIG["database_url"])

        users = self.update_users_preferences(db)

        venues = db.get_distinctive_items("venue")
        artists = db.get_distinctive_items("artist")
        promoters = db.get_distinctive_items("promoter")

        # go through venues
        new_events = []

        for venue in venues:
            self.logger.info(f"Checking {venue['name']} venue...")

            venue["type"] = "venue"
            venue_events = self.get_events(
                venue, self.CONFIG["venue_url_prefix"] + venue["tag"]
            )
            new_venue_events = self.add_to_database(db, venue_events)
            new_events.extend(new_venue_events)

        for artist in artists:
            self.logger.info(f"Checking {artist['name']} artist...")

            artist["type"] = "artist"
            artist_events = self.get_events(
                artist, self.CONFIG["artist_url_prefix"] + artist["tag"]
            )
            new_artist_events = self.add_to_database(db, artist_events)
            new_events.extend(new_artist_events)

        for promoter in promoters:
            self.logger.info(f"Checking {promoter['name']} promoter...")

            promoter["type"] = "promoter"
            promoter_events = self.get_events(
                promoter, self.CONFIG["promoter_url_prefix"] + promoter["tag"]
            )
            new_promoter_events = self.add_to_database(db, promoter_events)
            new_events.extend(new_promoter_events)

        db.commit()

        for new_event in new_events:
            self.add_event_notifications(new_event, users)
        self.send_emails(users)