Turned comms into typeclassed objects.
This commit is contained in:
parent
39b69dcdc2
commit
851e6d00cc
28 changed files with 1000 additions and 291 deletions
|
|
@ -38,7 +38,7 @@ from django.contrib.auth.models import User
|
||||||
from src.players.models import PlayerDB
|
from src.players.models import PlayerDB
|
||||||
from src.objects.models import ObjectDB
|
from src.objects.models import ObjectDB
|
||||||
from src.server.models import ServerConfig
|
from src.server.models import ServerConfig
|
||||||
from src.comms.models import Channel
|
from src.comms.models import ChannelDB
|
||||||
|
|
||||||
from src.commands.cmdset import CmdSet
|
from src.commands.cmdset import CmdSet
|
||||||
from src.utils import create, logger, utils, ansi
|
from src.utils import create, logger, utils, ansi
|
||||||
|
|
@ -231,7 +231,7 @@ its and @/./+/-/_ only.") # this echoes the restrictions made by django's auth m
|
||||||
# join the new player to the public channel
|
# join the new player to the public channel
|
||||||
pchanneldef = settings.CHANNEL_PUBLIC
|
pchanneldef = settings.CHANNEL_PUBLIC
|
||||||
if pchanneldef:
|
if pchanneldef:
|
||||||
pchannel = Channel.objects.get_channel(pchanneldef[0])
|
pchannel = ChannelDB.objects.get_channel(pchanneldef[0])
|
||||||
if not pchannel.connect_to(new_player):
|
if not pchannel.connect_to(new_player):
|
||||||
string = "New player '%s' could not connect to public channel!" % new_player.key
|
string = "New player '%s' could not connect to public channel!" % new_player.key
|
||||||
logger.log_errmsg(string)
|
logger.log_errmsg(string)
|
||||||
|
|
|
||||||
8
ev.py
8
ev.py
|
|
@ -133,7 +133,7 @@ from src.locks import lockfuncs
|
||||||
from src.scripts.scripts import Script
|
from src.scripts.scripts import Script
|
||||||
|
|
||||||
# comms
|
# comms
|
||||||
from src.comms.models import Msg, Channel, PlayerChannelConnection, ExternalChannelConnection
|
from src.comms.models import Msg, ChannelDB, PlayerChannelConnection, ExternalChannelConnection
|
||||||
|
|
||||||
# objects
|
# objects
|
||||||
from src.objects.objects import Object, Character, Room, Exit
|
from src.objects.objects import Object, Character, Room, Exit
|
||||||
|
|
@ -194,7 +194,7 @@ class DBmanagers(_EvContainer):
|
||||||
from src.help.models import HelpEntry
|
from src.help.models import HelpEntry
|
||||||
from src.players.models import PlayerDB
|
from src.players.models import PlayerDB
|
||||||
from src.scripts.models import ScriptDB
|
from src.scripts.models import ScriptDB
|
||||||
from src.comms.models import Msg, Channel, PlayerChannelConnection, ExternalChannelConnection
|
from src.comms.models import Msg, ChannelDB, PlayerChannelConnection, ExternalChannelConnection
|
||||||
from src.objects.models import ObjectDB
|
from src.objects.models import ObjectDB
|
||||||
from src.server.models import ServerConfig
|
from src.server.models import ServerConfig
|
||||||
|
|
||||||
|
|
@ -202,12 +202,12 @@ class DBmanagers(_EvContainer):
|
||||||
players = PlayerDB.objects
|
players = PlayerDB.objects
|
||||||
scripts = ScriptDB.objects
|
scripts = ScriptDB.objects
|
||||||
msgs = Msg.objects
|
msgs = Msg.objects
|
||||||
channels = Channel.objects
|
channels = ChannelDB.objects
|
||||||
connections = PlayerChannelConnection.objects
|
connections = PlayerChannelConnection.objects
|
||||||
externalconnections = ExternalChannelConnection.objects
|
externalconnections = ExternalChannelConnection.objects
|
||||||
objects = ObjectDB.objects
|
objects = ObjectDB.objects
|
||||||
serverconfigs = ServerConfig.objects
|
serverconfigs = ServerConfig.objects
|
||||||
del HelpEntry, PlayerDB, ScriptDB, Msg, Channel, PlayerChannelConnection,
|
del HelpEntry, PlayerDB, ScriptDB, Msg, ChannelDB, PlayerChannelConnection,
|
||||||
del ExternalChannelConnection, ObjectDB, ServerConfig
|
del ExternalChannelConnection, ObjectDB, ServerConfig
|
||||||
|
|
||||||
managers = DBmanagers()
|
managers = DBmanagers()
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ class PlayerCmdSet(CmdSet):
|
||||||
self.add(comms.CmdChannels())
|
self.add(comms.CmdChannels())
|
||||||
self.add(comms.CmdCdestroy())
|
self.add(comms.CmdCdestroy())
|
||||||
self.add(comms.CmdChannelCreate())
|
self.add(comms.CmdChannelCreate())
|
||||||
self.add(comms.CmdCset())
|
self.add(comms.CmdClock())
|
||||||
self.add(comms.CmdCBoot())
|
self.add(comms.CmdCBoot())
|
||||||
self.add(comms.CmdCemit())
|
self.add(comms.CmdCemit())
|
||||||
self.add(comms.CmdCWho())
|
self.add(comms.CmdCWho())
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ for easy handling.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from src.comms.models import Channel, Msg, PlayerChannelConnection, ExternalChannelConnection
|
from src.comms.models import ChannelDB, Msg, PlayerChannelConnection, ExternalChannelConnection
|
||||||
from src.comms import irc, imc2, rss
|
from src.comms import irc, imc2, rss
|
||||||
from src.comms.channelhandler import CHANNELHANDLER
|
from src.comms.channelhandler import CHANNELHANDLER
|
||||||
from src.utils import create, utils, prettytable
|
from src.utils import create, utils, prettytable
|
||||||
|
|
@ -27,10 +27,10 @@ def find_channel(caller, channelname, silent=False, noaliases=False):
|
||||||
Helper function for searching for a single channel with
|
Helper function for searching for a single channel with
|
||||||
some error handling.
|
some error handling.
|
||||||
"""
|
"""
|
||||||
channels = Channel.objects.channel_search(channelname)
|
channels = ChannelDB.objects.channel_search(channelname)
|
||||||
if not channels:
|
if not channels:
|
||||||
if not noaliases:
|
if not noaliases:
|
||||||
channels = [chan for chan in Channel.objects.all() if channelname in chan.aliases]
|
channels = [chan for chan in ChannelDB.objects.get_all_channels() if channelname in chan.aliases.all()]
|
||||||
if channels:
|
if channels:
|
||||||
return channels[0]
|
return channels[0]
|
||||||
if not silent:
|
if not silent:
|
||||||
|
|
@ -197,7 +197,7 @@ class CmdAllCom(MuxPlayerCommand):
|
||||||
|
|
||||||
if args == "on":
|
if args == "on":
|
||||||
# get names of all channels available to listen to and activate them all
|
# get names of all channels available to listen to and activate them all
|
||||||
channels = [chan for chan in Channel.objects.get_all_channels() if chan.access(caller, 'listen')]
|
channels = [chan for chan in ChannelDB.objects.get_all_channels() if chan.access(caller, 'listen')]
|
||||||
for channel in channels:
|
for channel in channels:
|
||||||
caller.execute_cmd("addcom %s" % channel.key)
|
caller.execute_cmd("addcom %s" % channel.key)
|
||||||
elif args == "off":
|
elif args == "off":
|
||||||
|
|
@ -207,13 +207,13 @@ class CmdAllCom(MuxPlayerCommand):
|
||||||
caller.execute_cmd("delcom %s" % channel.key)
|
caller.execute_cmd("delcom %s" % channel.key)
|
||||||
elif args == "destroy":
|
elif args == "destroy":
|
||||||
# destroy all channels you control
|
# destroy all channels you control
|
||||||
channels = [chan for chan in Channel.objects.get_all_channels() if chan.access(caller, 'control')]
|
channels = [chan for chan in ChannelDB.objects.get_all_channels() if chan.access(caller, 'control')]
|
||||||
for channel in channels:
|
for channel in channels:
|
||||||
caller.execute_cmd("@cdestroy %s" % channel.key)
|
caller.execute_cmd("@cdestroy %s" % channel.key)
|
||||||
elif args == "who":
|
elif args == "who":
|
||||||
# run a who, listing the subscribers on visible channels.
|
# run a who, listing the subscribers on visible channels.
|
||||||
string = "\n{CChannel subscriptions{n"
|
string = "\n{CChannel subscriptions{n"
|
||||||
channels = [chan for chan in Channel.objects.get_all_channels() if chan.access(caller, 'listen')]
|
channels = [chan for chan in ChannelDB.objects.get_all_channels() if chan.access(caller, 'listen')]
|
||||||
if not channels:
|
if not channels:
|
||||||
string += "No channels."
|
string += "No channels."
|
||||||
for channel in channels:
|
for channel in channels:
|
||||||
|
|
@ -237,8 +237,8 @@ class CmdChannels(MuxPlayerCommand):
|
||||||
@clist
|
@clist
|
||||||
comlist
|
comlist
|
||||||
|
|
||||||
Lists all channels available to you, wether you listen to them or not.
|
Lists all channels available to you, whether you listen to them or not.
|
||||||
Use 'comlist" to only view your current channel subscriptions.
|
Use 'comlist' to only view your current channel subscriptions.
|
||||||
Use addcom/delcom to join and leave channels
|
Use addcom/delcom to join and leave channels
|
||||||
"""
|
"""
|
||||||
key = "@channels"
|
key = "@channels"
|
||||||
|
|
@ -252,12 +252,14 @@ class CmdChannels(MuxPlayerCommand):
|
||||||
caller = self.caller
|
caller = self.caller
|
||||||
|
|
||||||
# all channels we have available to listen to
|
# all channels we have available to listen to
|
||||||
channels = [chan for chan in Channel.objects.get_all_channels() if chan.access(caller, 'listen')]
|
channels = [chan for chan in ChannelDB.objects.get_all_channels() if chan.access(caller, 'listen')]
|
||||||
|
print channels
|
||||||
if not channels:
|
if not channels:
|
||||||
self.msg("No channels available.")
|
self.msg("No channels available.")
|
||||||
return
|
return
|
||||||
# all channel we are already subscribed to
|
# all channel we are already subscribed to
|
||||||
subs = [conn.channel for conn in PlayerChannelConnection.objects.get_all_player_connections(caller)]
|
subs = [conn.channel for conn in PlayerChannelConnection.objects.get_all_player_connections(caller)]
|
||||||
|
print subs
|
||||||
|
|
||||||
if self.cmdstring == "comlist":
|
if self.cmdstring == "comlist":
|
||||||
# just display the subscribed channels with no extra info
|
# just display the subscribed channels with no extra info
|
||||||
|
|
@ -265,21 +267,22 @@ class CmdChannels(MuxPlayerCommand):
|
||||||
for chan in subs:
|
for chan in subs:
|
||||||
clower = chan.key.lower()
|
clower = chan.key.lower()
|
||||||
nicks = caller.nicks.get(category="channel")
|
nicks = caller.nicks.get(category="channel")
|
||||||
comtable.add_row(["%s%s" % (chan.key, chan.aliases and "(%s)" % ",".join(chan.aliases) or ""),
|
comtable.add_row(["%s%s" % (chan.key, chan.aliases.all() and "(%s)" % ",".join(chan.aliases.all()) or ""),
|
||||||
"%s".join(nick.db_key for nick in make_iter(nicks) if nick and nick.value.lower()==clower()),
|
"%s".join(nick for nick in make_iter(nicks) if nick and nick.lower()==clower),
|
||||||
chan.desc])
|
chan.db.desc])
|
||||||
caller.msg("\n{wChannel subscriptions{n (use {w@channels{n to list all, {waddcom{n/{wdelcom{n to sub/unsub):{n\n%s" % comtable)
|
caller.msg("\n{wChannel subscriptions{n (use {w@channels{n to list all, {waddcom{n/{wdelcom{n to sub/unsub):{n\n%s" % comtable)
|
||||||
else:
|
else:
|
||||||
# full listing (of channels caller is able to listen to)
|
# full listing (of channels caller is able to listen to)
|
||||||
comtable = prettytable.PrettyTable(["{wsub","{wchannel","{wmy aliases","{wlocks","{wdescription"])
|
comtable = prettytable.PrettyTable(["{wsub","{wchannel","{wmy aliases","{wlocks","{wdescription"])
|
||||||
for chan in channels:
|
for chan in channels:
|
||||||
|
clower = chan.key.lower()
|
||||||
nicks = caller.nicks.get(category="channel")
|
nicks = caller.nicks.get(category="channel")
|
||||||
if nicks:
|
nicks = nicks or []
|
||||||
comtable.add_row([chan in subs and "{gYes{n" or "{rNo{n",
|
comtable.add_row([chan in subs and "{gYes{n" or "{rNo{n",
|
||||||
"%s%s" % (chan.key, chan.aliases and "(%s)" % ",".join(chan.aliases) or ""),
|
"%s%s" % (chan.key, chan.aliases.all() and "(%s)" % ",".join(chan.aliases.all()) or ""),
|
||||||
"%s".join(nick.db_key for nick in make_iter(nicks) if nick.value.lower()==clower()),
|
"%s".join(nick for nick in make_iter(nicks) if nick.lower()==clower),
|
||||||
chan.locks,
|
str(chan.locks),
|
||||||
chan.desc])
|
chan.db.desc])
|
||||||
caller.msg("\n{wAvailable channels{n (use {wcomlist{n,{waddcom{n and {wdelcom{n to manage subscriptions):\n%s" % comtable)
|
caller.msg("\n{wAvailable channels{n (use {wcomlist{n,{waddcom{n and {wdelcom{n to manage subscriptions):\n%s" % comtable)
|
||||||
|
|
||||||
class CmdCdestroy(MuxPlayerCommand):
|
class CmdCdestroy(MuxPlayerCommand):
|
||||||
|
|
@ -353,7 +356,7 @@ class CmdCBoot(MuxPlayerCommand):
|
||||||
searchstring = playername.lstrip('*')
|
searchstring = playername.lstrip('*')
|
||||||
else:
|
else:
|
||||||
searchstring = self.rhs.lstrip('*')
|
searchstring = self.rhs.lstrip('*')
|
||||||
player = self.search(searchstring, player=True)
|
player = self.caller.search(searchstring, player=True)
|
||||||
if not player:
|
if not player:
|
||||||
return
|
return
|
||||||
if reason:
|
if reason:
|
||||||
|
|
@ -362,7 +365,7 @@ class CmdCBoot(MuxPlayerCommand):
|
||||||
string = "You don't control this channel."
|
string = "You don't control this channel."
|
||||||
self.msg(string)
|
self.msg(string)
|
||||||
return
|
return
|
||||||
if not PlayerChannelConnection.objects.has_connection(player, channel):
|
if not PlayerChannelConnection.objects.has_player_connection(player, channel):
|
||||||
string = "Player %s is not connected to channel %s." % (player.key, channel.key)
|
string = "Player %s is not connected to channel %s." % (player.key, channel.key)
|
||||||
self.msg(string)
|
self.msg(string)
|
||||||
return
|
return
|
||||||
|
|
@ -370,7 +373,8 @@ class CmdCBoot(MuxPlayerCommand):
|
||||||
string = "%s boots %s from channel.%s" % (self.caller, player.key, reason)
|
string = "%s boots %s from channel.%s" % (self.caller, player.key, reason)
|
||||||
channel.msg(string)
|
channel.msg(string)
|
||||||
# find all player's nicks linked to this channel and delete them
|
# find all player's nicks linked to this channel and delete them
|
||||||
for nick in [nick for nick in player.character.nicks.get(category="channel")
|
for nick in [nick for nick in
|
||||||
|
player.character.nicks.get(category="channel") or []
|
||||||
if nick.db_real.lower() == channel.key]:
|
if nick.db_real.lower() == channel.key]:
|
||||||
nick.delete()
|
nick.delete()
|
||||||
# disconnect player
|
# disconnect player
|
||||||
|
|
@ -497,7 +501,7 @@ class CmdChannelCreate(MuxPlayerCommand):
|
||||||
for part in lhs.split(';', 1) if part.strip()]
|
for part in lhs.split(';', 1) if part.strip()]
|
||||||
aliases = [alias.strip().lower()
|
aliases = [alias.strip().lower()
|
||||||
for alias in aliases.split(';') if alias.strip()]
|
for alias in aliases.split(';') if alias.strip()]
|
||||||
channel = Channel.objects.channel_search(channame)
|
channel = ChannelDB.objects.channel_search(channame)
|
||||||
if channel:
|
if channel:
|
||||||
self.msg("A channel with that name already exists.")
|
self.msg("A channel with that name already exists.")
|
||||||
return
|
return
|
||||||
|
|
@ -508,27 +512,27 @@ class CmdChannelCreate(MuxPlayerCommand):
|
||||||
self.msg("Created channel %s and connected to it." % new_chan.key)
|
self.msg("Created channel %s and connected to it." % new_chan.key)
|
||||||
|
|
||||||
|
|
||||||
class CmdCset(MuxPlayerCommand):
|
class CmdClock(MuxPlayerCommand):
|
||||||
"""
|
"""
|
||||||
@cset - changes channel access restrictions
|
@clock - changes channel access restrictions
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
@cset <channel> [= <lockstring>]
|
@clock <channel> [= <lockstring>]
|
||||||
|
|
||||||
Changes the lock access restrictions of a channel. If no
|
Changes the lock access restrictions of a channel. If no
|
||||||
lockstring was given, view the current lock definitions.
|
lockstring was given, view the current lock definitions.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
key = "@cset"
|
key = "@clock"
|
||||||
locks = "cmd:not pperm(channel_banned)"
|
locks = "cmd:not pperm(channel_banned)"
|
||||||
aliases = ["@cclock"]
|
aliases = ["@clock"]
|
||||||
help_category = "Comms"
|
help_category = "Comms"
|
||||||
|
|
||||||
def func(self):
|
def func(self):
|
||||||
"run the function"
|
"run the function"
|
||||||
|
|
||||||
if not self.args:
|
if not self.args:
|
||||||
string = "Usage: @cset channel [= lockstring]"
|
string = "Usage: @clock channel [= lockstring]"
|
||||||
self.msg(string)
|
self.msg(string)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -586,7 +590,7 @@ class CmdCdesc(MuxPlayerCommand):
|
||||||
self.msg("You cannot admin this channel.")
|
self.msg("You cannot admin this channel.")
|
||||||
return
|
return
|
||||||
# set the description
|
# set the description
|
||||||
channel.desc = self.rhs
|
channel.db.desc = self.rhs
|
||||||
channel.save()
|
channel.save()
|
||||||
self.msg("Description of channel '%s' set to '%s'." % (channel.key, self.rhs))
|
self.msg("Description of channel '%s' set to '%s'." % (channel.key, self.rhs))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ line with a command (if there is no match to a known command,
|
||||||
the line is just added to the editor buffer).
|
the line is just added to the editor buffer).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from src.comms.models import Channel
|
from src.comms.models import ChannelDB
|
||||||
from src.utils import create
|
from src.utils import create
|
||||||
|
|
||||||
# The command keys the engine is calling
|
# The command keys the engine is calling
|
||||||
|
|
@ -153,7 +153,7 @@ class SystemSendToChannel(MuxCommand):
|
||||||
if not msg:
|
if not msg:
|
||||||
caller.msg("Say what?")
|
caller.msg("Say what?")
|
||||||
return
|
return
|
||||||
channel = Channel.objects.get_channel(channelkey)
|
channel = ChannelDB.objects.get_channel(channelkey)
|
||||||
if not channel:
|
if not channel:
|
||||||
caller.msg("Channel '%s' not found." % channelkey)
|
caller.msg("Channel '%s' not found." % channelkey)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -247,7 +247,7 @@ class TestComms(CommandTest):
|
||||||
self.call(comms.CmdDelCom(), "tc", "Your alias 'tc' for channel testchan was cleared.")
|
self.call(comms.CmdDelCom(), "tc", "Your alias 'tc' for channel testchan was cleared.")
|
||||||
self.call(comms.CmdChannels(), "" ,"Available channels (use comlist,addcom and delcom to manage")
|
self.call(comms.CmdChannels(), "" ,"Available channels (use comlist,addcom and delcom to manage")
|
||||||
self.call(comms.CmdAllCom(), "", "Available channels (use comlist,addcom and delcom to manage")
|
self.call(comms.CmdAllCom(), "", "Available channels (use comlist,addcom and delcom to manage")
|
||||||
self.call(comms.CmdCset(), "testchan=send:all()", "Lock(s) applied. Current locks on testchan:")
|
self.call(comms.CmdClock(), "testchan=send:all()", "Lock(s) applied. Current locks on testchan:")
|
||||||
self.call(comms.CmdCdesc(), "testchan = Test Channel", "Description of channel 'testchan' set to 'Test Channel'.")
|
self.call(comms.CmdCdesc(), "testchan = Test Channel", "Description of channel 'testchan' set to 'Test Channel'.")
|
||||||
self.call(comms.CmdCemit(), "testchan = Test Message", "Sent to channel testchan: [testchan] Test Message")
|
self.call(comms.CmdCemit(), "testchan = Test Message", "Sent to channel testchan: [testchan] Test Message")
|
||||||
self.call(comms.CmdCWho(), "testchan", "Channel subscriptions\ntestchan:\n TestPlayer7")
|
self.call(comms.CmdCWho(), "testchan", "Channel subscriptions\ntestchan:\n TestPlayer7")
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from django.conf import settings
|
||||||
from src.players.models import PlayerDB
|
from src.players.models import PlayerDB
|
||||||
from src.objects.models import ObjectDB
|
from src.objects.models import ObjectDB
|
||||||
from src.server.models import ServerConfig
|
from src.server.models import ServerConfig
|
||||||
from src.comms.models import Channel
|
from src.comms.models import ChannelDB
|
||||||
|
|
||||||
from src.utils import create, logger, utils, ansi
|
from src.utils import create, logger, utils, ansi
|
||||||
from src.commands.default.muxcommand import MuxCommand
|
from src.commands.default.muxcommand import MuxCommand
|
||||||
|
|
@ -176,7 +176,7 @@ class CmdUnconnectedCreate(MuxCommand):
|
||||||
# join the new player to the public channel
|
# join the new player to the public channel
|
||||||
pchanneldef = settings.CHANNEL_PUBLIC
|
pchanneldef = settings.CHANNEL_PUBLIC
|
||||||
if pchanneldef:
|
if pchanneldef:
|
||||||
pchannel = Channel.objects.get_channel(pchanneldef[0])
|
pchannel = ChannelDB.objects.get_channel(pchanneldef[0])
|
||||||
if not pchannel.connect_to(new_player):
|
if not pchannel.connect_to(new_player):
|
||||||
string = "New player '%s' could not connect to public channel!" % new_player.key
|
string = "New player '%s' could not connect to public channel!" % new_player.key
|
||||||
logger.log_errmsg(string)
|
logger.log_errmsg(string)
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,4 @@ Also, the initiated object manager is available as src.comms.msgmanager and src.
|
||||||
from src.comms.models import *
|
from src.comms.models import *
|
||||||
|
|
||||||
msgmanager = Msg.objects
|
msgmanager = Msg.objects
|
||||||
channelmanager = Channel.objects
|
channelmanager = ChannelDB.objects
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from src.comms.models import Channel, Msg, PlayerChannelConnection, ExternalChannelConnection
|
from src.comms.models import ChannelDB, Msg, PlayerChannelConnection, ExternalChannelConnection
|
||||||
|
|
||||||
class MsgAdmin(admin.ModelAdmin):
|
class MsgAdmin(admin.ModelAdmin):
|
||||||
list_display = ('id', 'db_date_sent', 'db_sender', 'db_receivers', 'db_channels', 'db_message', 'db_lock_storage')
|
list_display = ('id', 'db_date_sent', 'db_sender', 'db_receivers', 'db_channels', 'db_message', 'db_lock_storage')
|
||||||
|
|
@ -48,7 +48,7 @@ class ChannelAdmin(admin.ModelAdmin):
|
||||||
(None, {'fields':(('db_key', 'db_aliases', 'db_desc'),'db_lock_storage', 'db_keep_log')}),
|
(None, {'fields':(('db_key', 'db_aliases', 'db_desc'),'db_lock_storage', 'db_keep_log')}),
|
||||||
)
|
)
|
||||||
|
|
||||||
admin.site.register(Channel, ChannelAdmin)
|
admin.site.register(ChannelDB, ChannelAdmin)
|
||||||
|
|
||||||
# class PlayerChannelConnectionAdmin(admin.ModelAdmin):
|
# class PlayerChannelConnectionAdmin(admin.ModelAdmin):
|
||||||
# list_display = ('db_channel', 'db_player')
|
# list_display = ('db_channel', 'db_player')
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ update() on the channelhandler. Or use Channel.objects.delete() which
|
||||||
does this for you.
|
does this for you.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from src.comms.models import Channel, Msg
|
from src.comms.models import ChannelDB, Msg
|
||||||
from src.commands import cmdset, command
|
from src.commands import cmdset, command
|
||||||
from src.utils import utils
|
from src.utils import utils
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ class ChannelCommand(command.Command):
|
||||||
if not msg:
|
if not msg:
|
||||||
self.msg("Say what?")
|
self.msg("Say what?")
|
||||||
return
|
return
|
||||||
channel = Channel.objects.get_channel(channelkey)
|
channel = ChannelDB.objects.get_channel(channelkey)
|
||||||
|
|
||||||
if not channel:
|
if not channel:
|
||||||
self.msg("Channel '%s' not found." % channelkey)
|
self.msg("Channel '%s' not found." % channelkey)
|
||||||
|
|
@ -112,11 +112,9 @@ class ChannelHandler(object):
|
||||||
def _format_help(self, channel):
|
def _format_help(self, channel):
|
||||||
"builds a doc string"
|
"builds a doc string"
|
||||||
key = channel.key
|
key = channel.key
|
||||||
aliases = channel.aliases
|
aliases = channel.aliases.all()
|
||||||
if not utils.is_iter(aliases):
|
|
||||||
aliases = [aliases]
|
|
||||||
ustring = "%s <message>" % key.lower() + "".join(["\n %s <message>" % alias.lower() for alias in aliases])
|
ustring = "%s <message>" % key.lower() + "".join(["\n %s <message>" % alias.lower() for alias in aliases])
|
||||||
desc = channel.desc
|
desc = channel.db.desc
|
||||||
string = \
|
string = \
|
||||||
"""
|
"""
|
||||||
Channel '%s'
|
Channel '%s'
|
||||||
|
|
@ -137,7 +135,7 @@ class ChannelHandler(object):
|
||||||
"""
|
"""
|
||||||
# map the channel to a searchable command
|
# map the channel to a searchable command
|
||||||
cmd = ChannelCommand(key=channel.key.strip().lower(),
|
cmd = ChannelCommand(key=channel.key.strip().lower(),
|
||||||
aliases=channel.aliases if channel.aliases else [],
|
aliases=channel.aliases.all(),
|
||||||
locks="cmd:all();%s" % channel.locks,
|
locks="cmd:all();%s" % channel.locks,
|
||||||
obj=channel)
|
obj=channel)
|
||||||
cmd.__doc__= self._format_help(channel)
|
cmd.__doc__= self._format_help(channel)
|
||||||
|
|
@ -148,7 +146,7 @@ class ChannelHandler(object):
|
||||||
"Updates the handler completely."
|
"Updates the handler completely."
|
||||||
self.cached_channel_cmds = []
|
self.cached_channel_cmds = []
|
||||||
self.cached_cmdsets = {}
|
self.cached_cmdsets = {}
|
||||||
for channel in Channel.objects.all():
|
for channel in ChannelDB.objects.get_all_channels():
|
||||||
self.add_channel(channel)
|
self.add_channel(channel)
|
||||||
|
|
||||||
def get_cmdset(self, source_object):
|
def get_cmdset(self, source_object):
|
||||||
|
|
|
||||||
21
src/comms/comms.py
Normal file
21
src/comms/comms.py
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
"""
|
||||||
|
Default Typeclass for Comms.
|
||||||
|
|
||||||
|
See objects.objects for more information on Typeclassing.
|
||||||
|
"""
|
||||||
|
from src.typeclasses.typeclass import TypeClass
|
||||||
|
|
||||||
|
|
||||||
|
class Comm(TypeClass):
|
||||||
|
"""
|
||||||
|
This is the base class for all Comms. Inherit from this to create different
|
||||||
|
types of communication channels.
|
||||||
|
"""
|
||||||
|
def __init__(self, dbobj):
|
||||||
|
super(Comm, self).__init__(dbobj)
|
||||||
|
|
||||||
|
def format_message(self, msg):
|
||||||
|
"""
|
||||||
|
Takes a Msg (see models.Msg), and derives the output display for it on
|
||||||
|
the channel.
|
||||||
|
"""
|
||||||
|
|
@ -11,7 +11,7 @@ from django.conf import settings
|
||||||
from src.utils import logger, create, search, utils
|
from src.utils import logger, create, search, utils
|
||||||
from src.server.sessionhandler import SESSIONS
|
from src.server.sessionhandler import SESSIONS
|
||||||
from src.scripts.scripts import Script
|
from src.scripts.scripts import Script
|
||||||
from src.comms.models import Channel, ExternalChannelConnection
|
from src.comms.models import ChannelDB, ExternalChannelConnection
|
||||||
from src.comms.imc2lib import imc2_packets as pck
|
from src.comms.imc2lib import imc2_packets as pck
|
||||||
from src.comms.imc2lib.imc2_trackers import IMC2MudList, IMC2ChanList
|
from src.comms.imc2lib.imc2_trackers import IMC2MudList, IMC2ChanList
|
||||||
from src.comms.imc2lib.imc2_listeners import handle_whois_reply
|
from src.comms.imc2lib.imc2_listeners import handle_whois_reply
|
||||||
|
|
@ -26,7 +26,7 @@ IMC2_CLIENT_PWD = settings.IMC2_CLIENT_PWD
|
||||||
IMC2_SERVER_PWD = settings.IMC2_SERVER_PWD
|
IMC2_SERVER_PWD = settings.IMC2_SERVER_PWD
|
||||||
|
|
||||||
# channel to send info to
|
# channel to send info to
|
||||||
INFOCHANNEL = Channel.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
INFOCHANNEL = ChannelDB.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
||||||
# all linked channel connections
|
# all linked channel connections
|
||||||
IMC2_CLIENT = None
|
IMC2_CLIENT = None
|
||||||
# IMC2 debug mode
|
# IMC2 debug mode
|
||||||
|
|
@ -407,8 +407,8 @@ def create_connection(channel, imc2_channel):
|
||||||
This will create a new IMC2<->channel connection.
|
This will create a new IMC2<->channel connection.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if not type(channel) == Channel:
|
if not type(channel) == ChannelDB:
|
||||||
new_channel = Channel.objects.filter(db_key=channel)
|
new_channel = ChannelDB.objects.filter(db_key=channel)
|
||||||
if not new_channel:
|
if not new_channel:
|
||||||
logger.log_errmsg(_("Cannot attach IMC2<->Evennia: Evennia Channel '%s' not found") % channel)
|
logger.log_errmsg(_("Cannot attach IMC2<->Evennia: Evennia Channel '%s' not found") % channel)
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,13 @@ from twisted.application import internet
|
||||||
from twisted.words.protocols import irc
|
from twisted.words.protocols import irc
|
||||||
from twisted.internet import protocol
|
from twisted.internet import protocol
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from src.comms.models import ExternalChannelConnection, Channel
|
from src.comms.models import ExternalChannelConnection, ChannelDB
|
||||||
from src.utils import logger, utils
|
from src.utils import logger, utils
|
||||||
from src.server.sessionhandler import SESSIONS
|
from src.server.sessionhandler import SESSIONS
|
||||||
|
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
INFOCHANNEL = Channel.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
INFOCHANNEL = ChannelDB.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
||||||
IRC_CHANNELS = []
|
IRC_CHANNELS = []
|
||||||
|
|
||||||
def msg_info(message):
|
def msg_info(message):
|
||||||
|
|
@ -134,8 +134,8 @@ def create_connection(channel, irc_network, irc_port, irc_channel, irc_bot_nick)
|
||||||
"""
|
"""
|
||||||
This will create a new IRC<->channel connection.
|
This will create a new IRC<->channel connection.
|
||||||
"""
|
"""
|
||||||
if not type(channel) == Channel:
|
if not type(channel) == ChannelDB:
|
||||||
new_channel = Channel.objects.filter(db_key=channel)
|
new_channel = ChannelDB.objects.filter(db_key=channel)
|
||||||
if not new_channel:
|
if not new_channel:
|
||||||
logger.log_errmsg(_("Cannot attach IRC<->Evennia: Evennia Channel '%s' not found") % channel)
|
logger.log_errmsg(_("Cannot attach IRC<->Evennia: Evennia Channel '%s' not found") % channel)
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,12 @@ import itertools
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from src.typeclasses.managers import returns_typeclass_list, returns_typeclass
|
||||||
|
|
||||||
_GA = object.__getattribute__
|
_GA = object.__getattribute__
|
||||||
_PlayerDB = None
|
_PlayerDB = None
|
||||||
_ObjectDB = None
|
_ObjectDB = None
|
||||||
_Channel = None
|
_ChannelDB = None
|
||||||
_SESSIONS = None
|
_SESSIONS = None
|
||||||
_ExternalConnection = None
|
_ExternalConnection = None
|
||||||
_User = None
|
_User = None
|
||||||
|
|
@ -45,13 +46,13 @@ def dbref(dbref, reqhash=True):
|
||||||
def identify_object(inp):
|
def identify_object(inp):
|
||||||
"identify if an object is a player or an object; return its database model"
|
"identify if an object is a player or an object; return its database model"
|
||||||
# load global stores
|
# load global stores
|
||||||
global _PlayerDB, _ObjectDB, _Channel, _ExternalConnection, _User
|
global _PlayerDB, _ObjectDB, _ChannelDB, _ExternalConnection, _User
|
||||||
if not _PlayerDB:
|
if not _PlayerDB:
|
||||||
from src.players.models import PlayerDB as _PlayerDB
|
from src.players.models import PlayerDB as _PlayerDB
|
||||||
if not _ObjectDB:
|
if not _ObjectDB:
|
||||||
from src.objects.models import ObjectDB as _ObjectDB
|
from src.objects.models import ObjectDB as _ObjectDB
|
||||||
if not _Channel:
|
if not _ChannelDB:
|
||||||
from src.comms.models import Channel as _Channel
|
from src.comms.models import ChannelDB as _ChannelDB
|
||||||
if not _ExternalConnection:
|
if not _ExternalConnection:
|
||||||
from src.comms.models import ExternalChannelConnection as _ExternalConnection
|
from src.comms.models import ExternalChannelConnection as _ExternalConnection
|
||||||
if not _User:
|
if not _User:
|
||||||
|
|
@ -66,7 +67,7 @@ def identify_object(inp):
|
||||||
typ = type(obj)
|
typ = type(obj)
|
||||||
if typ == _PlayerDB: return obj, "player"
|
if typ == _PlayerDB: return obj, "player"
|
||||||
elif typ == _ObjectDB: return obj, "object"
|
elif typ == _ObjectDB: return obj, "object"
|
||||||
elif typ == _Channel: return obj, "channel"
|
elif typ == _ChannelDB: return obj, "channel"
|
||||||
elif dbref(obj): return dbref(obj), "dbref"
|
elif dbref(obj): return dbref(obj), "dbref"
|
||||||
elif typ == basestring: return obj, "string"
|
elif typ == basestring: return obj, "string"
|
||||||
elif typ == _ExternalConnection: return obj, "external"
|
elif typ == _ExternalConnection: return obj, "external"
|
||||||
|
|
@ -96,8 +97,8 @@ def to_object(inp, objtype='player'):
|
||||||
print objtype, inp, obj, typ, type(inp)
|
print objtype, inp, obj, typ, type(inp)
|
||||||
raise CommError()
|
raise CommError()
|
||||||
elif objtype == 'channel':
|
elif objtype == 'channel':
|
||||||
if typ == 'string': return _Channel.objects.get(db_key__iexact=obj)
|
if typ == 'string': return _ChannelDB.objects.get(db_key__iexact=obj)
|
||||||
if typ == 'dbref': return _Channel.objects.get(id=obj)
|
if typ == 'dbref': return _ChannelDB.objects.get(id=obj)
|
||||||
print objtype, inp, obj, typ, type(inp)
|
print objtype, inp, obj, typ, type(inp)
|
||||||
raise CommError()
|
raise CommError()
|
||||||
elif objtype == 'external':
|
elif objtype == 'external':
|
||||||
|
|
@ -262,13 +263,14 @@ class ChannelManager(models.Manager):
|
||||||
channel_search (equivalent to ev.search_channel)
|
channel_search (equivalent to ev.search_channel)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@returns_typeclass_list
|
||||||
def get_all_channels(self):
|
def get_all_channels(self):
|
||||||
"""
|
"""
|
||||||
Returns all channels in game.
|
Returns all channels in game.
|
||||||
"""
|
"""
|
||||||
return self.all()
|
return self.all()
|
||||||
|
|
||||||
|
@returns_typeclass
|
||||||
def get_channel(self, channelkey):
|
def get_channel(self, channelkey):
|
||||||
"""
|
"""
|
||||||
Return the channel object if given its key.
|
Return the channel object if given its key.
|
||||||
|
|
@ -279,7 +281,7 @@ class ChannelManager(models.Manager):
|
||||||
if not channels:
|
if not channels:
|
||||||
# also check aliases
|
# also check aliases
|
||||||
channels = [channel for channel in self.all()
|
channels = [channel for channel in self.all()
|
||||||
if channelkey in channel.aliases]
|
if channelkey in channel.aliases.all()]
|
||||||
if channels:
|
if channels:
|
||||||
return channels[0]
|
return channels[0]
|
||||||
return None
|
return None
|
||||||
|
|
@ -319,7 +321,7 @@ class ChannelManager(models.Manager):
|
||||||
unique_online_users = set(sess.uid for sess in session_list if sess.logged_in)
|
unique_online_users = set(sess.uid for sess in session_list if sess.logged_in)
|
||||||
online_players = (sess.get_player() for sess in session_list if sess.uid in unique_online_users)
|
online_players = (sess.get_player() for sess in session_list if sess.uid in unique_online_users)
|
||||||
for player in online_players:
|
for player in online_players:
|
||||||
players.extend(PlayerChannelConnection.objects.filter(db_player=player, db_channel=channel))
|
players.extend(PlayerChannelConnection.objects.filter(db_player=player.dbobj, db_channel=channel))
|
||||||
else:
|
else:
|
||||||
players.extend(PlayerChannelConnection.objects.get_all_connections(channel))
|
players.extend(PlayerChannelConnection.objects.get_all_connections(channel))
|
||||||
|
|
||||||
|
|
@ -327,6 +329,7 @@ class ChannelManager(models.Manager):
|
||||||
|
|
||||||
return itertools.chain(players, external_connections)
|
return itertools.chain(players, external_connections)
|
||||||
|
|
||||||
|
@returns_typeclass_list
|
||||||
def channel_search(self, ostring):
|
def channel_search(self, ostring):
|
||||||
"""
|
"""
|
||||||
Search the channel database for a particular channel.
|
Search the channel database for a particular channel.
|
||||||
|
|
@ -345,7 +348,7 @@ class ChannelManager(models.Manager):
|
||||||
channels = self.filter(db_key__iexact=ostring)
|
channels = self.filter(db_key__iexact=ostring)
|
||||||
if not channels:
|
if not channels:
|
||||||
# still no match. Search by alias.
|
# still no match. Search by alias.
|
||||||
channels = [channel for channel in self.all() if ostring.lower() in [a.lower for a in channel.aliases]]
|
channels = [channel for channel in self.all() if ostring.lower() in [a.lower for a in channel.aliases.all()]]
|
||||||
return channels
|
return channels
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
@ -371,7 +374,7 @@ class PlayerChannelConnectionManager(models.Manager):
|
||||||
break_connection
|
break_connection
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
@returns_typeclass_list
|
||||||
def get_all_player_connections(self, player):
|
def get_all_player_connections(self, player):
|
||||||
"Get all connections that the given player has."
|
"Get all connections that the given player has."
|
||||||
player = to_object(player)
|
player = to_object(player)
|
||||||
|
|
@ -380,7 +383,8 @@ class PlayerChannelConnectionManager(models.Manager):
|
||||||
def has_player_connection(self, player, channel):
|
def has_player_connection(self, player, channel):
|
||||||
"Checks so a connection exists player<->channel"
|
"Checks so a connection exists player<->channel"
|
||||||
if player and channel:
|
if player and channel:
|
||||||
return self.filter(db_player=player).filter(db_channel=channel).count() > 0
|
return self.filter(db_player=player.dbobj).filter(
|
||||||
|
db_channel=channel.dbobj).count() > 0
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_all_connections(self, channel):
|
def get_all_connections(self, channel):
|
||||||
|
|
|
||||||
182
src/comms/migrations/0012_auto__add_interimchannel.py
Normal file
182
src/comms/migrations/0012_auto__add_interimchannel.py
Normal file
|
|
@ -0,0 +1,182 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Adding model 'InterimChannel'
|
||||||
|
db.create_table(u'comms_interimchannel', (
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
('db_key', self.gf('django.db.models.fields.CharField')(max_length=255, db_index=True)),
|
||||||
|
('db_typeclass_path', self.gf('django.db.models.fields.CharField')(max_length=255, null=True)),
|
||||||
|
('db_date_created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||||
|
('db_lock_storage', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'comms', ['InterimChannel'])
|
||||||
|
|
||||||
|
# Adding M2M table for field db_attributes on 'InterimChannel'
|
||||||
|
m2m_table_name = db.shorten_name(u'comms_interimchannel_db_attributes')
|
||||||
|
db.create_table(m2m_table_name, (
|
||||||
|
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||||
|
('interimchannel', models.ForeignKey(orm[u'comms.interimchannel'], null=False)),
|
||||||
|
('attribute', models.ForeignKey(orm[u'typeclasses.attribute'], null=False))
|
||||||
|
))
|
||||||
|
db.create_unique(m2m_table_name, ['interimchannel_id', 'attribute_id'])
|
||||||
|
|
||||||
|
# Adding M2M table for field db_tags on 'InterimChannel'
|
||||||
|
m2m_table_name = db.shorten_name(u'comms_interimchannel_db_tags')
|
||||||
|
db.create_table(m2m_table_name, (
|
||||||
|
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||||
|
('interimchannel', models.ForeignKey(orm[u'comms.interimchannel'], null=False)),
|
||||||
|
('tag', models.ForeignKey(orm[u'typeclasses.tag'], null=False))
|
||||||
|
))
|
||||||
|
db.create_unique(m2m_table_name, ['interimchannel_id', 'tag_id'])
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Deleting model 'InterimChannel'
|
||||||
|
db.delete_table(u'comms_interimchannel')
|
||||||
|
|
||||||
|
# Removing M2M table for field db_attributes on 'InterimChannel'
|
||||||
|
db.delete_table(db.shorten_name(u'comms_interimchannel_db_attributes'))
|
||||||
|
|
||||||
|
# Removing M2M table for field db_tags on 'InterimChannel'
|
||||||
|
db.delete_table(db.shorten_name(u'comms_interimchannel_db_tags'))
|
||||||
|
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'comms.channel': {
|
||||||
|
'Meta': {'object_name': 'Channel'},
|
||||||
|
'db_aliases': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'db_desc': ('django.db.models.fields.CharField', [], {'max_length': '80', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_keep_log': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.externalchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'ExternalChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_external_config': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_external_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'db_external_send_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_is_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.interimchannel': {
|
||||||
|
'Meta': {'ordering': "['-db_date_created', 'id', 'db_typeclass_path', 'db_key']", 'object_name': 'InterimChannel'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.msg': {
|
||||||
|
'Meta': {'object_name': 'Msg'},
|
||||||
|
'db_date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'db_header': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_hide_from_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_channels_set'", 'null': 'True', 'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_hide_from_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_objects_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_hide_from_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_players_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_message': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'db_receivers_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'channel_set'", 'null': 'True', 'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_receivers_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_object_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_receivers_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_player_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_sender_external': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_sender_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_object_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_sender_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_player_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.playerchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'PlayerChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'objects.objectdb': {
|
||||||
|
'Meta': {'object_name': 'ObjectDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destinations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_home': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'homes_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_location': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_sessid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'players.playerdb': {
|
||||||
|
'Meta': {'object_name': 'PlayerDB'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_is_connected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'typeclasses.attribute': {
|
||||||
|
'Meta': {'object_name': 'Attribute'},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_strvalue': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_value': ('src.utils.picklefield.PickledObjectField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'typeclasses.tag': {
|
||||||
|
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['comms']
|
||||||
143
src/comms/migrations/0013_rename_channel.py
Normal file
143
src/comms/migrations/0013_rename_channel.py
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
db.rename_table('comms_channel', 'comms_channeldb')
|
||||||
|
db.rename_column('comms_externalchannelconnection', 'channel_id', 'channeldb_id')
|
||||||
|
db.rename_column('comms_msg_db_hide_from_channels', 'channel_id', 'channeldb_id')
|
||||||
|
db.rename_column('comms_msg_db_receivers_channels', 'channel_id', 'channeldb_id')
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
db.rename_table('comms_channeldb', 'comms_channel')
|
||||||
|
db.rename_column('comms_externalchannelconnection', 'channeldb_id', 'channel_id')
|
||||||
|
db.rename_column('comms_msg_db_hide_from_channels', 'channeldb_id', 'channel_id')
|
||||||
|
db.rename_column('comms_msg_db_receivers_channels', 'channeldb_id', 'channel_id')
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'comms.channel': {
|
||||||
|
'Meta': {'object_name': 'Channel'},
|
||||||
|
'db_aliases': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'db_desc': ('django.db.models.fields.CharField', [], {'max_length': '80', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_keep_log': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.externalchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'ExternalChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_external_config': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_external_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'db_external_send_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_is_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.msg': {
|
||||||
|
'Meta': {'object_name': 'Msg'},
|
||||||
|
'db_date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'db_header': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_hide_from_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_channels_set'", 'null': 'True', 'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_hide_from_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_objects_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_hide_from_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_players_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_message': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'db_receivers_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'channel_set'", 'null': 'True', 'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_receivers_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_object_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_receivers_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_player_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_sender_external': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_sender_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_object_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_sender_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_player_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.playerchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'PlayerChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.Channel']"}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'objects.objectdb': {
|
||||||
|
'Meta': {'object_name': 'ObjectDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destinations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_home': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'homes_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_location': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_sessid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'players.playerdb': {
|
||||||
|
'Meta': {'object_name': 'PlayerDB'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_is_connected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'typeclasses.attribute': {
|
||||||
|
'Meta': {'object_name': 'Attribute'},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_strvalue': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_value': ('src.utils.picklefield.PickledObjectField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'typeclasses.tag': {
|
||||||
|
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['comms']
|
||||||
172
src/comms/migrations/0014_transfer_channels.py
Normal file
172
src/comms/migrations/0014_transfer_channels.py
Normal file
|
|
@ -0,0 +1,172 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import DataMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
class Migration(DataMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
"Write your forwards methods here."
|
||||||
|
# Note: Don't use "from appname.models import ModelName".
|
||||||
|
# Use orm.ModelName to refer to models in this application,
|
||||||
|
# and orm['appname.ModelName'] for models in other applications.
|
||||||
|
ChannelDB = orm['comms.ChannelDB']
|
||||||
|
InterimChannel = orm['comms.InterimChannel']
|
||||||
|
Attribute = orm['typeclasses.Attribute']
|
||||||
|
Tag = orm['typeclasses.Tag']
|
||||||
|
for channel in ChannelDB.objects.all():
|
||||||
|
new_channel = InterimChannel(id=channel.id, db_key=channel.db_key,
|
||||||
|
db_lock_storage=channel.db_lock_storage)
|
||||||
|
new_channel.save()
|
||||||
|
desc = Attribute(db_key='desc', db_value=channel.db_desc)
|
||||||
|
desc.save()
|
||||||
|
keep_log = Attribute(db_key='keep_log',
|
||||||
|
db_value=channel.db_keep_log)
|
||||||
|
keep_log.save()
|
||||||
|
new_channel.db_attributes.add(desc)
|
||||||
|
new_channel.db_attributes.add(keep_log)
|
||||||
|
for name in [alias.strip() for alias in
|
||||||
|
channel.db_aliases.split(',')]:
|
||||||
|
tag = Tag(db_key=name, db_category='comm_alias')
|
||||||
|
tag.save()
|
||||||
|
new_channel.db_tags.add(tag)
|
||||||
|
new_channel.save()
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
"Remove all InterimChannels."
|
||||||
|
orm['comms.InterimChannel'].objects.all().delete()
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'comms.channeldb': {
|
||||||
|
'Meta': {'object_name': 'ChannelDB'},
|
||||||
|
'db_aliases': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||||
|
'db_desc': ('django.db.models.fields.CharField', [], {'max_length': '80', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_keep_log': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.externalchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'ExternalChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_external_config': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_external_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'db_external_send_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_is_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.interimchannel': {
|
||||||
|
'Meta': {'ordering': "['-db_date_created', 'id', 'db_typeclass_path', 'db_key']", 'object_name': 'InterimChannel'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.msg': {
|
||||||
|
'Meta': {'object_name': 'Msg'},
|
||||||
|
'db_date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'db_header': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_hide_from_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_channels_set'", 'null': 'True', 'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_hide_from_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_objects_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_hide_from_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_players_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_message': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'db_receivers_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'channel_set'", 'null': 'True', 'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_receivers_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_object_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_receivers_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_player_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_sender_external': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_sender_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_object_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_sender_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_player_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.playerchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'PlayerChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'objects.objectdb': {
|
||||||
|
'Meta': {'object_name': 'ObjectDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destinations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_home': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'homes_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_location': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_sessid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'players.playerdb': {
|
||||||
|
'Meta': {'object_name': 'PlayerDB'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_is_connected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'typeclasses.attribute': {
|
||||||
|
'Meta': {'object_name': 'Attribute'},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_strvalue': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_value': ('src.utils.picklefield.PickledObjectField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'typeclasses.tag': {
|
||||||
|
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['comms']
|
||||||
|
symmetrical = True
|
||||||
|
|
@ -0,0 +1,183 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import SchemaMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(SchemaMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
# Changing field 'ExternalChannelConnection.db_channel'
|
||||||
|
db.alter_column(u'comms_externalchannelconnection', 'db_channel_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['comms.InterimChannel']))
|
||||||
|
|
||||||
|
# Changing field 'PlayerChannelConnection.db_channel'
|
||||||
|
db.alter_column(u'comms_playerchannelconnection', 'db_channel_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['comms.InterimChannel']))
|
||||||
|
|
||||||
|
# Deleting model 'ChannelDB'
|
||||||
|
db.delete_table(u'comms_channeldb')
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
# Adding model 'ChannelDB'
|
||||||
|
db.create_table(u'comms_channeldb', (
|
||||||
|
('db_desc', self.gf('django.db.models.fields.CharField')(max_length=80, null=True, blank=True)),
|
||||||
|
('db_aliases', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||||
|
('db_lock_storage', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||||
|
('db_key', self.gf('django.db.models.fields.CharField')(max_length=255, unique=True, db_index=True)),
|
||||||
|
('db_keep_log', self.gf('django.db.models.fields.BooleanField')(default=True)),
|
||||||
|
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||||
|
))
|
||||||
|
db.send_create_signal(u'comms', ['ChannelDB'])
|
||||||
|
|
||||||
|
InterimChannel = orm['comms.InterimTable']
|
||||||
|
Attribute = orm['typeclasses.Attribute']
|
||||||
|
ChannelDB = orm['comms.ChannelDB']
|
||||||
|
|
||||||
|
for channel in InterimChannel.objects.all():
|
||||||
|
try:
|
||||||
|
desc = channel.db_attributes.objects.get(db_key='desc').db_value
|
||||||
|
except Attribute.DoesNotExist:
|
||||||
|
desc = ''
|
||||||
|
try:
|
||||||
|
keep_log = channel.db_attributes.objects.get(
|
||||||
|
db_key='keep_log').db_value
|
||||||
|
except Attribute.DoesNotExist:
|
||||||
|
keep_log = False
|
||||||
|
aliases = [alias.db_key for alias in
|
||||||
|
channel.db_tags.filter('comm_alias')]
|
||||||
|
aliases = ','.join(aliases)
|
||||||
|
new_channel = ChannelDB(db_desc=desc, db_keep_log=False, id=channel.id,
|
||||||
|
db_key=channel.db_key, db_lock_storage=channel.db_lock_storage,
|
||||||
|
db_aliases=aliases)
|
||||||
|
new_channel.save()
|
||||||
|
|
||||||
|
|
||||||
|
# Changing field 'ExternalChannelConnection.db_channel'
|
||||||
|
db.alter_column(u'comms_externalchannelconnection', 'db_channel_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['comms.ChannelDB']))
|
||||||
|
|
||||||
|
# Changing field 'PlayerChannelConnection.db_channel'
|
||||||
|
db.alter_column(u'comms_playerchannelconnection', 'db_channel_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['comms.ChannelDB']))
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'comms.externalchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'ExternalChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.InterimChannel']"}),
|
||||||
|
'db_external_config': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_external_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'db_external_send_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_is_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.interimchannel': {
|
||||||
|
'Meta': {'object_name': 'InterimChannel'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.msg': {
|
||||||
|
'Meta': {'object_name': 'Msg'},
|
||||||
|
'db_date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'db_header': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_hide_from_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_channels_set'", 'null': 'True', 'to': u"orm['comms.InterimChannel']"}),
|
||||||
|
'db_hide_from_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_objects_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_hide_from_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_players_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_message': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'db_receivers_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'channel_set'", 'null': 'True', 'to': u"orm['comms.InterimChannel']"}),
|
||||||
|
'db_receivers_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_object_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_receivers_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_player_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_sender_external': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_sender_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_object_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_sender_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_player_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.playerchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'PlayerChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.InterimChannel']"}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'objects.objectdb': {
|
||||||
|
'Meta': {'object_name': 'ObjectDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destinations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_home': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'homes_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_location': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_sessid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'players.playerdb': {
|
||||||
|
'Meta': {'object_name': 'PlayerDB'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_is_connected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'typeclasses.attribute': {
|
||||||
|
'Meta': {'object_name': 'Attribute'},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_strvalue': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_value': ('src.utils.picklefield.PickledObjectField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'typeclasses.tag': {
|
||||||
|
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['comms']
|
||||||
162
src/comms/migrations/0016_finalize_tables.py
Normal file
162
src/comms/migrations/0016_finalize_tables.py
Normal file
|
|
@ -0,0 +1,162 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import datetime
|
||||||
|
from south.db import db
|
||||||
|
from south.v2 import DataMigration
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
class Migration(DataMigration):
|
||||||
|
|
||||||
|
def forwards(self, orm):
|
||||||
|
"Write your forwards methods here."
|
||||||
|
# Note: Don't use "from appname.models import ModelName".
|
||||||
|
# Use orm.ModelName to refer to models in this application,
|
||||||
|
# and orm['appname.ModelName'] for models in other applications.
|
||||||
|
db.rename_table('comms_interimchannel', 'comms_channeldb')
|
||||||
|
db.rename_table('comms_interimchannel_db_attributes', 'comms_channeldb_db_attributes')
|
||||||
|
db.rename_table('comms_interimchannel_db_tags', 'comms_channeldb_db_tags')
|
||||||
|
db.rename_column('comms_channeldb_db_attributes', 'interimchannel_id', 'channeldb_id')
|
||||||
|
db.rename_column('comms_channeldb_db_tags', 'interimchannel_id', 'channeldb_id')
|
||||||
|
|
||||||
|
|
||||||
|
def backwards(self, orm):
|
||||||
|
"Write your backwards methods here."
|
||||||
|
db.rename_column('comms_channeldb_db_attributes', 'channeldb_id', 'interimchannel_id')
|
||||||
|
db.rename_column('comms_channeldb_db_tags', 'channeldb_id', 'interimchannel_id')
|
||||||
|
db.rename_table('comms_channeldb', 'comms_interimchannel')
|
||||||
|
db.rename_table('comms_channeldb_db_attributes', 'comms_interimchannel_db_attributes')
|
||||||
|
db.rename_table('comms_channeldb_db_tags', 'comms_interimchannel_db_tags')
|
||||||
|
|
||||||
|
models = {
|
||||||
|
u'auth.group': {
|
||||||
|
'Meta': {'object_name': 'Group'},
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||||
|
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||||
|
},
|
||||||
|
u'auth.permission': {
|
||||||
|
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
|
||||||
|
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||||
|
},
|
||||||
|
u'comms.externalchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'ExternalChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_external_config': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_external_key': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'db_external_send_code': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_is_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.interimchannel': {
|
||||||
|
'Meta': {'object_name': 'InterimChannel'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.channeldb': {
|
||||||
|
'Meta': {'object_name': 'ChannelDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.msg': {
|
||||||
|
'Meta': {'object_name': 'Msg'},
|
||||||
|
'db_date_sent': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'db_index': 'True', 'blank': 'True'}),
|
||||||
|
'db_header': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_hide_from_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_channels_set'", 'null': 'True', 'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_hide_from_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_objects_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_hide_from_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'hide_from_players_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_message': ('django.db.models.fields.TextField', [], {}),
|
||||||
|
'db_receivers_channels': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'channel_set'", 'null': 'True', 'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_receivers_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_object_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_receivers_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'receiver_player_set'", 'null': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
'db_sender_external': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_sender_objects': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_object_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_sender_players': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'sender_player_set'", 'null': 'True', 'db_index': 'True', 'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'comms.playerchannelconnection': {
|
||||||
|
'Meta': {'object_name': 'PlayerChannelConnection'},
|
||||||
|
'db_channel': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['comms.ChannelDB']"}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'contenttypes.contenttype': {
|
||||||
|
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||||
|
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||||
|
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||||
|
},
|
||||||
|
u'objects.objectdb': {
|
||||||
|
'Meta': {'object_name': 'ObjectDB'},
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_destination': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'destinations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_home': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'homes_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_location': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'locations_set'", 'null': 'True', 'to': u"orm['objects.ObjectDB']"}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_player': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['players.PlayerDB']", 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_sessid': ('django.db.models.fields.IntegerField', [], {'null': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'players.playerdb': {
|
||||||
|
'Meta': {'object_name': 'PlayerDB'},
|
||||||
|
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'db_attributes': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Attribute']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_cmdset_storage': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_is_connected': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['typeclasses.Tag']", 'null': 'True', 'symmetrical': 'False'}),
|
||||||
|
'db_typeclass_path': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True'}),
|
||||||
|
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||||
|
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Group']"}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||||
|
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||||
|
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||||
|
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||||
|
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||||
|
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||||
|
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "u'user_set'", 'blank': 'True', 'to': u"orm['auth.Permission']"}),
|
||||||
|
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||||
|
},
|
||||||
|
u'typeclasses.attribute': {
|
||||||
|
'Meta': {'object_name': 'Attribute'},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '128', 'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_date_created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'db_index': 'True'}),
|
||||||
|
'db_lock_storage': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||||
|
'db_strvalue': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_value': ('src.utils.picklefield.PickledObjectField', [], {'null': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
},
|
||||||
|
u'typeclasses.tag': {
|
||||||
|
'Meta': {'unique_together': "(('db_key', 'db_category'),)", 'object_name': 'Tag', 'index_together': "(('db_key', 'db_category'),)"},
|
||||||
|
'db_category': ('django.db.models.fields.CharField', [], {'max_length': '64', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
'db_data': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||||
|
'db_key': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'db_index': 'True'}),
|
||||||
|
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
complete_apps = ['comms']
|
||||||
|
symmetrical = True
|
||||||
|
|
@ -20,7 +20,9 @@ be able to delete connections on the fly).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from django.conf import settings
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from src.typeclasses.models import TypedObject, TagHandler, AttributeHandler, AliasHandler
|
||||||
from src.utils.idmapper.models import SharedMemoryModel
|
from src.utils.idmapper.models import SharedMemoryModel
|
||||||
from src.comms import managers
|
from src.comms import managers
|
||||||
from src.comms.managers import identify_object
|
from src.comms.managers import identify_object
|
||||||
|
|
@ -28,7 +30,11 @@ from src.locks.lockhandler import LockHandler
|
||||||
from src.utils import logger
|
from src.utils import logger
|
||||||
from src.utils.utils import is_iter, to_str, crop, make_iter
|
from src.utils.utils import is_iter, to_str, crop, make_iter
|
||||||
|
|
||||||
__all__ = ("Msg", "TempMsg", "Channel", "PlayerChannelConnection", "ExternalChannelConnection")
|
__all__ = ("Msg", "TempMsg", "ChannelDB", "PlayerChannelConnection", "ExternalChannelConnection")
|
||||||
|
|
||||||
|
_GA = object.__getattribute__
|
||||||
|
_SA = object.__setattr__
|
||||||
|
_DA = object.__delattr__
|
||||||
|
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
@ -72,7 +78,7 @@ class Msg(SharedMemoryModel):
|
||||||
# with channels below.
|
# with channels below.
|
||||||
db_receivers_players = models.ManyToManyField('players.PlayerDB', related_name='receiver_player_set', null=True, help_text="player receivers")
|
db_receivers_players = models.ManyToManyField('players.PlayerDB', related_name='receiver_player_set', null=True, help_text="player receivers")
|
||||||
db_receivers_objects = models.ManyToManyField('objects.ObjectDB', related_name='receiver_object_set', null=True, help_text="object receivers")
|
db_receivers_objects = models.ManyToManyField('objects.ObjectDB', related_name='receiver_object_set', null=True, help_text="object receivers")
|
||||||
db_receivers_channels = models.ManyToManyField("Channel", related_name='channel_set', null=True, help_text="channel recievers")
|
db_receivers_channels = models.ManyToManyField("ChannelDB", related_name='channel_set', null=True, help_text="channel recievers")
|
||||||
|
|
||||||
# header could be used for meta-info about the message if your system needs it, or as a separate
|
# header could be used for meta-info about the message if your system needs it, or as a separate
|
||||||
# store for the mail subject line maybe.
|
# store for the mail subject line maybe.
|
||||||
|
|
@ -88,7 +94,7 @@ class Msg(SharedMemoryModel):
|
||||||
# these can be used to filter/hide a given message from supplied objects/players/channels
|
# these can be used to filter/hide a given message from supplied objects/players/channels
|
||||||
db_hide_from_players = models.ManyToManyField("players.PlayerDB", related_name='hide_from_players_set', null=True)
|
db_hide_from_players = models.ManyToManyField("players.PlayerDB", related_name='hide_from_players_set', null=True)
|
||||||
db_hide_from_objects = models.ManyToManyField("objects.ObjectDB", related_name='hide_from_objects_set', null=True)
|
db_hide_from_objects = models.ManyToManyField("objects.ObjectDB", related_name='hide_from_objects_set', null=True)
|
||||||
db_hide_from_channels = models.ManyToManyField("Channel", related_name='hide_from_channels_set', null=True)
|
db_hide_from_channels = models.ManyToManyField("ChannelDB", related_name='hide_from_channels_set', null=True)
|
||||||
|
|
||||||
# Database manager
|
# Database manager
|
||||||
objects = managers.MsgManager()
|
objects = managers.MsgManager()
|
||||||
|
|
@ -201,7 +207,7 @@ class Msg(SharedMemoryModel):
|
||||||
#@channels.setter
|
#@channels.setter
|
||||||
def __channels_set(self, value):
|
def __channels_set(self, value):
|
||||||
"Setter. Allows for self.channels = value. Requires a channel to be added."
|
"Setter. Allows for self.channels = value. Requires a channel to be added."
|
||||||
for val in (v for v in make_iter(value) if v):
|
for val in (v.dbobj for v in make_iter(value) if v):
|
||||||
self.db_receivers_channels.add(val)
|
self.db_receivers_channels.add(val)
|
||||||
#@channels.deleter
|
#@channels.deleter
|
||||||
def __channels_del(self):
|
def __channels_del(self):
|
||||||
|
|
@ -210,58 +216,6 @@ class Msg(SharedMemoryModel):
|
||||||
self.save()
|
self.save()
|
||||||
channels = property(__channels_get, __channels_set, __channels_del)
|
channels = property(__channels_get, __channels_set, __channels_del)
|
||||||
|
|
||||||
# header property (wraps db_header)
|
|
||||||
#@property
|
|
||||||
#def __header_get(self):
|
|
||||||
# "Getter. Allows for value = self.message"
|
|
||||||
# return self.db_header
|
|
||||||
##@message.setter
|
|
||||||
#def __header_set(self, value):
|
|
||||||
# "Setter. Allows for self.message = value"
|
|
||||||
# if value:
|
|
||||||
# self.db_header = value
|
|
||||||
# self.save()
|
|
||||||
##@message.deleter
|
|
||||||
#def __header_del(self):
|
|
||||||
# "Deleter. Allows for del self.message"
|
|
||||||
# self.db_header = ""
|
|
||||||
# self.save()
|
|
||||||
#header = property(__header_get, __header_set, __header_del)
|
|
||||||
|
|
||||||
## message property (wraps db_message)
|
|
||||||
##@property
|
|
||||||
#def __message_get(self):
|
|
||||||
# "Getter. Allows for value = self.message"
|
|
||||||
# return self.db_message
|
|
||||||
##@message.setter
|
|
||||||
#def __message_set(self, value):
|
|
||||||
# "Setter. Allows for self.message = value"
|
|
||||||
# self.db_message = value
|
|
||||||
# self.save()
|
|
||||||
##@message.deleter
|
|
||||||
#def __message_del(self):
|
|
||||||
# "Deleter. Allows for del self.message"
|
|
||||||
# self.db_message = ""
|
|
||||||
# self.save()
|
|
||||||
#message = property(__message_get, __message_set, __message_del)
|
|
||||||
|
|
||||||
## date_sent property (wraps db_date_sent)
|
|
||||||
##@property
|
|
||||||
#def __date_sent_get(self):
|
|
||||||
# "Getter. Allows for value = self.date_sent"
|
|
||||||
# return self.db_date_sent
|
|
||||||
##@date_sent.setter
|
|
||||||
#def __date_sent_set(self, value):
|
|
||||||
# "Setter. Allows for self.date_sent = value"
|
|
||||||
# raise Exception("You cannot edit date_sent!")
|
|
||||||
##@date_sent.deleter
|
|
||||||
#def __date_sent_del(self):
|
|
||||||
# "Deleter. Allows for del self.date_sent"
|
|
||||||
# raise Exception("You cannot delete the date_sent property!")
|
|
||||||
#date_sent = property(__date_sent_get, __date_sent_set, __date_sent_del)
|
|
||||||
|
|
||||||
# hide_from property
|
|
||||||
#@property
|
|
||||||
def __hide_from_get(self):
|
def __hide_from_get(self):
|
||||||
"Getter. Allows for value = self.hide_from. Returns 3 lists of players, objects and channels"
|
"Getter. Allows for value = self.hide_from. Returns 3 lists of players, objects and channels"
|
||||||
return self.db_hide_from_players.all(), self.db_hide_from_objects.all(), self.db_hide_from_channels.all()
|
return self.db_hide_from_players.all(), self.db_hide_from_objects.all(), self.db_hide_from_channels.all()
|
||||||
|
|
@ -313,15 +267,6 @@ class Msg(SharedMemoryModel):
|
||||||
receivers = ",".join(["[%s]" % obj.key for obj in self.channels] + [obj.key for obj in self.receivers])
|
receivers = ",".join(["[%s]" % obj.key for obj in self.channels] + [obj.key for obj in self.receivers])
|
||||||
return "%s->%s: %s" % (senders, receivers, crop(self.message, width=40))
|
return "%s->%s: %s" % (senders, receivers, crop(self.message, width=40))
|
||||||
|
|
||||||
def access(self, accessing_obj, access_type='read', default=False):
|
|
||||||
"""
|
|
||||||
Determines if another object has permission to access.
|
|
||||||
accessing_obj - object trying to access this one
|
|
||||||
access_type - type of access sought
|
|
||||||
default - what to return if no lock of access_type was found
|
|
||||||
"""
|
|
||||||
return self.locks.check(accessing_obj, access_type=access_type, default=default)
|
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
@ -375,14 +320,13 @@ class TempMsg(object):
|
||||||
"checks lock access"
|
"checks lock access"
|
||||||
return self.locks.check(accessing_obj, access_type=access_type, default=default)
|
return self.locks.check(accessing_obj, access_type=access_type, default=default)
|
||||||
|
|
||||||
|
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Channel
|
# Channel
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
|
|
||||||
class Channel(SharedMemoryModel):
|
class ChannelDB(TypedObject):
|
||||||
"""
|
"""
|
||||||
This is the basis of a comm channel, only implementing
|
This is the basis of a comm channel, only implementing
|
||||||
the very basics of distributing messages.
|
the very basics of distributing messages.
|
||||||
|
|
@ -396,132 +340,22 @@ class Channel(SharedMemoryModel):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
#
|
|
||||||
# Channel database model setup
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# These databse fields are all set using their corresponding properties,
|
|
||||||
# named same as the field, but withtout the db_* prefix.
|
|
||||||
|
|
||||||
# unique identifier for this channel
|
|
||||||
db_key = models.CharField('key', max_length=255, unique=True, db_index=True)
|
|
||||||
# optional description of channel
|
|
||||||
db_desc = models.CharField('description', max_length=80, blank=True, null=True)
|
|
||||||
# aliases for the channel. These are searched by cmdhandler
|
|
||||||
# as well to determine if a command is the name of a channel.
|
|
||||||
# Several aliases are separated by commas.
|
|
||||||
db_aliases = models.CharField('aliases', max_length=255)
|
|
||||||
# Whether this channel should remember its past messages
|
|
||||||
db_keep_log = models.BooleanField(default=True)
|
|
||||||
# Storage of lock definitions
|
|
||||||
db_lock_storage = models.TextField('locks', blank=True)
|
|
||||||
|
|
||||||
|
|
||||||
# Database manager
|
# Database manager
|
||||||
objects = managers.ChannelManager()
|
objects = managers.ChannelManager()
|
||||||
|
|
||||||
|
_typeclass_paths = settings.COMM_TYPECLASS_PATHS
|
||||||
|
_default_typeclass_path = settings.BASE_COMM_TYPECLASS or "src.comms.comms.Comm"
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"Define Django meta options"
|
"Define Django meta options"
|
||||||
verbose_name = "Channel"
|
verbose_name = "Channel"
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
SharedMemoryModel.__init__(self, *args, **kwargs)
|
TypedObject.__init__(self, *args, **kwargs)
|
||||||
self.locks = LockHandler(self)
|
_SA(self, "tags", TagHandler(self, category_prefix="comm_"))
|
||||||
|
_SA(self, "aliases", AliasHandler(self, category_prefix="comm_"))
|
||||||
|
_SA(self, "attributes", AttributeHandler(self))
|
||||||
|
|
||||||
# Wrapper properties to easily set database fields. These are
|
|
||||||
# @property decorators that allows to access these fields using
|
|
||||||
# normal python operations (without having to remember to save()
|
|
||||||
# etc). So e.g. a property 'attr' has a get/set/del decorator
|
|
||||||
# defined that allows the user to do self.attr = value,
|
|
||||||
# value = self.attr and del self.attr respectively (where self
|
|
||||||
# is the object in question).
|
|
||||||
|
|
||||||
# key property (wraps db_key)
|
|
||||||
#@property
|
|
||||||
#def key_get(self):
|
|
||||||
# "Getter. Allows for value = self.key"
|
|
||||||
# return self.db_key
|
|
||||||
##@key.setter
|
|
||||||
#def key_set(self, value):
|
|
||||||
# "Setter. Allows for self.key = value"
|
|
||||||
# self.db_key = value
|
|
||||||
# self.save()
|
|
||||||
##@key.deleter
|
|
||||||
#def key_del(self):
|
|
||||||
# "Deleter. Allows for del self.key"
|
|
||||||
# raise Exception("You cannot delete the channel key!")
|
|
||||||
#key = property(key_get, key_set, key_del)
|
|
||||||
|
|
||||||
# desc property (wraps db_desc)
|
|
||||||
#@property
|
|
||||||
#def desc_get(self):
|
|
||||||
# "Getter. Allows for value = self.desc"
|
|
||||||
# return self.db_desc
|
|
||||||
##@desc.setter
|
|
||||||
#def desc_set(self, value):
|
|
||||||
# "Setter. Allows for self.desc = value"
|
|
||||||
# self.db_desc = value
|
|
||||||
# self.save()
|
|
||||||
##@desc.deleter
|
|
||||||
#def desc_del(self):
|
|
||||||
# "Deleter. Allows for del self.desc"
|
|
||||||
# self.db_desc = ""
|
|
||||||
# self.save()
|
|
||||||
#desc = property(desc_get, desc_set, desc_del)
|
|
||||||
|
|
||||||
# aliases property
|
|
||||||
#@property
|
|
||||||
def aliases_get(self):
|
|
||||||
"Getter. Allows for value = self.aliases. Returns a list of aliases."
|
|
||||||
if self.db_aliases:
|
|
||||||
return [perm.strip() for perm in self.db_aliases.split(',')]
|
|
||||||
return []
|
|
||||||
#@aliases.setter
|
|
||||||
def aliases_set(self, value):
|
|
||||||
"Setter. Allows for self.aliases = value. Stores as a comma-separated string."
|
|
||||||
if is_iter(value):
|
|
||||||
value = ",".join([str(val).strip().lower() for val in value])
|
|
||||||
self.db_aliases = value
|
|
||||||
self.save()
|
|
||||||
#@aliases_del.deleter
|
|
||||||
def aliases_del(self):
|
|
||||||
"Deleter. Allows for del self.aliases"
|
|
||||||
self.db_aliases = ""
|
|
||||||
self.save()
|
|
||||||
aliases = property(aliases_get, aliases_set, aliases_del)
|
|
||||||
|
|
||||||
# keep_log property (wraps db_keep_log)
|
|
||||||
#@property
|
|
||||||
#def keep_log_get(self):
|
|
||||||
# "Getter. Allows for value = self.keep_log"
|
|
||||||
# return self.db_keep_log
|
|
||||||
##@keep_log.setter
|
|
||||||
#def keep_log_set(self, value):
|
|
||||||
# "Setter. Allows for self.keep_log = value"
|
|
||||||
# self.db_keep_log = value
|
|
||||||
# self.save()
|
|
||||||
##@keep_log.deleter
|
|
||||||
#def keep_log_del(self):
|
|
||||||
# "Deleter. Allows for del self.keep_log"
|
|
||||||
# self.db_keep_log = False
|
|
||||||
# self.save()
|
|
||||||
#keep_log = property(keep_log_get, keep_log_set, keep_log_del)
|
|
||||||
|
|
||||||
# lock_storage property (wraps db_lock_storage)
|
|
||||||
#@property
|
|
||||||
#def lock_storage_get(self):
|
|
||||||
# "Getter. Allows for value = self.lock_storage"
|
|
||||||
# return self.db_lock_storage
|
|
||||||
##@nick.setter
|
|
||||||
#def lock_storage_set(self, value):
|
|
||||||
# """Saves the lock_storagetodate. This is usually not called directly, but through self.lock()"""
|
|
||||||
# self.db_lock_storage = value
|
|
||||||
# self.save()
|
|
||||||
##@nick.deleter
|
|
||||||
#def lock_storage_del(self):
|
|
||||||
# "Deleter is disabled. Use the lockhandler.delete (self.lock.delete) instead"""
|
|
||||||
# logger.log_errmsg("Lock_Storage (on %s) cannot be deleted. Use obj.lock.delete() instead." % self)
|
|
||||||
#lock_storage = property(lock_storage_get, lock_storage_set, lock_storage_del)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"Define Django meta options"
|
"Define Django meta options"
|
||||||
|
|
@ -533,7 +367,7 @@ class Channel(SharedMemoryModel):
|
||||||
#
|
#
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Channel '%s' (%s)" % (self.key, self.desc)
|
return "Channel '%s' (%s)" % (self.key, self.typeclass.db.desc)
|
||||||
|
|
||||||
def has_connection(self, player):
|
def has_connection(self, player):
|
||||||
"""
|
"""
|
||||||
|
|
@ -587,12 +421,12 @@ class Channel(SharedMemoryModel):
|
||||||
msg = msgobj.message
|
msg = msgobj.message
|
||||||
|
|
||||||
# get all players connected to this channel and send to them
|
# get all players connected to this channel and send to them
|
||||||
for conn in Channel.objects.get_all_connections(self, online=online):
|
for conn in ChannelDB.objects.get_all_connections(self, online=online):
|
||||||
try:
|
try:
|
||||||
conn.player.msg(msg, from_obj=senders)
|
conn.player.msg(msg, from_obj=senders)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
try:
|
try:
|
||||||
conn.to_external(msg, from_object=senders, from_channel=self)
|
conn.to_external(msg, senders=senders, from_channel=self)
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.log_trace("Cannot send msg to connection '%s'" % conn)
|
logger.log_trace("Cannot send msg to connection '%s'" % conn)
|
||||||
return True
|
return True
|
||||||
|
|
@ -619,9 +453,9 @@ class Channel(SharedMemoryModel):
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
"Clean out all connections to this channel and delete it."
|
"Clean out all connections to this channel and delete it."
|
||||||
for connection in Channel.objects.get_all_connections(self):
|
for connection in ChannelDB.objects.get_all_connections(self):
|
||||||
connection.delete()
|
connection.delete()
|
||||||
super(Channel, self).delete()
|
super(ChannelDB, self).delete()
|
||||||
def access(self, accessing_obj, access_type='listen', default=False):
|
def access(self, accessing_obj, access_type='listen', default=False):
|
||||||
"""
|
"""
|
||||||
Determines if another object has permission to access.
|
Determines if another object has permission to access.
|
||||||
|
|
@ -641,7 +475,7 @@ class PlayerChannelConnection(SharedMemoryModel):
|
||||||
# Player connected to a channel
|
# Player connected to a channel
|
||||||
db_player = models.ForeignKey("players.PlayerDB", verbose_name='player')
|
db_player = models.ForeignKey("players.PlayerDB", verbose_name='player')
|
||||||
# Channel the player is connected to
|
# Channel the player is connected to
|
||||||
db_channel = models.ForeignKey(Channel, verbose_name='channel')
|
db_channel = models.ForeignKey(ChannelDB, verbose_name='channel')
|
||||||
|
|
||||||
# Database manager
|
# Database manager
|
||||||
objects = managers.PlayerChannelConnectionManager()
|
objects = managers.PlayerChannelConnectionManager()
|
||||||
|
|
@ -666,11 +500,11 @@ class PlayerChannelConnection(SharedMemoryModel):
|
||||||
#@property
|
#@property
|
||||||
def channel_get(self):
|
def channel_get(self):
|
||||||
"Getter. Allows for value = self.channel"
|
"Getter. Allows for value = self.channel"
|
||||||
return self.db_channel
|
return self.db_channel.typeclass
|
||||||
#@channel.setter
|
#@channel.setter
|
||||||
def channel_set(self, value):
|
def channel_set(self, value):
|
||||||
"Setter. Allows for self.channel = value"
|
"Setter. Allows for self.channel = value"
|
||||||
self.db_channel = value
|
self.db_channel = value.dbobj
|
||||||
self.save()
|
self.save()
|
||||||
#@channel.deleter
|
#@channel.deleter
|
||||||
def channel_del(self):
|
def channel_del(self):
|
||||||
|
|
@ -694,7 +528,7 @@ class ExternalChannelConnection(SharedMemoryModel):
|
||||||
that connection.
|
that connection.
|
||||||
"""
|
"""
|
||||||
# evennia channel connecting to
|
# evennia channel connecting to
|
||||||
db_channel = models.ForeignKey(Channel, verbose_name='channel',
|
db_channel = models.ForeignKey(ChannelDB, verbose_name='channel',
|
||||||
help_text='which channel this connection is tied to.')
|
help_text='which channel this connection is tied to.')
|
||||||
# external connection identifier
|
# external connection identifier
|
||||||
db_external_key = models.CharField('external key', max_length=128,
|
db_external_key = models.CharField('external key', max_length=128,
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ to the channel whenever the feed updates.
|
||||||
import re
|
import re
|
||||||
from twisted.internet import task
|
from twisted.internet import task
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from src.comms.models import ExternalChannelConnection, Channel
|
from src.comms.models import ExternalChannelConnection, ChannelDB
|
||||||
from src.utils import logger, utils
|
from src.utils import logger, utils
|
||||||
from src.scripts.models import ScriptDB
|
from src.scripts.models import ScriptDB
|
||||||
|
|
||||||
RSS_ENABLED = settings.RSS_ENABLED
|
RSS_ENABLED = settings.RSS_ENABLED
|
||||||
RSS_UPDATE_INTERVAL = settings.RSS_UPDATE_INTERVAL
|
RSS_UPDATE_INTERVAL = settings.RSS_UPDATE_INTERVAL
|
||||||
INFOCHANNEL = Channel.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
INFOCHANNEL = ChannelDB.objects.channel_search(settings.CHANNEL_MUDINFO[0])
|
||||||
RETAG = re.compile(r'<[^>]*?>')
|
RETAG = re.compile(r'<[^>]*?>')
|
||||||
|
|
||||||
# holds rss readers they can be shut down at will.
|
# holds rss readers they can be shut down at will.
|
||||||
|
|
@ -102,8 +102,8 @@ def create_connection(channel, url, interval):
|
||||||
"""
|
"""
|
||||||
This will create a new RSS->channel connection
|
This will create a new RSS->channel connection
|
||||||
"""
|
"""
|
||||||
if not type(channel) == Channel:
|
if not type(channel) == ChannelDB:
|
||||||
new_channel = Channel.objects.filter(db_key=channel)
|
new_channel = ChannelDB.objects.filter(db_key=channel)
|
||||||
if not new_channel:
|
if not new_channel:
|
||||||
logger.log_errmsg("Cannot attach RSS->Evennia: Evennia Channel '%s' not found." % channel)
|
logger.log_errmsg("Cannot attach RSS->Evennia: Evennia Channel '%s' not found." % channel)
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ instead for most things).
|
||||||
import datetime
|
import datetime
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from src.typeclasses.typeclass import TypeClass
|
from src.typeclasses.typeclass import TypeClass
|
||||||
from src.comms.models import Channel
|
from src.comms.models import ChannelDB
|
||||||
from src.utils import logger
|
from src.utils import logger
|
||||||
__all__ = ("Player",)
|
__all__ = ("Player",)
|
||||||
|
|
||||||
|
|
@ -303,7 +303,7 @@ class Player(TypeClass):
|
||||||
global _CONNECT_CHANNEL
|
global _CONNECT_CHANNEL
|
||||||
if not _CONNECT_CHANNEL:
|
if not _CONNECT_CHANNEL:
|
||||||
try:
|
try:
|
||||||
_CONNECT_CHANNEL = Channel.objects.filter(db_key=settings.CHANNEL_CONNECTINFO[0])[0]
|
_CONNECT_CHANNEL = ChannelDB.objects.filter(db_key=settings.CHANNEL_CONNECTINFO[0])[0]
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.log_trace()
|
logger.log_trace()
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
|
|
|
||||||
|
|
@ -278,11 +278,9 @@ def handle_setup(last_step):
|
||||||
for profile in PlayerDB.objects.all():
|
for profile in PlayerDB.objects.all():
|
||||||
profile.delete()
|
profile.delete()
|
||||||
elif last_step + num == 3:
|
elif last_step + num == 3:
|
||||||
from src.comms.models import Channel, PlayerChannelConnection
|
from src.comms.models import ChannelDB, PlayerChannelConnection
|
||||||
for chan in Channel.objects.all():
|
ChannelDB.objects.all().delete()
|
||||||
chan.delete()
|
PlayerChannelConnection.objects.all().delete()
|
||||||
for conn in PlayerChannelConnection.objects.all():
|
|
||||||
conn.delete()
|
|
||||||
raise
|
raise
|
||||||
ServerConfig.objects.conf("last_initial_setup_step", last_step + num + 1)
|
ServerConfig.objects.conf("last_initial_setup_step", last_step + num + 1)
|
||||||
# We got through the entire list. Set last_step to -1 so we don't
|
# We got through the entire list. Set last_step to -1 so we don't
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from src.scripts.models import ScriptDB
|
from src.scripts.models import ScriptDB
|
||||||
from src.comms.models import Channel
|
from src.comms.models import ChannelDB
|
||||||
from src.utils import logger, utils
|
from src.utils import logger, utils
|
||||||
from src.utils.utils import make_iter, to_str
|
from src.utils.utils import make_iter, to_str
|
||||||
from src.commands import cmdhandler, cmdsethandler
|
from src.commands import cmdhandler, cmdsethandler
|
||||||
|
|
@ -143,7 +143,7 @@ class ServerSession(Session):
|
||||||
if channel:
|
if channel:
|
||||||
try:
|
try:
|
||||||
cchan = settings.CHANNEL_CONNECTINFO
|
cchan = settings.CHANNEL_CONNECTINFO
|
||||||
cchan = Channel.objects.get_channel(cchan[0])
|
cchan = ChannelDB.objects.get_channel(cchan[0])
|
||||||
cchan.msg("[%s]: %s" % (cchan.key, message))
|
cchan.msg("[%s]: %s" % (cchan.key, message))
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
|
|
@ -239,6 +239,7 @@ SERVER_SESSION_CLASS = "src.server.serversession.ServerSession"
|
||||||
OBJECT_TYPECLASS_PATHS = ["game.gamesrc.objects", "game.gamesrc.objects.examples", "contrib"]
|
OBJECT_TYPECLASS_PATHS = ["game.gamesrc.objects", "game.gamesrc.objects.examples", "contrib"]
|
||||||
SCRIPT_TYPECLASS_PATHS = ["game.gamesrc.scripts", "game.gamesrc.scripts.examples", "contrib"]
|
SCRIPT_TYPECLASS_PATHS = ["game.gamesrc.scripts", "game.gamesrc.scripts.examples", "contrib"]
|
||||||
PLAYER_TYPECLASS_PATHS = ["game.gamesrc.objects", "contrib"]
|
PLAYER_TYPECLASS_PATHS = ["game.gamesrc.objects", "contrib"]
|
||||||
|
COMM_TYPECLASS_PATHS = ["game.gamesrc.objects", "contrib"]
|
||||||
|
|
||||||
# Typeclass for player objects (linked to a character) (fallback)
|
# Typeclass for player objects (linked to a character) (fallback)
|
||||||
BASE_PLAYER_TYPECLASS = "src.players.player.Player"
|
BASE_PLAYER_TYPECLASS = "src.players.player.Player"
|
||||||
|
|
@ -250,6 +251,8 @@ BASE_CHARACTER_TYPECLASS = "src.objects.objects.Character"
|
||||||
BASE_ROOM_TYPECLASS = "src.objects.objects.Room"
|
BASE_ROOM_TYPECLASS = "src.objects.objects.Room"
|
||||||
# Typeclass for Exit objects (fallback).
|
# Typeclass for Exit objects (fallback).
|
||||||
BASE_EXIT_TYPECLASS = "src.objects.objects.Exit"
|
BASE_EXIT_TYPECLASS = "src.objects.objects.Exit"
|
||||||
|
# Typeclass for Comms (fallback).
|
||||||
|
BASE_COMM_TYPECLASS = "src.comms.comms.Comm"
|
||||||
# Typeclass for Scripts (fallback). You usually don't need to change this
|
# Typeclass for Scripts (fallback). You usually don't need to change this
|
||||||
# but create custom variations of scripts on a per-case basis instead.
|
# but create custom variations of scripts on a per-case basis instead.
|
||||||
BASE_SCRIPT_TYPECLASS = "src.scripts.scripts.DoNothing"
|
BASE_SCRIPT_TYPECLASS = "src.scripts.scripts.DoNothing"
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ def returns_typeclass_list(method):
|
||||||
def func(self, *args, **kwargs):
|
def func(self, *args, **kwargs):
|
||||||
"decorator. Returns a list."
|
"decorator. Returns a list."
|
||||||
self.__doc__ = method.__doc__
|
self.__doc__ = method.__doc__
|
||||||
matches = method(self, *args, **kwargs)
|
matches = make_iter(method(self, *args, **kwargs))
|
||||||
return [(hasattr(dbobj, "typeclass") and dbobj.typeclass) or dbobj for dbobj in make_iter(matches)]
|
return [(hasattr(dbobj, "typeclass") and dbobj.typeclass) or dbobj for dbobj in make_iter(matches)]
|
||||||
return update_wrapper(func, method)
|
return update_wrapper(func, method)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ _Msg = None
|
||||||
_Player = None
|
_Player = None
|
||||||
_PlayerDB = None
|
_PlayerDB = None
|
||||||
_to_object = None
|
_to_object = None
|
||||||
_Channel = None
|
_ChannelDB = None
|
||||||
_channelhandler = None
|
_channelhandler = None
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -344,7 +344,8 @@ def create_message(senderobj, message, channels=None,
|
||||||
message = create_message
|
message = create_message
|
||||||
|
|
||||||
def create_channel(key, aliases=None, desc=None,
|
def create_channel(key, aliases=None, desc=None,
|
||||||
locks=None, keep_log=True):
|
locks=None, keep_log=True,
|
||||||
|
typeclass=None):
|
||||||
"""
|
"""
|
||||||
Create A communication Channel. A Channel serves as a central
|
Create A communication Channel. A Channel serves as a central
|
||||||
hub for distributing Msgs to groups of people without
|
hub for distributing Msgs to groups of people without
|
||||||
|
|
@ -357,20 +358,24 @@ def create_channel(key, aliases=None, desc=None,
|
||||||
aliases - list of alternative (likely shorter) keynames.
|
aliases - list of alternative (likely shorter) keynames.
|
||||||
locks - lock string definitions
|
locks - lock string definitions
|
||||||
"""
|
"""
|
||||||
global _Channel, _channelhandler
|
global _ChannelDB, _channelhandler
|
||||||
if not _Channel:
|
if not _ChannelDB:
|
||||||
from src.comms.models import Channel as _Channel
|
from src.comms.models import ChannelDB as _ChannelDB
|
||||||
if not _channelhandler:
|
if not _channelhandler:
|
||||||
from src.comms import channelhandler as _channelhandler
|
from src.comms import channelhandler as _channelhandler
|
||||||
|
if not typeclass:
|
||||||
|
typeclass = settings.BASE_COMM_TYPECLASS
|
||||||
try:
|
try:
|
||||||
new_channel = _Channel()
|
new_channel = _ChannelDB(typeclass=typeclass, db_key=key)
|
||||||
new_channel.key = key
|
new_channel.save()
|
||||||
|
new_channel = new_channel.typeclass
|
||||||
if aliases:
|
if aliases:
|
||||||
if not utils.is_iter(aliases):
|
if not utils.is_iter(aliases):
|
||||||
aliases = [aliases]
|
aliases = [aliases]
|
||||||
new_channel.aliases = ",".join([alias for alias in aliases])
|
new_channel.aliases.add(aliases)
|
||||||
new_channel.desc = desc
|
new_channel.save()
|
||||||
new_channel.keep_log = keep_log
|
new_channel.db.desc = desc
|
||||||
|
new_channel.db.keep_log = keep_log
|
||||||
except IntegrityError:
|
except IntegrityError:
|
||||||
string = "Could not add channel: key '%s' already exists." % key
|
string = "Could not add channel: key '%s' already exists." % key
|
||||||
logger.log_errmsg(string)
|
logger.log_errmsg(string)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ ObjectDB = ContentType.objects.get(app_label="objects", model="objectdb").model_
|
||||||
PlayerDB = ContentType.objects.get(app_label="players", model="playerdb").model_class()
|
PlayerDB = ContentType.objects.get(app_label="players", model="playerdb").model_class()
|
||||||
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
|
ScriptDB = ContentType.objects.get(app_label="scripts", model="scriptdb").model_class()
|
||||||
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
|
Msg = ContentType.objects.get(app_label="comms", model="msg").model_class()
|
||||||
Channel = ContentType.objects.get(app_label="comms", model="channel").model_class()
|
Channel = ContentType.objects.get(app_label="comms", model="channeldb").model_class()
|
||||||
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
|
HelpEntry = ContentType.objects.get(app_label="help", model="helpentry").model_class()
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue