import html import re STRIP_REGEX = re.compile(r"<[^<]+?>") WIKI_TABLE = "wiki" def when_ready(server=None): """ server hook that only runs when the gunicorn master process loads """ if server: output = server.log.info else: output = print output("Creating tables...") from pysite.database import RethinkDB db = RethinkDB(loop_type=None) db.conn = db.get_connection() # Create any table that doesn't exist created = db.create_tables() if created: tables = ", ".join([f"{table}" for table in created]) output(f"Created the following tables: {tables}") # Init the tables that require initialization initialized = db.init_tables() if initialized: tables = ", ".join([f"{table} ({count} items)" for table, count in initialized.items()]) output(f"Initialized the following tables: {tables}") output("Adding plain-text version of any wiki articles that don't have one...") for article in db.pluck(WIKI_TABLE, "html", "text", "slug"): if "text" not in article: article["text"] = html.unescape(STRIP_REGEX.sub("", article["html"]).strip()) db.insert(WIKI_TABLE, article, conflict="update")