[fix] First migration test

This commit is contained in:
Griatch 2019-01-28 19:48:26 +01:00
parent 9c1e04536a
commit 0c9d2e053b
9 changed files with 585 additions and 1 deletions

View file

@ -0,0 +1,73 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
import django.contrib.auth.validators
from django.db import migrations, models
import evennia.accounts.manager
class Migration(migrations.Migration):
dependencies = [
('accounts', '0007_copy_player_to_account'),
]
operations = [
migrations.AlterModelManagers(
name='accountdb',
managers=[
('objects', evennia.accounts.manager.AccountDBManager()),
],
),
migrations.AlterField(
model_name='accountdb',
name='db_attributes',
field=models.ManyToManyField(help_text='attributes on this object. An attribute can hold any pickle-able python object (see docs for special cases).', to='typeclasses.Attribute'),
),
migrations.AlterField(
model_name='accountdb',
name='db_cmdset_storage',
field=models.CharField(help_text='optional python path to a cmdset class. If creating a Character, this will default to settings.CMDSET_CHARACTER.', max_length=255, null=True, verbose_name='cmdset'),
),
migrations.AlterField(
model_name='accountdb',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, verbose_name='creation date'),
),
migrations.AlterField(
model_name='accountdb',
name='db_is_bot',
field=models.BooleanField(default=False, help_text='Used to identify irc/rss bots', verbose_name='is_bot'),
),
migrations.AlterField(
model_name='accountdb',
name='db_is_connected',
field=models.BooleanField(default=False, help_text='If player is connected to game or not', verbose_name='is_connected'),
),
migrations.AlterField(
model_name='accountdb',
name='db_key',
field=models.CharField(db_index=True, max_length=255, verbose_name='key'),
),
migrations.AlterField(
model_name='accountdb',
name='db_lock_storage',
field=models.TextField(blank=True, help_text="locks limit access to an entity. A lock is defined as a 'lock string' on the form 'type:lockfunctions', defining what functionality is locked and how to determine access. Not defining a lock means no access is granted.", verbose_name='locks'),
),
migrations.AlterField(
model_name='accountdb',
name='db_tags',
field=models.ManyToManyField(help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.', to='typeclasses.Tag'),
),
migrations.AlterField(
model_name='accountdb',
name='db_typeclass_path',
field=models.CharField(help_text="this defines what 'type' of entity this is. This variable holds a Python path to a module with a valid Evennia Typeclass.", max_length=255, null=True, verbose_name='typeclass'),
),
migrations.AlterField(
model_name='accountdb',
name='username',
field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username'),
),
]

View file

@ -0,0 +1,121 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('comms', '0016_auto_20180925_1735'),
]
operations = [
migrations.AlterField(
model_name='channeldb',
name='db_account_subscriptions',
field=models.ManyToManyField(blank=True, db_index=True, related_name='account_subscription_set', to=settings.AUTH_USER_MODEL, verbose_name='account subscriptions'),
),
migrations.AlterField(
model_name='channeldb',
name='db_attributes',
field=models.ManyToManyField(help_text='attributes on this object. An attribute can hold any pickle-able python object (see docs for special cases).', to='typeclasses.Attribute'),
),
migrations.AlterField(
model_name='channeldb',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, verbose_name='creation date'),
),
migrations.AlterField(
model_name='channeldb',
name='db_key',
field=models.CharField(db_index=True, max_length=255, verbose_name='key'),
),
migrations.AlterField(
model_name='channeldb',
name='db_lock_storage',
field=models.TextField(blank=True, help_text="locks limit access to an entity. A lock is defined as a 'lock string' on the form 'type:lockfunctions', defining what functionality is locked and how to determine access. Not defining a lock means no access is granted.", verbose_name='locks'),
),
migrations.AlterField(
model_name='channeldb',
name='db_object_subscriptions',
field=models.ManyToManyField(blank=True, db_index=True, related_name='object_subscription_set', to='objects.ObjectDB', verbose_name='object subscriptions'),
),
migrations.AlterField(
model_name='channeldb',
name='db_tags',
field=models.ManyToManyField(help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.', to='typeclasses.Tag'),
),
migrations.AlterField(
model_name='channeldb',
name='db_typeclass_path',
field=models.CharField(help_text="this defines what 'type' of entity this is. This variable holds a Python path to a module with a valid Evennia Typeclass.", max_length=255, null=True, verbose_name='typeclass'),
),
migrations.AlterField(
model_name='msg',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, db_index=True, verbose_name='date sent'),
),
migrations.AlterField(
model_name='msg',
name='db_header',
field=models.TextField(blank=True, null=True, verbose_name='header'),
),
migrations.AlterField(
model_name='msg',
name='db_lock_storage',
field=models.TextField(blank=True, help_text='access locks on this message.', verbose_name='locks'),
),
migrations.AlterField(
model_name='msg',
name='db_message',
field=models.TextField(verbose_name='message'),
),
migrations.AlterField(
model_name='msg',
name='db_receivers_accounts',
field=models.ManyToManyField(blank=True, help_text='account receivers', related_name='receiver_account_set', to=settings.AUTH_USER_MODEL),
),
migrations.AlterField(
model_name='msg',
name='db_receivers_channels',
field=models.ManyToManyField(blank=True, help_text='channel recievers', related_name='channel_set', to='comms.ChannelDB'),
),
migrations.AlterField(
model_name='msg',
name='db_receivers_objects',
field=models.ManyToManyField(blank=True, help_text='object receivers', related_name='receiver_object_set', to='objects.ObjectDB'),
),
migrations.AlterField(
model_name='msg',
name='db_receivers_scripts',
field=models.ManyToManyField(blank=True, help_text='script_receivers', related_name='receiver_script_set', to='scripts.ScriptDB'),
),
migrations.AlterField(
model_name='msg',
name='db_sender_accounts',
field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_account_set', to=settings.AUTH_USER_MODEL, verbose_name='sender(account)'),
),
migrations.AlterField(
model_name='msg',
name='db_sender_external',
field=models.CharField(blank=True, db_index=True, help_text="identifier for external sender, for example a sender over an IRC connection (i.e. someone who doesn't have an exixtence in-game).", max_length=255, null=True, verbose_name='external sender'),
),
migrations.AlterField(
model_name='msg',
name='db_sender_objects',
field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_object_set', to='objects.ObjectDB', verbose_name='sender(object)'),
),
migrations.AlterField(
model_name='msg',
name='db_sender_scripts',
field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_script_set', to='scripts.ScriptDB', verbose_name='sender(script)'),
),
migrations.AlterField(
model_name='msg',
name='db_tags',
field=models.ManyToManyField(blank=True, help_text='tags on this message. Tags are simple string markers to identify, group and alias messages.', to='typeclasses.Tag'),
),
]

View file

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('help', '0002_auto_20170606_1731'),
]
operations = [
migrations.AlterField(
model_name='helpentry',
name='db_entrytext',
field=models.TextField(blank=True, help_text='the main body of help text', verbose_name='help entry'),
),
migrations.AlterField(
model_name='helpentry',
name='db_help_category',
field=models.CharField(default='General', help_text='organizes help entries in lists', max_length=255, verbose_name='help category'),
),
migrations.AlterField(
model_name='helpentry',
name='db_key',
field=models.CharField(help_text='key to search for', max_length=255, unique=True, verbose_name='help key'),
),
migrations.AlterField(
model_name='helpentry',
name='db_lock_storage',
field=models.TextField(blank=True, help_text='normally view:all().', verbose_name='locks'),
),
migrations.AlterField(
model_name='helpentry',
name='db_tags',
field=models.ManyToManyField(blank=True, help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.', to='typeclasses.Tag'),
),
]

View file

@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import re
class Migration(migrations.Migration):
dependencies = [
('objects', '0009_remove_objectdb_db_player'),
]
operations = [
migrations.AlterField(
model_name='objectdb',
name='db_account',
field=models.ForeignKey(help_text='an Account connected to this object, if any.', null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='account'),
),
migrations.AlterField(
model_name='objectdb',
name='db_attributes',
field=models.ManyToManyField(help_text='attributes on this object. An attribute can hold any pickle-able python object (see docs for special cases).', to='typeclasses.Attribute'),
),
migrations.AlterField(
model_name='objectdb',
name='db_cmdset_storage',
field=models.CharField(blank=True, help_text='optional python path to a cmdset class.', max_length=255, null=True, verbose_name='cmdset'),
),
migrations.AlterField(
model_name='objectdb',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, verbose_name='creation date'),
),
migrations.AlterField(
model_name='objectdb',
name='db_destination',
field=models.ForeignKey(blank=True, help_text='a destination, used only by exit objects.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='destinations_set', to='objects.ObjectDB', verbose_name='destination'),
),
migrations.AlterField(
model_name='objectdb',
name='db_home',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='homes_set', to='objects.ObjectDB', verbose_name='home location'),
),
migrations.AlterField(
model_name='objectdb',
name='db_key',
field=models.CharField(db_index=True, max_length=255, verbose_name='key'),
),
migrations.AlterField(
model_name='objectdb',
name='db_location',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='locations_set', to='objects.ObjectDB', verbose_name='game location'),
),
migrations.AlterField(
model_name='objectdb',
name='db_lock_storage',
field=models.TextField(blank=True, help_text="locks limit access to an entity. A lock is defined as a 'lock string' on the form 'type:lockfunctions', defining what functionality is locked and how to determine access. Not defining a lock means no access is granted.", verbose_name='locks'),
),
migrations.AlterField(
model_name='objectdb',
name='db_sessid',
field=models.CharField(help_text='csv list of session ids of connected Account, if any.', max_length=32, null=True, validators=[django.core.validators.RegexValidator(re.compile('^\\d+(?:\\,\\d+)*\\Z', 32), code='invalid', message='Enter only digits separated by commas.')], verbose_name='session id'),
),
migrations.AlterField(
model_name='objectdb',
name='db_tags',
field=models.ManyToManyField(help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.', to='typeclasses.Tag'),
),
migrations.AlterField(
model_name='objectdb',
name='db_typeclass_path',
field=models.CharField(help_text="this defines what 'type' of entity this is. This variable holds a Python path to a module with a valid Evennia Typeclass.", max_length=255, null=True, verbose_name='typeclass'),
),
]

View file

@ -0,0 +1,87 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('scripts', '0011_remove_scriptdb_db_player'),
]
operations = [
migrations.AlterField(
model_name='scriptdb',
name='db_account',
field=models.ForeignKey(blank=True, help_text='the account to store this script on (should not be set if db_obj is set)', null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='scripted account'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_attributes',
field=models.ManyToManyField(help_text='attributes on this object. An attribute can hold any pickle-able python object (see docs for special cases).', to='typeclasses.Attribute'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, verbose_name='creation date'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_desc',
field=models.CharField(blank=True, max_length=255, verbose_name='desc'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_interval',
field=models.IntegerField(default=-1, help_text='how often to repeat script, in seconds. -1 means off.', verbose_name='interval'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_is_active',
field=models.BooleanField(default=False, verbose_name='script active'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_key',
field=models.CharField(db_index=True, max_length=255, verbose_name='key'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_lock_storage',
field=models.TextField(blank=True, help_text="locks limit access to an entity. A lock is defined as a 'lock string' on the form 'type:lockfunctions', defining what functionality is locked and how to determine access. Not defining a lock means no access is granted.", verbose_name='locks'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_obj',
field=models.ForeignKey(blank=True, help_text='the object to store this script on, if not a global script.', null=True, on_delete=django.db.models.deletion.CASCADE, to='objects.ObjectDB', verbose_name='scripted object'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_persistent',
field=models.BooleanField(default=False, verbose_name='survive server reboot'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_repeats',
field=models.IntegerField(default=0, help_text='0 means off.', verbose_name='number of repeats'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_start_delay',
field=models.BooleanField(default=False, help_text='pause interval seconds before starting.', verbose_name='start delay'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_tags',
field=models.ManyToManyField(help_text='tags on this object. Tags are simple string markers to identify, group and alias objects.', to='typeclasses.Tag'),
),
migrations.AlterField(
model_name='scriptdb',
name='db_typeclass_path',
field=models.CharField(help_text="this defines what 'type' of entity this is. This variable holds a Python path to a module with a valid Evennia Typeclass.", max_length=255, null=True, verbose_name='typeclass'),
),
]

View file

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
import pickle
from django.db import migrations, models
import evennia.utils.picklefield
from evennia.utils.utils import to_bytes
def migrate_serverconf(apps, schema_editor):
"""
Move server conf from a custom binary field into a PickleObjectField
"""
ServerConfig = apps.get_model("server", "ServerConfig")
for conf in ServerConfig.objects.all():
value = pickle.loads(utils.to_bytes(conf.db_value))
conf.db_value2 = value
conf.save()
class Migration(migrations.Migration):
dependencies = [
('server', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='serverconfig',
name='db_value2',
field=evennia.utils.picklefield.PickledObjectField(help_text='The data returned when the config value is accessed. Must be written as a Python literal if editing through the admin interface. Attribute values which are not Python literals cannot be edited through the admin interface.', null=True, verbose_name='value'),
),
migrations.AlterField(
model_name='serverconfig',
name='db_value',
field=models.BinaryField(blank=True),
),
# migrate data
migrations.RunPython(migrate_serverconf, migrations.RunPython.noop),
]

View file

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:43
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('server', '0002_auto_20190128_1820'),
]
operations = [
migrations.RemoveField(
model_name='serverconfig',
name='db_value',
),
migrations.RenameField(
model_name='serverconfig',
old_name='db_value2',
new_name='db_value',
),
]

View file

@ -14,6 +14,7 @@ from django.db import models
from evennia.utils.idmapper.models import WeakSharedMemoryModel from evennia.utils.idmapper.models import WeakSharedMemoryModel
from evennia.utils import logger, utils from evennia.utils import logger, utils
from evennia.server.manager import ServerConfigManager from evennia.server.manager import ServerConfigManager
from evennia.utils import picklefield
#------------------------------------------------------------ #------------------------------------------------------------
@ -43,7 +44,14 @@ class ServerConfig(WeakSharedMemoryModel):
# main name of the database entry # main name of the database entry
db_key = models.CharField(max_length=64, unique=True) db_key = models.CharField(max_length=64, unique=True)
# config value # config value
db_value = models.BinaryField(blank=True) # db_value = models.BinaryField(blank=True)
db_value = picklefield.PickledObjectField(
'value', null=True,
help_text="The data returned when the config value is accessed. Must be "
"written as a Python literal if editing through the admin "
"interface. Attribute values which are not Python literals "
"cannot be edited through the admin interface.")
objects = ServerConfigManager() objects = ServerConfigManager()
_is_deleted = False _is_deleted = False

View file

@ -0,0 +1,111 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.16 on 2019-01-28 18:20
from __future__ import unicode_literals
from django.db import migrations, models
import evennia.utils.picklefield
class Migration(migrations.Migration):
dependencies = [
('typeclasses', '0010_delete_old_player_tables'),
]
operations = [
migrations.DeleteModel(
name='DefaultAccount',
),
migrations.DeleteModel(
name='DefaultCharacter',
),
migrations.DeleteModel(
name='DefaultExit',
),
migrations.DeleteModel(
name='DefaultGuest',
),
migrations.DeleteModel(
name='DefaultObject',
),
migrations.DeleteModel(
name='DefaultRoom',
),
migrations.DeleteModel(
name='DefaultScript',
),
migrations.DeleteModel(
name='DoNothing',
),
migrations.DeleteModel(
name='ScriptBase',
),
migrations.DeleteModel(
name='Store',
),
migrations.AlterField(
model_name='attribute',
name='db_attrtype',
field=models.CharField(blank=True, db_index=True, help_text='Subclass of Attribute (None or nick)', max_length=16, null=True, verbose_name='attrtype'),
),
migrations.AlterField(
model_name='attribute',
name='db_category',
field=models.CharField(blank=True, db_index=True, help_text='Optional categorization of attribute.', max_length=128, null=True, verbose_name='category'),
),
migrations.AlterField(
model_name='attribute',
name='db_date_created',
field=models.DateTimeField(auto_now_add=True, verbose_name='date_created'),
),
migrations.AlterField(
model_name='attribute',
name='db_key',
field=models.CharField(db_index=True, max_length=255, verbose_name='key'),
),
migrations.AlterField(
model_name='attribute',
name='db_lock_storage',
field=models.TextField(blank=True, help_text='Lockstrings for this object are stored here.', verbose_name='locks'),
),
migrations.AlterField(
model_name='attribute',
name='db_model',
field=models.CharField(blank=True, db_index=True, help_text="Which model of object this attribute is attached to (A natural key like 'objects.objectdb'). You should not change this value unless you know what you are doing.", max_length=32, null=True, verbose_name='model'),
),
migrations.AlterField(
model_name='attribute',
name='db_strvalue',
field=models.TextField(blank=True, help_text='String-specific storage for quick look-up', null=True, verbose_name='strvalue'),
),
migrations.AlterField(
model_name='attribute',
name='db_value',
field=evennia.utils.picklefield.PickledObjectField(help_text='The data returned when the attribute is accessed. Must be written as a Python literal if editing through the admin interface. Attribute values which are not Python literals cannot be edited through the admin interface.', null=True, verbose_name='value'),
),
migrations.AlterField(
model_name='tag',
name='db_category',
field=models.CharField(db_index=True, help_text='tag category', max_length=64, null=True, verbose_name='category'),
),
migrations.AlterField(
model_name='tag',
name='db_data',
field=models.TextField(blank=True, help_text='optional data field with extra information. This is not searched for.', null=True, verbose_name='data'),
),
migrations.AlterField(
model_name='tag',
name='db_key',
field=models.CharField(db_index=True, help_text='tag identifier', max_length=255, null=True, verbose_name='key'),
),
migrations.AlterField(
model_name='tag',
name='db_model',
field=models.CharField(db_index=True, help_text='database model to Tag', max_length=32, null=True, verbose_name='model'),
),
migrations.AlterField(
model_name='tag',
name='db_tagtype',
field=models.CharField(db_index=True, help_text='overall type of Tag', max_length=16, null=True, verbose_name='tagtype'),
),
]