""" Master configuration file for Evennia. NOTE: NO MODIFICATIONS SHOULD BE MADE TO THIS FILE! All settings changes should be done by copy-pasting the variable and its value to game/settings.py. An empty game/settings.py can be auto-generated by running game/manage.py without any arguments. Hint: Don't copy&paste over more from this file than you actually want to change. Anything you don't copy&paste will thus retain its default value - which may change as Evennia is developed. This way you can always be sure of what you have changed and what is default behaviour. """ import os ###################################################################### # Evennia base server config ###################################################################### # This is the name of your game. Make it catchy! SERVERNAME = "Evennia" # Activate telnet service TELNET_ENABLED = True # A list of ports the Evennia telnet server listens on Can be one or many. TELNET_PORTS = [4000] # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. TELNET_INTERFACES = ['0.0.0.0'] # OOB (out-of-band) telnet communication allows Evennia to communicate # special commands and data with enabled Telnet clients. This is used # to create custom client interfaces over a telnet connection. To make # full use of OOB, you need to prepare functions to handle the data # server-side (see OOB_FUNC_MODULE). TELNET_ENABLED is required for this # to work. TELNET_OOB_ENABLED = False # Start the evennia django+twisted webserver so you can # browse the evennia website and the admin interface # (Obs - further web configuration can be found below # in the section 'Config for Django web features') WEBSERVER_ENABLED = True # This is a security setting protecting against host poisoning # attacks. It defaults to allowing all. In production, make # sure to change this to your actual host addresses/IPs. ALLOWED_HOSTS = ["*"] # The webserver sits behind a Portal proxy. This is a list # of tuples (proxyport,serverport) used. The proxyports are what # the Portal proxy presents to the world. The serverports are # the internal ports the proxy uses to forward data to the Server-side # webserver (these should not be publicly open) WEBSERVER_PORTS = [(8000, 5001)] # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. WEBSERVER_INTERFACES = ['0.0.0.0'] # IP addresses that may talk to the server in a reverse proxy configuration, # like NginX. UPSTREAM_IPS = ['127.0.0.1'] # The webserver uses threadpool for handling requests. This will scale # with server load. Set the minimum and maximum number of threads it # may use as (min, max) (must be > 0) WEBSERVER_THREADPOOL_LIMITS = (1, 20) # Start the evennia webclient. This requires the webserver to be running and # offers the fallback ajax-based webclient backbone for browsers not supporting # the websocket one. WEBCLIENT_ENABLED = True # Activate Websocket support for modern browsers. If this is on, the # default webclient will use this and only use the ajax version of the browser # is too old to support websockets. Requires WEBCLIENT_ENABLED. WEBSOCKET_CLIENT_ENABLED = True # Server-side websocket port to open for the webclient. WEBSOCKET_CLIENT_PORT = 8001 # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. WEBSOCKET_CLIENT_INTERFACE = '0.0.0.0' # Actual URL for webclient component to reach the websocket. The first # port number in the WEBSOCKET_PORTS list will be automatically appended. WEBSOCKET_CLIENT_URL = "ws://localhost" # Activate SSH protocol communication (SecureShell) SSH_ENABLED = False # Ports to use for SSH SSH_PORTS = [8022] # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. SSH_INTERFACES = ['0.0.0.0'] # Activate SSL protocol (SecureSocketLibrary) SSL_ENABLED = False # Ports to use for SSL SSL_PORTS = [4001] # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. SSL_INTERFACES = ['0.0.0.0'] # Activate custom websocket support. This is unrelated to the websocket client! # This is intended to be used by optional third-party connections/applications # or clients. WEBSOCKET_ENABLED = False # Ports to use for Websockets WEBSOCKET_PORTS = [8021] # Interface addresses to listen to. If 0.0.0.0, listen to all. Use :: for IPv6. WEBSOCKET_INTERFACES = ['0.0.0.0'] # This determine's whether Evennia's custom admin page is used, or if the # standard Django admin is used. EVENNIA_ADMIN = True # The path that contains this settings.py file (no trailing slash). BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Path to the src directory containing the bulk of the codebase's code. SRC_DIR = os.path.join(BASE_PATH, 'src') # Path to the game directory (containing the database file if using sqlite). GAME_DIR = os.path.join(BASE_PATH, 'game') # Place to put log files LOG_DIR = os.path.join(GAME_DIR, 'logs') SERVER_LOG_FILE = os.path.join(LOG_DIR, 'server.log') PORTAL_LOG_FILE = os.path.join(LOG_DIR, 'portal.log') HTTP_LOG_FILE = os.path.join(LOG_DIR, 'http_requests.log') # Rotate log files when server and/or portal stops. This will keep log # file sizes down. Turn off to get ever growing log files and never # loose log info. CYCLE_LOGFILES = True # Local time zone for this installation. All choices can be found here: # http://www.postgresql.org/docs/8.0/interactive/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE TIME_ZONE = 'UTC' # Authentication backends. This is the code used to authenticate a user. AUTHENTICATION_BACKENDS = ( 'src.web.utils.backends.CaseInsensitiveModelBackend',) # Language code for this installation. All choices can be found here: # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes LANGUAGE_CODE = 'en-us' # How long time (in seconds) a user may idle before being logged # out. This can be set as big as desired. A user may avoid being # thrown off by sending the empty system command 'idle' to the server # at regular intervals. Set <=0 to deactivate idle timout completely. IDLE_TIMEOUT = 3600 # The idle command can be sent to keep your session active without actually # having to spam normal commands regularly. It gives no feedback, only updates # the idle timer. IDLE_COMMAND = "idle" # The set of encodings tried. A Player object may set an attribute "encoding" on # itself to match the client used. If not set, or wrong encoding is # given, this list is tried, in order, aborting on the first match. # Add sets for languages/regions your players are likely to use. # (see http://en.wikipedia.org/wiki/Character_encoding) ENCODINGS = ["utf-8", "latin-1", "ISO-8859-1"] # The game server opens an AMP port so that the portal can # communicate with it. This is an internal functionality of Evennia, usually # operating between two processes on the same machine. You usually don't need to # change this unless you cannot use the default AMP port/host for # whatever reason. AMP_HOST = 'localhost' AMP_PORT = 5000 AMP_INTERFACE = '127.0.0.1' # Database objects are cached in what is known as the idmapper. The idmapper # caching results in a massive speedup of the server (since it dramatically # limits the number of database accesses needed) and also allows for # storing temporary data on objects. It is however also the main memory # consumer of Evennia. With this setting the cache can be capped and # flushed when it reaches a certain size. Minimum is 50 MB but it is # not recommended to set this to less than 100 MB for a distribution # system. # Empirically, N_objects_in_cache ~ ((RMEM - 35) / 0.0157): # mem(MB) | objs in cache || mem(MB) | objs in cache # 50 | ~1000 || 800 | ~49 000 # 100 | ~4000 || 1200 | ~75 000 # 200 | ~10 000 || 1600 | ~100 000 # 500 | ~30 000 || 2000 | ~125 000 # Note that the estimated memory usage is not exact (and the cap is only # checked every 5 minutes), so err on the side of caution if # running on a server with limited memory. Also note that Python # will not necessarily return the memory to the OS when the idmapper # flashes (the memory will be freed and made available to the Python # process only). How many objects need to be in memory at any given # time depends very much on your game so some experimentation may # be necessary (use @server to see how many objects are in the idmapper # cache at any time). Setting this to None disables the cache cap. IDMAPPER_CACHE_MAXSIZE = 200 # (MB) ###################################################################### # Evennia Database config ###################################################################### # Database config syntax for Django 1.2+. # ENGINE - path to the the database backend. Possible choices are: # 'django.db.backends.sqlite3', (default) # 'django.db.backends.mysql', # 'django.db.backends.'postgresql_psycopg2' (see Issue 241), # 'django.db.backends.oracle' (untested). # NAME - database name, or path to the db file for sqlite3 # USER - db admin (unused in sqlite3) # PASSWORD - db admin password (unused in sqlite3) # HOST - empty string is localhost (unused in sqlite3) # PORT - empty string defaults to localhost (unused in sqlite3) DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(GAME_DIR, 'evennia.db3'), 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '' }} ###################################################################### # Evennia pluggable modules ###################################################################### # Plugin modules extend Evennia in various ways. In the cases with no # existing default, there are examples of many of these modules # in game/gamesrc/conf/examples. # The command parser module to use. See the default module for which # functions it must implement COMMAND_PARSER = "src.commands.cmdparser.cmdparser" # The handler that outputs errors when searching # objects using object.search(). SEARCH_AT_RESULT = "src.commands.cmdparser.at_search_result" # The parser used in order to separate multiple # object matches (so you can separate between same-named # objects without using dbrefs). SEARCH_AT_MULTIMATCH_INPUT = "src.commands.cmdparser.at_multimatch_input" # The module holding text strings for the connection screen. # This module should contain one or more variables # with strings defining the look of the screen. CONNECTION_SCREEN_MODULE = "src.commands.connection_screen" # An optional module that, if existing, must hold a function # named at_initial_setup(). This hook method can be used to customize # the server's initial setup sequence (the very first startup of the system). # The check will fail quietly if module doesn't exist or fails to load. AT_INITIAL_SETUP_HOOK_MODULE = "" # Module containing your custom at_server_start(), at_server_reload() and # at_server_stop() methods. These methods will be called every time # the server starts, reloads and resets/stops respectively. AT_SERVER_STARTSTOP_MODULE = "" # List of one or more module paths to modules containing a function start_ # plugin_services(application). This module will be called with the main # Evennia Server application when the Server is initiated. # It will be called last in the startup sequence. SERVER_SERVICES_PLUGIN_MODULES = [] # List of one or more module paths to modules containing a function # start_plugin_services(application). This module will be called with the # main Evennia Portal application when the Portal is initiated. # It will be called last in the startup sequence. PORTAL_SERVICES_PLUGIN_MODULES = [] # Module holding MSSP meta data. This is used by MUD-crawlers to determine # what type of game you are running, how many players you have etc. MSSP_META_MODULE = "" # Tuple of modules implementing lock functions. All callable functions # inside these modules will be available as lock functions. LOCK_FUNC_MODULES = ("src.locks.lockfuncs",) # Module holding OOB (Out of Band) hook objects. This allows for customization # and expansion of which hooks OOB protocols are allowed to call on the server # protocols for attaching tracker hooks for when various object field change OOB_PLUGIN_MODULES = ["src.server.oob_cmds"] ###################################################################### # Default command sets ###################################################################### # Note that with the exception of the unloggedin set (which is not # stored anywhere in the databse), changing these paths will only affect # NEW created characters/objects, not those already in play. So if you plan to # change this, it's recommended you do it before having created a lot of objects # (or simply reset the database after the change for simplicity). Remember # that you should never edit things in src/. Instead copy out the examples # in game/gamesrc/commands/examples up one level and re-point these settings # to point to these copies instead - these you can then change as you please # (or copy/paste from the default modules in src/ if you prefer). # Command set used on session before player has logged in CMDSET_UNLOGGEDIN = "src.commands.default.cmdset_unloggedin.UnloggedinCmdSet" # Command set used on the logged-in session CMDSET_SESSION = "src.commands.default.cmdset_session.SessionCmdSet" # Default set for logged in player with characters (fallback) CMDSET_CHARACTER = "src.commands.default.cmdset_character.CharacterCmdSet" # Command set for players without a character (ooc) CMDSET_PLAYER = "src.commands.default.cmdset_player.PlayerCmdSet" # Location to search for cmdsets if full path not given CMDSET_PATHS = ["game.gamesrc.commands"] ###################################################################### # Typeclasses and other paths ###################################################################### # Server-side session class used. SERVER_SESSION_CLASS = "src.server.serversession.ServerSession" # Base paths for typeclassed object classes. These paths must be # defined relative evennia's root directory. They will be searched in # order to find relative typeclass paths. OBJECT_TYPECLASS_PATHS = ["game.gamesrc.objects", "game.gamesrc.objects.examples", "contrib"] SCRIPT_TYPECLASS_PATHS = ["game.gamesrc.scripts", "game.gamesrc.scripts.examples", "contrib"] PLAYER_TYPECLASS_PATHS = ["game.gamesrc.objects", "contrib"] CHANNEL_TYPECLASS_PATHS = ["game.gamesrc.conf", "contrib"] # Typeclass for player objects (linked to a character) (fallback) BASE_PLAYER_TYPECLASS = "src.players.player.Player" # Typeclass and base for all objects (fallback) BASE_OBJECT_TYPECLASS = "src.objects.objects.Object" # Typeclass for character objects linked to a player (fallback) BASE_CHARACTER_TYPECLASS = "src.objects.objects.Character" # Typeclass for rooms (fallback) BASE_ROOM_TYPECLASS = "src.objects.objects.Room" # Typeclass for Exit objects (fallback). BASE_EXIT_TYPECLASS = "src.objects.objects.Exit" # Typeclass for Channel (fallback). BASE_CHANNEL_TYPECLASS = "src.comms.comms.Channel" # Typeclass for Scripts (fallback). You usually don't need to change this # but create custom variations of scripts on a per-case basis instead. BASE_SCRIPT_TYPECLASS = "src.scripts.scripts.DoNothing" # The default home location used for all objects. This is used as a # fallback if an object's normal home location is deleted. Default # is Limbo (#2). DEFAULT_HOME = "#2" # The start position for new characters. Default is Limbo (#2). # MULTISESSION_MODE = 0, 1 - used by default unloggedin create command # MULTISESSION_MODE = 2,3 - used by default character_create command START_LOCATION = "#2" # Lookups of Attributes, Tags, Nicks, Aliases can be aggressively # cached to avoid repeated database hits. This often gives noticeable # performance gains since they are called so often. Drawback is that # if you are accessing the database from multiple processes (such as # from a website -not- running Evennia's own webserver) data may go # out of sync between the processes. Keep on unless you face such # issues. TYPECLASS_AGGRESSIVE_CACHE = True ###################################################################### # Batch processors ###################################################################### # Python path to a directory to be searched for batch scripts # for the batch processors (.ev and/or .py files). BASE_BATCHPROCESS_PATHS = ['game.gamesrc.world', 'contrib'] ###################################################################### # Game Time setup ###################################################################### # You don't actually have to use this, but it affects the routines in # src.utils.gametime.py and allows for a convenient measure to # determine the current in-game time. You can of course interpret # "week", "month" etc as your own in-game time units as desired. #The time factor dictates if the game world runs faster (timefactor>1) # or slower (timefactor<1) than the real world. TIME_FACTOR = 2.0 # These measures might or might not make sense to your game world. TIME_SEC_PER_MIN = 60 TIME_MIN_PER_HOUR = 60 TIME_HOUR_PER_DAY = 24 TIME_DAY_PER_WEEK = 7 TIME_WEEK_PER_MONTH = 4 TIME_MONTH_PER_YEAR = 12 ###################################################################### # Default Player setup and access ###################################################################### # Different Multisession modes allow a player (=account) to connect to the # game simultaneously with multiple clients (=sessions). In modes 0,1 there is # only one character created to the same name as the account at first login. # In modes 2,3 no default character will be created and the MAX_NR_CHARACTERS # value (below) defines how many characters the default char_create command # allow per player. # 0 - single session, one player, one character, when a new session is # connected, the old one is disconnected # 1 - multiple sessions, one player, one character, each session getting # the same data # 2 - multiple sessions, one player, many characters, one session per # character (disconnects multiplets) # 3 - like mode 2, except multiple sessions can puppet one character, each # session getting the same data. MULTISESSION_MODE = 0 # The maximum number of characters allowed for MULTISESSION_MODE 2,3. This is # checked by the default ooc char-creation command. Forced to 1 for # MULTISESSION_MODE 0 and 1. MAX_NR_CHARACTERS = 1 # The access hiearchy, in climbing order. A higher permission in the # hierarchy includes access of all levels below it. Used by the perm()/pperm() # lock functions. PERMISSION_HIERARCHY = ["Guests", # note-only used if GUEST_ENABLED=True "Players", "PlayerHelpers", "Builders", "Wizards", "Immortals"] # The default permission given to all new players PERMISSION_PLAYER_DEFAULT = "Players" # Default sizes for client window (in number of characters), if client # is not supplying this on its own CLIENT_DEFAULT_WIDTH = 78 CLIENT_DEFAULT_HEIGHT = 45 # telnet standard is 24 but does anyone use such # low-res displays anymore? ###################################################################### # Guest accounts ###################################################################### # This enables guest logins, by default via "connect guest" GUEST_ENABLED = False # Typeclass for guest player objects (linked to a character) BASE_GUEST_TYPECLASS = "src.players.player.Guest" # The permission given to guests PERMISSION_GUEST_DEFAULT = "Guests" # The default home location used for guests. GUEST_HOME = DEFAULT_HOME # The start position used for guest characters. GUEST_START_LOCATION = START_LOCATION # The naming convention used for creating new guest # players/characters. The size of this list also detemines how many # guests may be on the game at once. The default is a maximum of nine # guests, named Guest1 through Guest9. GUEST_LIST = ["Guest" + str(s+1) for s in range(9)] ###################################################################### # In-game Channels created from server start ###################################################################### # Each default channel is defined by a tuple containing # (name, aliases, description, locks) # where aliases may be a tuple too, and locks is # a valid lockstring definition. # Default user channel for communication CHANNEL_PUBLIC = ("Public", ('ooc',), 'Public discussion', "control:perm(Wizards);listen:all();send:all()") # General info about the server CHANNEL_MUDINFO = ("MUDinfo", '', 'Informative messages', "control:perm(Immortals);listen:perm(Immortals);send:false()") # Channel showing when new people connecting CHANNEL_CONNECTINFO = ("MUDconnections", '', 'Connection log', "control:perm(Immortals);listen:perm(Wizards);send:false()") ###################################################################### # External Channel connections ###################################################################### # Note: You do *not* have to make your MUD open to # the public to use the external connections, they # operate as long as you have an internet connection, # just like stand-alone chat clients. IRC and IMC2 # requires that you have twisted.words installed. # Evennia can connect to external IRC channels and # echo what is said on the channel to IRC and vice # versa. Obs - make sure the IRC network allows bots. # When enabled, command @irc2chan will be available in-game IRC_ENABLED = False # RSS allows to connect RSS feeds (from forum updates, blogs etc) to # an in-game channel. The channel will be updated when the rss feed # updates. Use @rss2chan in game to connect if this setting is # active. OBS: RSS support requires the python-feedparser package to # be installed (through package manager or from the website # http://code.google.com/p/feedparser/) RSS_ENABLED=False RSS_UPDATE_INTERVAL = 60*10 # 10 minutes # IMC (Inter-MUD communication) allows to connect an Evennia channel # to an IMC2 server. This lets them talk to people on other MUDs also # using IMC. Evennia's IMC2 client was developed against MudByte's # network. You must register your MUD on the network before you can # use it, go to http://www.mudbytes.net/imc2-intermud-join-network. # Choose 'Other unsupported IMC2 version' from the choices and and # enter your information there. You should enter the same 'short mud # name' as your SERVERNAME above, then choose imc network server as # well as client/server passwords same as below. When enabled, the # command @imc2chan becomes available in-game and allows you to # connect Evennia channels to IMC channels on the network. The Evennia # discussion channel 'ievennia' is on server01.mudbytes.net:5000. # NOTE - IMC2 is currently NOT FUNCTIONAL due to lack of testing means. IMC2_ENABLED = False IMC2_NETWORK = "server01.mudbytes.net" IMC2_PORT = 5000 # this is the imc2 port, not on localhost IMC2_CLIENT_PWD = "" IMC2_SERVER_PWD = "" ###################################################################### # Django web features ###################################################################### # While DEBUG is False, show a regular server error page on the web # stuff, email the traceback to the people in the ADMINS tuple # below. If True, show a detailed traceback for the web # browser to display. Note however that this will leak memory when # active, so make sure to turn it off for a production server! DEBUG = False # While true, show "pretty" error messages for template syntax errors. TEMPLATE_DEBUG = DEBUG # Emails are sent to these people if the above DEBUG value is False. If you'd # rather nobody recieve emails, leave this commented out or empty. ADMINS = () #'Your Name', 'your_email@domain.com'),) # These guys get broken link notifications when SEND_BROKEN_LINK_EMAILS is True. MANAGERS = ADMINS # Absolute path to the directory that holds file uploads from web apps. # Example: "/home/media/media.lawrence.com" MEDIA_ROOT = os.path.join(GAME_DIR, "gamesrc", "web", "media") # It's safe to dis-regard this, as it's a Django feature we only half use as a # dependency, not actually what it's primarily meant for. SITE_ID = 1 # The age for sessions. # Default: 1209600 (2 weeks, in seconds) SESSION_COOKIE_AGE = 1209600 # Session cookie domain # Default: None SESSION_COOKIE_DOMAIN = None # The name of the cookie to use for sessions. # Default: 'sessionid' SESSION_COOKIE_NAME = 'sessionid' # Should the session expire when the browser closes? # Default: False SESSION_EXPIRE_AT_BROWSER_CLOSE = False # If you set this to False, Django will make some optimizations so as not # to load the internationalization machinery. USE_I18N = False # Where to find locales (no need to change this, most likely) LOCALE_PATHS = ["../locale/"] # This should be turned off unless you want to do tests with Django's # development webserver (normally Evennia runs its own server) SERVE_MEDIA = False # The master urlconf file that contains all of the sub-branches to the # applications. Change this to add your own URLs to the website. ROOT_URLCONF = 'src.web.urls' # Where users are redirected after logging in via contrib.auth.login. LOGIN_REDIRECT_URL = '/' # Where to redirect users when using the @login_required decorator. LOGIN_URL = '/accounts/login' # Where to redirect users who wish to logout. LOGOUT_URL = '/accounts/login' # URL that handles the media served from MEDIA_ROOT. # Example: "http://media.lawrence.com" MEDIA_URL = '/media/' # URL prefix for admin media -- CSS, JavaScript and images. Make sure # to use a trailing slash. Django1.4+ will look for admin files under # STATIC_URL/admin. STATIC_URL = '/static/' STATIC_ROOT = os.path.join(GAME_DIR, "gamesrc", "web", "static") # Directories from which static files will be gathered from. STATICFILES_DIRS = ( os.path.join(GAME_DIR, "gamesrc", "web", "static_overrides"), os.path.join(SRC_DIR, "web", "static"),) # Patterns of files in the static directories. Used here to make sure that # its readme file is preserved but unused. STATICFILES_IGNORE_PATTERNS = ('README.md',) # The name of the currently selected web template. This corresponds to the # directory names shown in the webtemplates directory. ACTIVE_TEMPLATE = 'prosimii' # We setup the location of the website template as well as the admin site. TEMPLATE_DIRS = ( os.path.join(GAME_DIR, "gamesrc", "web", "template_overrides"), os.path.join(SRC_DIR, "web", "templates", ACTIVE_TEMPLATE), os.path.join(SRC_DIR, "web", "templates"),) # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader',) # MiddleWare are semi-transparent extensions to Django's functionality. # see http://www.djangoproject.com/documentation/middleware/ for a more detailed # explanation. MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # 1.4? 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.doc.XViewMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',) # Context processors define context variables, generally for the template # system to use. TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.i18n', 'django.core.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.media', 'django.core.context_processors.debug', 'src.web.utils.general_context.general_context',) ###################################################################### # Evennia components ###################################################################### # Global and Evennia-specific apps. This ties everything together so we can # refer to app models and perform DB syncs. INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.sites', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.admindocs', 'django.contrib.flatpages', 'django.contrib.staticfiles', 'src.server', 'src.typeclasses', 'src.players', 'src.objects', 'src.comms', 'src.help', 'src.scripts', 'src.web.webclient') # The user profile extends the User object with more functionality; # This should usually not be changed. AUTH_USER_MODEL = "players.PlayerDB" #AUTH_PROFILE_MODULE = "players.PlayerDB" # Use a custom test runner that just tests Evennia-specific apps. TEST_RUNNER = 'src.server.tests.EvenniaTestSuiteRunner' ###################################################################### # Django extensions ###################################################################### # Django extesions are useful third-party tools that are not # always included in the default django distro. try: import django_extensions INSTALLED_APPS = INSTALLED_APPS + ('django_extensions',) except ImportError: pass # South handles automatic database scheme migrations when evennia # updates try: import south INSTALLED_APPS = INSTALLED_APPS + ('south',) except ImportError: pass ####################################################################### # SECRET_KEY ####################################################################### # This is the salt for cryptographic hashing used by Django. # It is a fallback for the SECRET_KEY setting in settings.py, which # is randomly seeded when settings.py is first created. If copying # from here, make sure to change it! SECRET_KEY = 'changeme!(*#&*($&*(#*(&SDFKJJKLS*(@#KJAS'