diff --git a/CHANGELOG.md b/CHANGELOG.md
index af22280..5ec4c62 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
- Add `setup` function hook ([#36](https://git.autonomic.zone/decentral1se/xbotlib/issues/36))
- Add support for defining additional routes ([#31](https://git.autonomic.zone/decentral1se/xbotlib/issues/31))
+- Fix loading of template and serving (attribute clash) ([#38](https://git.autonomic.zone/decentral1se/xbotlib/issues/38))
# xbotlib 0.15.1 (2021-01-24)
diff --git a/README.md b/README.md
index 6575200..60bc317 100644
--- a/README.md
+++ b/README.md
@@ -343,12 +343,19 @@ easily template and generate HTML. The web server is provided by
The default template search path is `index.html.j2` in the current working
directory. This can be configured through the usual configuration entrypoints.
-Here's a small example that renders a random ASCII letter.
+Here's a small example that renders a random ASCII letter and uses a stylesheet.
> index.html.j2
```jinja
-
{{ letter }}
+
+
+
+
+
+ {{ letter }}
+
+
```
> bot.py
diff --git a/xbotlib.py b/xbotlib.py
index 5726f6f..ff84375 100644
--- a/xbotlib.py
+++ b/xbotlib.py
@@ -446,7 +446,7 @@ class Bot(ClientXMPP):
or environ.get("XBOT_TEMPLATE", None)
or "index.html.j2"
)
- serve = (
+ serve_web = (
self.args.serve
or self.config.serve
or environ.get("XBOT_SERVE", None)
@@ -484,8 +484,12 @@ class Bot(ClientXMPP):
self.rooms = rooms
self.no_auto_join = no_auto_join
self.port = port
- self.serve = serve
- self.template = self.load_template(template) if self.serve else None
+ self.serve_web = serve_web
+
+ self.template = None
+ if self.serve_web:
+ self.template = self.load_template(template)
+
self.storage = storage
self.storage_file = Path(storage_file).absolute()
@@ -670,14 +674,14 @@ class Bot(ClientXMPP):
self.connect()
try:
- if self.serve:
- self.log.info("Turning on the web server")
- self.serve_web()
+ if self.serve_web:
+ self.log.info("Running the web server")
+ self.run_web_server()
if hasattr(self, "setup"):
try:
self.setup()
- self.log.info("Finished running Bot.setup")
+ self.log.info("Finished running setup")
except Exception as exception:
message = f"Bot.setup failed: {exception}"
self.log.info(message)
@@ -686,8 +690,8 @@ class Bot(ClientXMPP):
except (KeyboardInterrupt, RuntimeError):
pass
- def serve_web(self):
- """Serve the web."""
+ def run_web_server(self):
+ """Run the web server."""
try:
from aiohttp.web import Application, get, run_app
except ModuleNotFoundError:
@@ -697,9 +701,9 @@ class Bot(ClientXMPP):
self.web = Application()
- try:
+ if hasattr(self, "serve"):
self.web.add_routes([get("/", self.serve)])
- except Exception:
+ else:
self.web.add_routes([get("/", self.default_serve)])
try: