|
8 | 8 | from sqlalchemy import create_engine |
9 | 9 |
|
10 | 10 | from sqlalchemy.orm import scoped_session, sessionmaker |
| 11 | +from sqlalchemy.ext.declarative import declarative_base |
11 | 12 | from sqlalchemy.schema import MetaData |
12 | 13 |
|
13 | 14 | import cloudbot |
|
16 | 17 | from cloudbot.reloader import PluginReloader |
17 | 18 | from cloudbot.plugin import PluginManager |
18 | 19 | from cloudbot.event import Event, CommandEvent, RegexEvent, EventType |
19 | | -from cloudbot.util import botvars, formatting |
| 20 | +from cloudbot.util import database, formatting |
20 | 21 | from cloudbot.clients.irc import IrcClient |
21 | 22 |
|
| 23 | +try: |
| 24 | + from cloudbot.web.main import WebInterface |
| 25 | + web_installed = True |
| 26 | +except ImportError: |
| 27 | + web_installed = False |
| 28 | + |
22 | 29 | logger = logging.getLogger("cloudbot") |
23 | 30 |
|
24 | 31 |
|
@@ -89,10 +96,15 @@ def __init__(self, loop=asyncio.get_event_loop()): |
89 | 96 | self.db_factory = sessionmaker(bind=self.db_engine) |
90 | 97 | self.db_session = scoped_session(self.db_factory) |
91 | 98 | self.db_metadata = MetaData() |
| 99 | + self.db_base = declarative_base(metadata=self.db_metadata, bind=self.db_engine) |
| 100 | + |
| 101 | + # create web interface |
| 102 | + if self.config.get("web", {}).get("enabled", False) and web_installed: |
| 103 | + self.web = WebInterface(self) |
92 | 104 |
|
93 | 105 | # set botvars so plugins can access when loading |
94 | | - botvars.metadata = self.db_metadata |
95 | | - botvars.user_agent = self.user_agent |
| 106 | + database.metadata = self.db_metadata |
| 107 | + database.base = self.db_base |
96 | 108 |
|
97 | 109 | logger.debug("Database system initialised.") |
98 | 110 |
|
@@ -193,6 +205,10 @@ def _init_routine(self): |
193 | 205 | # Connect to servers |
194 | 206 | yield from asyncio.gather(*[conn.connect() for conn in self.connections.values()], loop=self.loop) |
195 | 207 |
|
| 208 | + # Activate web interface. |
| 209 | + if self.config.get("web", {}).get("enabled", False) and web_installed: |
| 210 | + self.web.start() |
| 211 | + |
196 | 212 | # Run a manual garbage collection cycle, to clean up any unused objects created during initialization |
197 | 213 | gc.collect() |
198 | 214 |
|
|
0 commit comments