Made fixes to the migrations.
This commit is contained in:
parent
d594357335
commit
3b88767865
5 changed files with 71 additions and 43 deletions
|
|
@ -18,9 +18,38 @@ from subprocess import Popen, call
|
||||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'game.settings'
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'game.settings'
|
||||||
|
|
||||||
|
if not os.path.exists('settings.py'):
|
||||||
|
# make sure we have a settings.py file.
|
||||||
|
print _(" No settings.py file found. launching manage.py ...")
|
||||||
|
|
||||||
|
import game.manage
|
||||||
|
|
||||||
|
print _("""
|
||||||
|
... A new settings file was created. Edit this file to configure
|
||||||
|
Evennia as desired by copy&pasting options from
|
||||||
|
src/settings_default.py.
|
||||||
|
|
||||||
|
You should then also create/configure the database using
|
||||||
|
|
||||||
|
python manage.py syncdb
|
||||||
|
|
||||||
|
Make sure to create a new admin user when prompted -- this will be
|
||||||
|
user #1 in-game. If you use django-south, you'll see mentions of
|
||||||
|
migrating things in the above run. You then also have to run
|
||||||
|
|
||||||
|
python manage.py migrate
|
||||||
|
|
||||||
|
If you use default sqlite3 database, you will find a file
|
||||||
|
evennia.db appearing. This is the database file. Just delete this
|
||||||
|
and repeat the above manage.py steps to start with a fresh
|
||||||
|
database.
|
||||||
|
|
||||||
|
When you are set up, run evennia.py again to start the server.""")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
# i18n
|
# i18n
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
# signal processing
|
||||||
SIG = signal.SIGINT
|
SIG = signal.SIGINT
|
||||||
|
|
||||||
HELPENTRY = \
|
HELPENTRY = \
|
||||||
|
|
@ -107,35 +136,6 @@ PORTAL_PIDFILE = "portal.pid"
|
||||||
SERVER_RESTART = "server.restart"
|
SERVER_RESTART = "server.restart"
|
||||||
PORTAL_RESTART = "portal.restart"
|
PORTAL_RESTART = "portal.restart"
|
||||||
|
|
||||||
if not os.path.exists('settings.py'):
|
|
||||||
# make sure we have a settings.py file.
|
|
||||||
print _(" No settings.py file found. launching manage.py ...")
|
|
||||||
|
|
||||||
import game.manage
|
|
||||||
|
|
||||||
print _("""
|
|
||||||
... A new settings file was created. Edit this file to configure
|
|
||||||
Evennia as desired by copy&pasting options from
|
|
||||||
src/settings_default.py.
|
|
||||||
|
|
||||||
You should then also create/configure the database using
|
|
||||||
|
|
||||||
python manage.py syncdb
|
|
||||||
|
|
||||||
Make sure to create a new admin user when prompted -- this will be
|
|
||||||
user #1 in-game. If you use django-south, you'll see mentions of
|
|
||||||
migrating things in the above run. You then also have to run
|
|
||||||
|
|
||||||
python manage.py migrate
|
|
||||||
|
|
||||||
If you use default sqlite3 database, you will find a file
|
|
||||||
evennia.db appearing. This is the database file. Just delete this
|
|
||||||
and repeat the above manage.py steps to start with a fresh
|
|
||||||
database.
|
|
||||||
|
|
||||||
When you are set up, run evennia.py again to start the server.""")
|
|
||||||
sys.exit()
|
|
||||||
|
|
||||||
# Get the settings
|
# Get the settings
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,22 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import pickle
|
import pickle
|
||||||
from src.utils.utils import to_str, to_unicode
|
from src.utils.utils import to_str, to_unicode
|
||||||
|
from src.typeclasses.models import PackedDBobject
|
||||||
|
|
||||||
class Migration(DataMigration):
|
class Migration(DataMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
"Write your forwards methods here."
|
"Write your forwards methods here."
|
||||||
for attr in orm.ObjAttribute.objects.all():
|
for attr in orm.ObjAttribute.objects.all():
|
||||||
attr.value = pickle.loads(to_str(attr.db_value))
|
# repack attr into new format, and reimport
|
||||||
|
val = pickle.loads(to_str(attr.db_value))
|
||||||
|
if hasattr(val, '__iter__'):
|
||||||
|
val = ("iter", val)
|
||||||
|
elif type(val) == PackedDBobject:
|
||||||
|
val = ("dbobj", val)
|
||||||
|
else:
|
||||||
|
val = ("simple", val)
|
||||||
|
attr.value = attr.from_attr(val)
|
||||||
|
|
||||||
def backwards(self, orm):
|
def backwards(self, orm):
|
||||||
"Write your backwards methods here."
|
"Write your backwards methods here."
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,22 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import pickle
|
import pickle
|
||||||
from src.utils.utils import to_str, to_unicode
|
from src.utils.utils import to_str, to_unicode
|
||||||
|
from src.typeclasses.models import PackedDBobject
|
||||||
|
|
||||||
class Migration(DataMigration):
|
class Migration(DataMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
"Write your forwards methods here."
|
"Write your forwards methods here."
|
||||||
for attr in orm.PlayerAttribute.objects.all():
|
for attr in orm.PlayerAttribute.objects.all():
|
||||||
attr.value = pickle.loads(to_str(attr.db_value))
|
# repack attr into new format, and reimport
|
||||||
|
val = pickle.loads(to_str(attr.db_value))
|
||||||
|
if hasattr(val, '__iter__'):
|
||||||
|
val = ("iter", val)
|
||||||
|
elif type(val) == PackedDBobject:
|
||||||
|
val = ("dbobj", val)
|
||||||
|
else:
|
||||||
|
val = ("simple", val)
|
||||||
|
attr.value = attr.from_attr(val)
|
||||||
|
|
||||||
def backwards(self, orm):
|
def backwards(self, orm):
|
||||||
"Write your backwards methods here."
|
"Write your backwards methods here."
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,22 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import pickle
|
import pickle
|
||||||
from src.utils.utils import to_str, to_unicode
|
from src.utils.utils import to_str, to_unicode
|
||||||
|
from src.typeclasses.models import PackedDBobject
|
||||||
|
|
||||||
class Migration(DataMigration):
|
class Migration(DataMigration):
|
||||||
|
|
||||||
def forwards(self, orm):
|
def forwards(self, orm):
|
||||||
"Write your forwards methods here."
|
"Write your forwards methods here."
|
||||||
for attr in orm.ScriptAttribute.objects.all():
|
for attr in orm.ScriptAttribute.objects.all():
|
||||||
attr.value = pickle.loads(to_str(attr.db_value))
|
# repack attr into new format, and reimport
|
||||||
|
val = pickle.loads(to_str(attr.db_value))
|
||||||
|
if hasattr(val, '__iter__'):
|
||||||
|
val = ("iter", val)
|
||||||
|
elif type(val) == PackedDBobject:
|
||||||
|
val = ("dbobj", val)
|
||||||
|
else:
|
||||||
|
val = ("simple", val)
|
||||||
|
attr.value = attr.from_attr(val)
|
||||||
|
|
||||||
def backwards(self, orm):
|
def backwards(self, orm):
|
||||||
"Write your backwards methods here."
|
"Write your backwards methods here."
|
||||||
|
|
|
||||||
|
|
@ -70,20 +70,20 @@ PDUMPS = pickle.dumps
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------
|
#------------------------------------------------------------
|
||||||
|
|
||||||
class PackedDBobject(dict):
|
class PackedDBobject(object):
|
||||||
"""
|
"""
|
||||||
Attribute helper class.
|
Attribute helper class.
|
||||||
A container for storing and easily identifying database objects in
|
A container for storing and easily identifying database objects in
|
||||||
the database (which doesn't suppport storing db_objects directly).
|
the database (which doesn't suppport storing db_objects directly).
|
||||||
"""
|
"""
|
||||||
def __init__(self, ID, db_model, db_key):
|
def __init__(self, ID, db_model, db_key):
|
||||||
self['id'] = ID
|
self.id = ID
|
||||||
self['db_model'] = db_model
|
self.db_model = db_model
|
||||||
self['key'] = db_key
|
self.key = db_key
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s(#%s)" % (self['key'], self['id'])
|
return "%s(#%s)" % (self.key, self.id)
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return u"%s(#%s)" % (self['key'], self['id'])
|
return u"%s(#%s)" % (self.key, self.id)
|
||||||
|
|
||||||
class PackedDict(dict):
|
class PackedDict(dict):
|
||||||
"""
|
"""
|
||||||
|
|
@ -447,12 +447,13 @@ class Attribute(SharedMemoryModel):
|
||||||
"""
|
"""
|
||||||
Convert db-stored dbref back to object
|
Convert db-stored dbref back to object
|
||||||
"""
|
"""
|
||||||
mclass = CTYPEGET(model=data["db_model"]).model_class()
|
mclass = CTYPEGET(model=data.db_model).model_class()
|
||||||
try:
|
try:
|
||||||
return mclass.objects.dbref_search(data['id'])
|
return mclass.objects.dbref_search(data.id)
|
||||||
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
try:
|
try:
|
||||||
return mclass.objects.get(id=data['id'])
|
return mclass.objects.get(id=data.id)
|
||||||
except mclass.DoesNotExist: # could happen if object was deleted in the interim.
|
except mclass.DoesNotExist: # could happen if object was deleted in the interim.
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue