Move create methods into managers, leave utils.create as wrappers.
Resolve #2118.
This commit is contained in:
parent
cc22a776ee
commit
e70337b6d2
8 changed files with 692 additions and 522 deletions
|
|
@ -1,8 +1,11 @@
|
|||
"""
|
||||
Custom manager for HelpEntry objects.
|
||||
"""
|
||||
from django.db import IntegrityError
|
||||
from evennia.utils import logger, utils
|
||||
from evennia.typeclasses.managers import TypedObjectManager
|
||||
from evennia.utils.utils import make_iter
|
||||
from evennia.server import signals
|
||||
|
||||
__all__ = ("HelpEntryManager",)
|
||||
|
||||
|
|
@ -149,3 +152,46 @@ class HelpEntryManager(TypedObjectManager):
|
|||
return self.filter(db_key__iexact=ostring, db_help_category__iexact=help_category)
|
||||
else:
|
||||
return self.filter(db_key__iexact=ostring)
|
||||
|
||||
def create_help(self, key, entrytext, category="General", locks=None, aliases=None, tags=None):
|
||||
"""
|
||||
Create a static help entry in the help database. Note that Command
|
||||
help entries are dynamic and directly taken from the __doc__
|
||||
entries of the command. The database-stored help entries are
|
||||
intended for more general help on the game, more extensive info,
|
||||
in-game setting information and so on.
|
||||
|
||||
Args:
|
||||
key (str): The name of the help entry.
|
||||
entrytext (str): The body of te help entry
|
||||
category (str, optional): The help category of the entry.
|
||||
locks (str, optional): A lockstring to restrict access.
|
||||
aliases (list of str, optional): List of alternative (likely shorter) keynames.
|
||||
tags (lst, optional): List of tags or tuples `(tag, category)`.
|
||||
|
||||
Returns:
|
||||
help (HelpEntry): A newly created help entry.
|
||||
|
||||
"""
|
||||
try:
|
||||
new_help = self.model()
|
||||
new_help.key = key
|
||||
new_help.entrytext = entrytext
|
||||
new_help.help_category = category
|
||||
if locks:
|
||||
new_help.locks.add(locks)
|
||||
if aliases:
|
||||
new_help.aliases.add(make_iter(aliases))
|
||||
if tags:
|
||||
new_help.tags.batch_add(*tags)
|
||||
new_help.save()
|
||||
return new_help
|
||||
except IntegrityError:
|
||||
string = "Could not add help entry: key '%s' already exists." % key
|
||||
logger.log_err(string)
|
||||
return None
|
||||
except Exception:
|
||||
logger.log_trace()
|
||||
return None
|
||||
|
||||
signals.SIGNAL_HELPENTRY_POST_CREATE.send(sender=new_help)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue