file and command help web support, proof of concept

Not fleshed enough for a prototype. Is a working proof of concept.
Adds command help and file help entries to the website.
This commit is contained in:
davewiththenicehat 2021-06-04 16:24:51 -04:00
parent d7b66eecca
commit 9eb1c0532f
5 changed files with 310 additions and 37 deletions

View file

@ -9,11 +9,14 @@ import math
import inspect
from django.conf import settings
from django.urls import reverse
from django.utils.text import slugify
from evennia.locks.lockhandler import LockHandler
from evennia.utils.utils import is_iter, fill, lazy_property, make_iter
from evennia.utils.evtable import EvTable
from evennia.utils.ansi import ANSIString
from evennia.utils.logger import log_info
class InterruptCommand(Exception):
@ -514,6 +517,42 @@ Command {self} has no defined `func()` - showing on-command variables:
"""
return self.__doc__
def web_get_detail_url(self):
"""
Returns the URI path for a View that allows users to view details for
this object.
ex. Oscar (Character) = '/characters/oscar/1/'
For this to work, the developer must have defined a named view somewhere
in urls.py that follows the format 'modelname-action', so in this case
a named view of 'character-detail' would be referenced by this method.
ex.
::
url(r'characters/(?P<slug>[\w\d\-]+)/(?P<pk>[0-9]+)/$',
CharDetailView.as_view(), name='character-detail')
If no View has been created and defined in urls.py, returns an
HTML anchor.
This method is naive and simply returns a path. Securing access to
the actual view and limiting who can view this object is the developer's
responsibility.
Returns:
path (str): URI path to object detail page, if defined.
"""
try:
return reverse(
'help-entry-detail',
kwargs={"category": slugify(self.help_category), "topic": slugify(self.key)},
)
except Exception as e:
log_info(f'Exception: {getattr(e, "message", repr(e))}')
return "#"
def client_width(self):
"""
Get the client screenwidth for the session using this command.