[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 import logger, utils
from evennia.server.manager import ServerConfigManager
from evennia.utils import picklefield
#------------------------------------------------------------
@ -43,7 +44,14 @@ class ServerConfig(WeakSharedMemoryModel):
# main name of the database entry
db_key = models.CharField(max_length=64, unique=True)
# 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()
_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'),
),
]