Make evennia doc-build not require gamedir

This commit is contained in:
Griatch 2021-02-25 08:52:52 +01:00
parent 76d087ffb0
commit 2227f16e17
4 changed files with 46 additions and 28 deletions

View file

@ -10,6 +10,7 @@ import time
from calendar import monthrange
from datetime import datetime, timedelta
from django.db.utils import OperationalError
from django.conf import settings
from evennia import DefaultScript
from evennia.server.models import ServerConfig
@ -23,7 +24,12 @@ IGNORE_DOWNTIMES = settings.TIME_IGNORE_DOWNTIMES
# Only set if gametime_reset was called at some point.
GAME_TIME_OFFSET = ServerConfig.objects.conf("gametime_offset", default=0)
try:
GAME_TIME_OFFSET = ServerConfig.objects.conf("gametime_offset", default=0)
except OperationalError:
# the db is not initialized
print("Gametime offset could not load - db not set up.")
GAME_TIME_OFFSET = 0
# Common real-life time measure, in seconds.
# You should not change this.

View file

@ -26,6 +26,7 @@ Example: To reach the search method 'get_object_with_account'
# Import the manager methods to be wrapped
from django.db.utils import OperationalError
from django.contrib.contenttypes.models import ContentType
# limit symbol import from API
@ -44,13 +45,23 @@ __all__ = (
# import objects this way to avoid circular import problems
ObjectDB = ContentType.objects.get(app_label="objects", model="objectdb").model_class()
AccountDB = ContentType.objects.get(app_label="accounts", model="accountdb").model_class()
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
Channel = ContentType.objects.get(app_label="comms", model="channeldb").model_class()
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
Tag = ContentType.objects.get(app_label="typeclasses", model="tag").model_class()
try:
ObjectDB = ContentType.objects.get(app_label="objects", model="objectdb").model_class()
AccountDB = ContentType.objects.get(app_label="accounts", model="accountdb").model_class()
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
ChannelDB = ContentType.objects.get(app_label="comms", model="channeldb").model_class()
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
Tag = ContentType.objects.get(app_label="typeclasses", model="tag").model_class()
except OperationalError:
# this is a fallback used during tests/doc building
print("Couldn't initialize search managers - db not set up.")
from evennia.objects.models import ObjectDB
from evennia.accounts.models import AccountDB
from evennia.scripts.models import ScriptDB
from evennia.comms.models import Msg, ChannelDB
from evennia.help.models import HelpEntry
from evennia.typeclasses.tags import Tag
# -------------------------------------------------------------------
@ -171,7 +182,7 @@ messages = search_messages
# exact - requires an exact ostring match (not case sensitive)
#
search_channel = Channel.objects.channel_search
search_channel = ChannelDB.objects.channel_search
search_channels = search_channel
channel_search = search_channel
channels = search_channels
@ -347,7 +358,7 @@ def search_channel_tag(key=None, category=None, tagtype=None, **kwargs):
matches were found.
"""
return Channel.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs)
return ChannelDB.objects.get_by_tag(key=key, category=category, tagtype=tagtype, **kwargs)
# search for tag objects (not the objects they are attached to