From cbbb32f1637a4a926da248694c213b58455330c9 Mon Sep 17 00:00:00 2001 From: tcaxle Date: Mon, 13 Apr 2020 00:31:12 +0100 Subject: [PATCH] stuff --- app/__pycache__/admin.cpython-38.pyc | Bin 707 -> 1200 bytes app/__pycache__/models.cpython-38.pyc | Bin 29252 -> 41440 bytes app/admin.py | 17 +- app/migrations/0001_initial.py | 575 ++++++----- app/migrations/0002_auto_20200411_1502.py | 37 - app/migrations/0003_auto_20200411_1503.py | 44 - app/migrations/0004_auto_20200411_1544.py | 29 - app/migrations/0005_auto_20200411_1620.py | 70 -- app/migrations/0006_auto_20200411_1624.py | 28 - app/migrations/0007_auto_20200411_1651.py | 426 -------- app/migrations/0008_auto_20200411_1653.py | 93 -- app/migrations/0009_auto_20200411_1706.py | 100 -- app/migrations/0010_auto_20200411_1711.py | 58 -- app/migrations/0011_rollconfiguration_name.py | 20 - .../0012_rollconfiguration_successesauto.py | 19 - app/migrations/0013_auto_20200411_1727.py | 40 - app/migrations/0014_auto_20200411_1800.py | 43 - app/migrations/0015_auto_20200411_1844.py | 169 ---- app/migrations/0016_auto_20200411_1851.py | 189 ---- app/migrations/0017_auto_20200411_2228.py | 114 --- .../__pycache__/0001_initial.cpython-38.pyc | Bin 10488 -> 12149 bytes app/models.py | 940 ++++++++++++------ app/views.py | 10 +- exalted/__pycache__/settings.cpython-38.pyc | Bin 2369 -> 2444 bytes exalted/__pycache__/urls.cpython-38.pyc | Bin 910 -> 433 bytes exalted/settings.py | 5 +- exalted/urls.py | 18 +- 27 files changed, 1030 insertions(+), 2014 deletions(-) delete mode 100644 app/migrations/0002_auto_20200411_1502.py delete mode 100644 app/migrations/0003_auto_20200411_1503.py delete mode 100644 app/migrations/0004_auto_20200411_1544.py delete mode 100644 app/migrations/0005_auto_20200411_1620.py delete mode 100644 app/migrations/0006_auto_20200411_1624.py delete mode 100644 app/migrations/0007_auto_20200411_1651.py delete mode 100644 app/migrations/0008_auto_20200411_1653.py delete mode 100644 app/migrations/0009_auto_20200411_1706.py delete mode 100644 app/migrations/0010_auto_20200411_1711.py delete mode 100644 app/migrations/0011_rollconfiguration_name.py delete mode 100644 app/migrations/0012_rollconfiguration_successesauto.py delete mode 100644 app/migrations/0013_auto_20200411_1727.py delete mode 100644 app/migrations/0014_auto_20200411_1800.py delete mode 100644 app/migrations/0015_auto_20200411_1844.py delete mode 100644 app/migrations/0016_auto_20200411_1851.py delete mode 100644 app/migrations/0017_auto_20200411_2228.py diff --git a/app/__pycache__/admin.cpython-38.pyc b/app/__pycache__/admin.cpython-38.pyc index 81fc17552693da0e3a1cc844e84465783fc0a192..bafe9282413a34db16ea1d29eea32280a4135153 100644 GIT binary patch literal 1200 zcmZXS&2H2%5XYTtw%u;`quVXCly6!IEr-nuAkyuiK# zH(mgaybmW|IrSAdVJF>WQf$Tf&EMnE%-HX{-8M1f3opZ+_ksCF*dq%*yYW(n^`O|1OyoPukaSQPV;x^(<#2v(4#684)#9N35h_?|B z5$_`=x#19caLi`x<6U0vuKSO+AIr0KBYF^uW8acX2qnIVv z=6=oPUW-KpJkwsr6zGt>_j2Lnvj~d>n=weHbURBSWHirblO>A9G+drB z(1VrnR8k&lyLMkH+ZOmLa`AWGevbZG{>2$@H1Y|a6>8Y)8STl=a^>$4x z%G)coV_WBxN@bFrNTqk{J5^y-?EJ`0Qg!blsawHuvr6}A-lZyLP_=8PbUHX`aY}!z=qXvm>)~oR-^h RJC2#fivPtMO}@@}aPm$jV?N&GjKreE sZwDY{kzw8t{08M|g{#DX-@B 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

*w}_Z;yqBt&>V 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 diff --git a/app/admin.py b/app/admin.py index 27d062b..8a92635 100644 --- a/app/admin.py +++ b/app/admin.py @@ -14,6 +14,8 @@ admin.site.register(itemArmor) admin.site.register(charmSolar) admin.site.register(charmLunar) +admin.site.register(charmLunarShape) +admin.site.register(charmEvocation) admin.site.register(merit) @@ -22,6 +24,19 @@ admin.site.register(speciality) admin.site.register(intimacyTie) admin.site.register(intimacyPrincipal) -admin.site.register(characterBase) +admin.site.register(characterMortal) admin.site.register(characterExaltSolar) admin.site.register(characterExaltLunar) + +admin.site.register(ownershipItem) +admin.site.register(ownershipItemWeapon) +admin.site.register(ownershipItemArmor) +admin.site.register(ownershipCharmMartialArt) +admin.site.register(ownershipCharmEvocation) +admin.site.register(ownershipCharmSolar) +admin.site.register(ownershipCharmLunar) +admin.site.register(ownershipCharmLunarShape) +admin.site.register(ownershipMerit) +admin.site.register(ownershipSpeciality) +admin.site.register(ownershipIntimacyTie) +admin.site.register(ownershipIntimacyPrincipal) diff --git a/app/migrations/0001_initial.py b/app/migrations/0001_initial.py index cda855b..6b441c2 100644 --- a/app/migrations/0001_initial.py +++ b/app/migrations/0001_initial.py @@ -1,7 +1,8 @@ -# Generated by Django 3.0.5 on 2020-04-11 14:59 +# Generated by Django 3.0.5 on 2020-04-12 13:10 import app.models from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -9,49 +10,202 @@ class Migration(migrations.Migration): initial = True dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), ] operations = [ migrations.CreateModel( - name='intimacyPrincipal', + name='characterBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', app.models.NameField(max_length=100, verbose_name='Name')), + ('strength', app.models.DotField(default=0, verbose_name='Strength')), + ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), + ('stamina', app.models.DotField(default=0, verbose_name='Stamina')), + ('charisma', app.models.DotField(default=0, verbose_name='Charisma')), + ('manipulation', app.models.DotField(default=0, verbose_name='Manipulation')), + ('appearance', app.models.DotField(default=0, verbose_name='Apperance')), + ('perception', app.models.DotField(default=0, verbose_name='Perception')), + ('intelligence', app.models.DotField(default=0, verbose_name='Intelligence')), + ('wits', app.models.DotField(default=0, verbose_name='Wits')), + ('archery', app.models.DotField(default=0, verbose_name='Archery')), + ('athletics', app.models.DotField(default=0, verbose_name='Athletics')), + ('awareness', app.models.DotField(default=0, verbose_name='Awareness')), + ('brawl', app.models.DotField(default=0, verbose_name='Brawl')), + ('bureaucracy', app.models.DotField(default=0, verbose_name='Bureaucracy')), + ('craft', app.models.DotField(default=0, verbose_name='Craft')), + ('dodge', app.models.DotField(default=0, verbose_name='Dodge')), + ('integrity', app.models.DotField(default=0, verbose_name='Integrity')), + ('investigation', app.models.DotField(default=0, verbose_name='Investigation')), + ('larceny', app.models.DotField(default=0, verbose_name='Larceny')), + ('linguistics', app.models.DotField(default=0, verbose_name='Linguistics')), + ('lore', app.models.DotField(default=0, verbose_name='Lore')), + ('martialArts', app.models.DotField(default=0, verbose_name='MartialArts')), + ('medicine', app.models.DotField(default=0, verbose_name='Medicine')), + ('melee', app.models.DotField(default=0, verbose_name='Melee')), + ('occult', app.models.DotField(default=0, verbose_name='Occult')), + ('performance', app.models.DotField(default=0, verbose_name='Performance')), + ('presence', app.models.DotField(default=0, verbose_name='Presence')), + ('resistance', app.models.DotField(default=0, verbose_name='Resistance')), + ('ride', app.models.DotField(default=0, verbose_name='Ride')), + ('sail', app.models.DotField(default=0, verbose_name='Sail')), + ('socialize', app.models.DotField(default=0, verbose_name='Socialize')), + ('stealth', app.models.DotField(default=0, verbose_name='Stealth')), + ('survival', app.models.DotField(default=0, verbose_name='Survival')), + ('thrown', app.models.DotField(default=0, verbose_name='Thrown')), + ('war', app.models.DotField(default=0, verbose_name='War')), + ('willpowerMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Willpower')), + ('willpower', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Willpower')), + ('experienceTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), + ('experience', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), + ('essence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence')), + ('health0', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-0' Health Levels")), + ('health1', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-1' Health Levels")), + ('health2', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-2' Health Levels")), + ('healthIndex', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Health Track Index')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.characterbase_set+', to='contenttypes.ContentType')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + ), + migrations.CreateModel( + name='effectBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', app.models.NameField(max_length=100, verbose_name='Name')), + ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('active', app.models.NamedBooleanField(default=False, verbose_name='Active?')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.effectbase_set+', to='contenttypes.ContentType')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + ), + migrations.CreateModel( + name='intimacyBase', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('intensity', app.models.SingleChoiceField(blank=True, choices=[('MINOR', 'Minor'), ('MAJOR', 'Major'), ('DEFINING', 'Defining')], max_length=100, verbose_name='Intensity')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.intimacybase_set+', to='contenttypes.ContentType')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, ), + migrations.CreateModel( + name='itemBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', app.models.NameField(max_length=100, verbose_name='Name')), + ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.itembase_set+', to='contenttypes.ContentType')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + ), + migrations.CreateModel( + name='modifierBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('value', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Modifier Value')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.modifierbase_set+', to='contenttypes.ContentType')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + ), + migrations.CreateModel( + name='characterExaltBase', + fields=[ + ('characterbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase')), + ('motesPersonalMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Personal Motes')), + ('motesPersonal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes')), + ('motesPeripheralMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes')), + ('motesPeripheral', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes')), + ('limitTrigger', models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger')), + ('limitBreak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break')), + ('experienceExaltedTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), + ('experienceExalted', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.characterbase',), + ), + migrations.CreateModel( + name='characterMortal', + fields=[ + ('characterbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.characterbase',), + ), + migrations.CreateModel( + name='charmBase', + fields=[ + ('effectbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.effectBase')), + ('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')), + ('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Key Level')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.effectbase',), + ), + migrations.CreateModel( + name='intimacyPrincipal', + fields=[ + ('intimacybase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.intimacyBase')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.intimacybase',), + ), migrations.CreateModel( name='intimacyTie', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('intensity', app.models.SingleChoiceField(blank=True, choices=[('MINOR', 'Minor'), ('MAJOR', 'Major'), ('DEFINING', 'Defining')], max_length=100, verbose_name='Intensity')), + ('intimacybase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.intimacyBase')), ('target', app.models.NamedCharField(max_length=100, verbose_name='Target')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.intimacybase',), ), migrations.CreateModel( name='item', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.itembase',), ), migrations.CreateModel( name='itemArmor', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')), + ('equipped', app.models.NamedBooleanField(default=False, verbose_name='Equipped?')), ('category', app.models.SingleChoiceField(blank=True, choices=[('L', 'Light'), ('M', 'Medium'), ('H', 'Heavy')], max_length=100, verbose_name='Category')), ('tags', app.models.MultiChoiceField(blank=True, choices=[('BUOYANT', 'Buoyant'), ('CONCEALABLE', 'Concealable'), ('SILENT', 'Silent')], max_length=100, verbose_name='Tags')), ('soak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Soak')), @@ -61,14 +215,15 @@ class Migration(migrations.Migration): ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.itembase',), ), migrations.CreateModel( - name='itemWeaponMelee', + name='itemWeaponBase', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('itembase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemBase')), + ('equipped', app.models.NamedBooleanField(default=False, verbose_name='Equipped?')), ('category', app.models.SingleChoiceField(blank=True, choices=[('L', 'Light'), ('M', 'Medium'), ('H', 'Heavy')], max_length=100, verbose_name='Category')), ('tags', app.models.MultiChoiceField(blank=True, choices=[('General', (('ONE HANDED', 'One Handed'), ('TWO HANDED', 'Two Handed'), ('BASHING', 'Bashing'), ('CONCEALABLE', 'Concealable'), ('LETHAL', 'Lethal'), ('MOUNTED', 'Mounted'), ('PIERCING', 'Piercing'), ('SPECIAL', 'Special'))), ('Melee', (('MELEE', 'Melee'), ('BALANCED', 'Balanced'), ('BRAWL', 'Brawl'), ('CHOPPING', 'Chopping'), ('DISARMING', 'Disarming'), ('FLEXIBLE', 'Flexible'), ('IMPROVISED', 'Improvised'), ('GRAPPLING', 'Grappling'), ('MARTIAL ARTS', 'Martial Arts'), ('NATURAL', 'Natural'), ('REACHING', 'Reaching'), ('SHIELD', 'Shield'), ('SMASHING', 'Smashing'), ('WORN', 'Worn'))), ('Thrown', (('THROWN', 'Occult'), ('CUTTING', 'Cutting'), ('POISONABLE', 'Poisonable'), ('SUBTLE', 'Subtle'))), ('Archery', (('ARCHERY', 'Archery'), ('CROSSBOW', 'Crossbow'), ('FLAME', 'Flame'), ('POWERFUL', 'Powerful'), ('SLOW', 'Slow')))], max_length=100, verbose_name='Tags')), ('accuracy', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Accuracy')), @@ -79,68 +234,75 @@ class Migration(migrations.Migration): ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.itembase',), ), migrations.CreateModel( - name='itemWeaponRanged', + name='merit', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('category', app.models.SingleChoiceField(blank=True, choices=[('L', 'Light'), ('M', 'Medium'), ('H', 'Heavy')], max_length=100, verbose_name='Category')), - ('tags', app.models.MultiChoiceField(blank=True, choices=[('General', (('ONE HANDED', 'One Handed'), ('TWO HANDED', 'Two Handed'), ('BASHING', 'Bashing'), ('CONCEALABLE', 'Concealable'), ('LETHAL', 'Lethal'), ('MOUNTED', 'Mounted'), ('PIERCING', 'Piercing'), ('SPECIAL', 'Special'))), ('Melee', (('MELEE', 'Melee'), ('BALANCED', 'Balanced'), ('BRAWL', 'Brawl'), ('CHOPPING', 'Chopping'), ('DISARMING', 'Disarming'), ('FLEXIBLE', 'Flexible'), ('IMPROVISED', 'Improvised'), ('GRAPPLING', 'Grappling'), ('MARTIAL ARTS', 'Martial Arts'), ('NATURAL', 'Natural'), ('REACHING', 'Reaching'), ('SHIELD', 'Shield'), ('SMASHING', 'Smashing'), ('WORN', 'Worn'))), ('Thrown', (('THROWN', 'Occult'), ('CUTTING', 'Cutting'), ('POISONABLE', 'Poisonable'), ('SUBTLE', 'Subtle'))), ('Archery', (('ARCHERY', 'Archery'), ('CROSSBOW', 'Crossbow'), ('FLAME', 'Flame'), ('POWERFUL', 'Powerful'), ('SLOW', 'Slow')))], max_length=100, verbose_name='Tags')), - ('accuracy', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Accuracy')), - ('damage', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Damage')), - ('defense', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Defense')), - ('overwhelming', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Overwhelming')), - ('attunement', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Attunement')), - ('rangeClose', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Close Range')), - ('rangeShort', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Short Range')), - ('rangeMedium', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Medium Range')), - ('rangeLong', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Long Range')), - ('rangeExtreme', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Extreme Range')), + ('effectbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.effectBase')), + ('dots', app.models.DotField(default=0, verbose_name='Dots')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.effectbase',), ), migrations.CreateModel( name='modifierAbility', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Modifier Value')), + ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), ('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Ability')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.modifierbase',), ), migrations.CreateModel( name='modifierAttribute', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Modifier Value')), - ('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Srength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Attribute')), + ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), + ('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Attribute')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.modifierbase',), ), migrations.CreateModel( name='modifierStatic', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Modifier Value')), + ('modifierbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.modifierBase')), ('static', app.models.SingleChoiceField(blank=True, choices=[('SOAK NATURAL', 'Natural Soak'), ('SOAK ARMORED', 'Armored Soak'), ('SOAK TOTAL', 'Total Soak'), ('HARDNESS', 'Hardness'), ('PARRY', 'Parry'), ('EVASION', 'Evasion'), ('RESOLVE', 'Resolve'), ('GUILE', 'Guile'), ('RUSH', 'Rush'), ('DISENGAGE', 'Disengage'), ('JOIN BATTLE', 'Join Battle')], max_length=100, verbose_name='Static')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, + bases=('app.modifierbase',), + ), + migrations.CreateModel( + name='speciality', + fields=[ + ('effectbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.effectBase')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.effectbase',), ), migrations.CreateModel( name='rollConfiguration', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', app.models.NameField(max_length=100, verbose_name='Name')), + ('successesAuto', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Auto-Successes')), ('r01', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=1, verbose_name='1s')), ('r02', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=2, verbose_name='2s')), ('r03', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['NONE'], max_length=100, number=3, verbose_name='3s')), @@ -151,213 +313,160 @@ class Migration(migrations.Migration): ('r08', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS'], max_length=100, number=8, verbose_name='8s')), ('r09', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS'], max_length=100, number=9, verbose_name='9s')), ('r10', app.models.DieField(choices=[('NONE', 'None'), ('SUCCESS', 'Success'), ('DOUBLE', 'Double'), ('EXPLODING_DISAPPEARING', 'Exploding / Disappearing'), ('SUBTRACTING', 'Subtracting')], default=['SUCCESS', 'DOUBLE'], max_length=100, number=10, verbose_name='10s')), - ], - ), - migrations.CreateModel( - name='speciality', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Ability')), - ], - ), - migrations.CreateModel( - name='merit', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('dots', app.models.DotField(default=0, verbose_name='Dots')), - ('modifierAbility', app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers')), - ('modifierAttribute', app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers')), - ('modifierStatic', app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers')), - ('rollConfiguration', app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations')), - ], - ), - migrations.CreateModel( - name='charm', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('modifierAbility', app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers')), - ('modifierAttribute', app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers')), - ('modifierStatic', app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers')), - ('rollConfiguration', app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations')), - ], - ), - migrations.CreateModel( - name='characterMortal', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('strength', app.models.DotField(default=0, verbose_name='Strength')), - ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), - ('stamina', app.models.DotField(default=0, verbose_name='Stamina')), - ('charisma', app.models.DotField(default=0, verbose_name='Charisma')), - ('manipulation', app.models.DotField(default=0, verbose_name='Manipulation')), - ('appearance', app.models.DotField(default=0, verbose_name='Apperance')), - ('perception', app.models.DotField(default=0, verbose_name='Perception')), - ('intelligence', app.models.DotField(default=0, verbose_name='Intelligence')), - ('wits', app.models.DotField(default=0, verbose_name='Wits')), - ('archey', app.models.DotField(default=0, verbose_name='Archery')), - ('athletics', app.models.DotField(default=0, verbose_name='Athletics')), - ('awareness', app.models.DotField(default=0, verbose_name='Awareness')), - ('brawl', app.models.DotField(default=0, verbose_name='Brawl')), - ('bureaucracy', app.models.DotField(default=0, verbose_name='Bureaucracy')), - ('craft', app.models.DotField(default=0, verbose_name='Craft')), - ('dodge', app.models.DotField(default=0, verbose_name='Dodge')), - ('integrity', app.models.DotField(default=0, verbose_name='Integrity')), - ('investigation', app.models.DotField(default=0, verbose_name='Investigation')), - ('larceny', app.models.DotField(default=0, verbose_name='Larceny')), - ('linguistics', app.models.DotField(default=0, verbose_name='Linguistics')), - ('lore', app.models.DotField(default=0, verbose_name='Lore')), - ('martialArts', app.models.DotField(default=0, verbose_name='MartialArts')), - ('medicine', app.models.DotField(default=0, verbose_name='Medicine')), - ('melee', app.models.DotField(default=0, verbose_name='Melee')), - ('occult', app.models.DotField(default=0, verbose_name='Occult')), - ('performance', app.models.DotField(default=0, verbose_name='Performance')), - ('presence', app.models.DotField(default=0, verbose_name='Presence')), - ('resistance', app.models.DotField(default=0, verbose_name='Resistance')), - ('ride', app.models.DotField(default=0, verbose_name='Ride')), - ('sail', app.models.DotField(default=0, verbose_name='Sail')), - ('socialize', app.models.DotField(default=0, verbose_name='Socialize')), - ('stealth', app.models.DotField(default=0, verbose_name='Stealth')), - ('survival', app.models.DotField(default=0, verbose_name='Survival')), - ('thrown', app.models.DotField(default=0, verbose_name='Thrown')), - ('war', app.models.DotField(default=0, verbose_name='War')), - ('willpowerMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Willpower')), - ('willpower', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Willpower')), - ('experienceTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), - ('experience', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), - ('health0', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-0' Health Levels")), - ('health1', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-1' Health Levels")), - ('health2', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-2' Health Levels")), - ('healthIndex', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Health Track Index')), - ('armor', app.models.NamedManyToManyField(blank=True, to='app.itemArmor', verbose_name='Armor')), - ('items', app.models.NamedManyToManyField(blank=True, to='app.item', verbose_name='Items')), - ('merits', app.models.NamedManyToManyField(blank=True, to='app.merit', verbose_name='Merits')), - ('weaponsMelee', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponMelee', verbose_name='Melee Weapons')), - ('weaponsRanged', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponRanged', verbose_name='Ranged Weapons')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.rollconfiguration_set+', to='contenttypes.ContentType')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', }, ), - migrations.CreateModel( - name='characterExaltSolar', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('strength', app.models.DotField(default=0, verbose_name='Strength')), - ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), - ('stamina', app.models.DotField(default=0, verbose_name='Stamina')), - ('charisma', app.models.DotField(default=0, verbose_name='Charisma')), - ('manipulation', app.models.DotField(default=0, verbose_name='Manipulation')), - ('appearance', app.models.DotField(default=0, verbose_name='Apperance')), - ('perception', app.models.DotField(default=0, verbose_name='Perception')), - ('intelligence', app.models.DotField(default=0, verbose_name='Intelligence')), - ('wits', app.models.DotField(default=0, verbose_name='Wits')), - ('archey', app.models.DotField(default=0, verbose_name='Archery')), - ('athletics', app.models.DotField(default=0, verbose_name='Athletics')), - ('awareness', app.models.DotField(default=0, verbose_name='Awareness')), - ('brawl', app.models.DotField(default=0, verbose_name='Brawl')), - ('bureaucracy', app.models.DotField(default=0, verbose_name='Bureaucracy')), - ('craft', app.models.DotField(default=0, verbose_name='Craft')), - ('dodge', app.models.DotField(default=0, verbose_name='Dodge')), - ('integrity', app.models.DotField(default=0, verbose_name='Integrity')), - ('investigation', app.models.DotField(default=0, verbose_name='Investigation')), - ('larceny', app.models.DotField(default=0, verbose_name='Larceny')), - ('linguistics', app.models.DotField(default=0, verbose_name='Linguistics')), - ('lore', app.models.DotField(default=0, verbose_name='Lore')), - ('martialArts', app.models.DotField(default=0, verbose_name='MartialArts')), - ('medicine', app.models.DotField(default=0, verbose_name='Medicine')), - ('melee', app.models.DotField(default=0, verbose_name='Melee')), - ('occult', app.models.DotField(default=0, verbose_name='Occult')), - ('performance', app.models.DotField(default=0, verbose_name='Performance')), - ('presence', app.models.DotField(default=0, verbose_name='Presence')), - ('resistance', app.models.DotField(default=0, verbose_name='Resistance')), - ('ride', app.models.DotField(default=0, verbose_name='Ride')), - ('sail', app.models.DotField(default=0, verbose_name='Sail')), - ('socialize', app.models.DotField(default=0, verbose_name='Socialize')), - ('stealth', app.models.DotField(default=0, verbose_name='Stealth')), - ('survival', app.models.DotField(default=0, verbose_name='Survival')), - ('thrown', app.models.DotField(default=0, verbose_name='Thrown')), - ('war', app.models.DotField(default=0, verbose_name='War')), - ('willpowerMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Willpower')), - ('willpower', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Willpower')), - ('experienceTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), - ('experience', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), - ('health0', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-0' Health Levels")), - ('health1', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-1' Health Levels")), - ('health2', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-2' Health Levels")), - ('healthIndex', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Health Track Index')), - ('armor', app.models.NamedManyToManyField(blank=True, to='app.itemArmor', verbose_name='Armor')), - ('items', app.models.NamedManyToManyField(blank=True, to='app.item', verbose_name='Items')), - ('merits', app.models.NamedManyToManyField(blank=True, to='app.merit', verbose_name='Merits')), - ('weaponsMelee', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponMelee', verbose_name='Melee Weapons')), - ('weaponsRanged', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponRanged', verbose_name='Ranged Weapons')), - ], - options={ - 'abstract': False, - }, + migrations.AddField( + model_name='effectbase', + name='rollConfiguration', + field=app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations'), ), migrations.CreateModel( name='characterExaltLunar', fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('strength', app.models.DotField(default=0, verbose_name='Strength')), - ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), - ('stamina', app.models.DotField(default=0, verbose_name='Stamina')), - ('charisma', app.models.DotField(default=0, verbose_name='Charisma')), - ('manipulation', app.models.DotField(default=0, verbose_name='Manipulation')), - ('appearance', app.models.DotField(default=0, verbose_name='Apperance')), - ('perception', app.models.DotField(default=0, verbose_name='Perception')), - ('intelligence', app.models.DotField(default=0, verbose_name='Intelligence')), - ('wits', app.models.DotField(default=0, verbose_name='Wits')), - ('archey', app.models.DotField(default=0, verbose_name='Archery')), - ('athletics', app.models.DotField(default=0, verbose_name='Athletics')), - ('awareness', app.models.DotField(default=0, verbose_name='Awareness')), - ('brawl', app.models.DotField(default=0, verbose_name='Brawl')), - ('bureaucracy', app.models.DotField(default=0, verbose_name='Bureaucracy')), - ('craft', app.models.DotField(default=0, verbose_name='Craft')), - ('dodge', app.models.DotField(default=0, verbose_name='Dodge')), - ('integrity', app.models.DotField(default=0, verbose_name='Integrity')), - ('investigation', app.models.DotField(default=0, verbose_name='Investigation')), - ('larceny', app.models.DotField(default=0, verbose_name='Larceny')), - ('linguistics', app.models.DotField(default=0, verbose_name='Linguistics')), - ('lore', app.models.DotField(default=0, verbose_name='Lore')), - ('martialArts', app.models.DotField(default=0, verbose_name='MartialArts')), - ('medicine', app.models.DotField(default=0, verbose_name='Medicine')), - ('melee', app.models.DotField(default=0, verbose_name='Melee')), - ('occult', app.models.DotField(default=0, verbose_name='Occult')), - ('performance', app.models.DotField(default=0, verbose_name='Performance')), - ('presence', app.models.DotField(default=0, verbose_name='Presence')), - ('resistance', app.models.DotField(default=0, verbose_name='Resistance')), - ('ride', app.models.DotField(default=0, verbose_name='Ride')), - ('sail', app.models.DotField(default=0, verbose_name='Sail')), - ('socialize', app.models.DotField(default=0, verbose_name='Socialize')), - ('stealth', app.models.DotField(default=0, verbose_name='Stealth')), - ('survival', app.models.DotField(default=0, verbose_name='Survival')), - ('thrown', app.models.DotField(default=0, verbose_name='Thrown')), - ('war', app.models.DotField(default=0, verbose_name='War')), - ('willpowerMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Willpower')), - ('willpower', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Willpower')), - ('experienceTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), - ('experience', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), - ('health0', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-0' Health Levels")), - ('health1', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-1' Health Levels")), - ('health2', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-2' Health Levels")), - ('healthIndex', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Health Track Index')), - ('armor', app.models.NamedManyToManyField(blank=True, to='app.itemArmor', verbose_name='Armor')), - ('items', app.models.NamedManyToManyField(blank=True, to='app.item', verbose_name='Items')), - ('merits', app.models.NamedManyToManyField(blank=True, to='app.merit', verbose_name='Merits')), - ('weaponsMelee', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponMelee', verbose_name='Melee Weapons')), - ('weaponsRanged', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponRanged', verbose_name='Ranged Weapons')), + ('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')), + ('attributeFavored', app.models.MultiChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Favoured Attributes')), ], options={ 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.characterexaltbase',), + ), + migrations.CreateModel( + name='characterExaltSolar', + fields=[ + ('characterexaltbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterExaltBase')), + ('abilitySupernal', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Supernal Ability')), + ('abilityFavored', app.models.MultiChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Favoured Abilities')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.characterexaltbase',), + ), + migrations.CreateModel( + name='itemWeaponMelee', + fields=[ + ('itemweaponbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemWeaponBase')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.itemweaponbase',), + ), + migrations.CreateModel( + name='itemWeaponRanged', + fields=[ + ('itemweaponbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.itemWeaponBase')), + ('rangeClose', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Close Range')), + ('rangeShort', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Short Range')), + ('rangeMedium', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Medium Range')), + ('rangeLong', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Long Range')), + ('rangeExtreme', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Extreme Range')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.itemweaponbase',), + ), + migrations.AddField( + model_name='effectbase', + name='modifierAbility', + field=app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers'), + ), + migrations.AddField( + model_name='effectbase', + name='modifierAttribute', + field=app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers'), + ), + migrations.AddField( + model_name='effectbase', + name='modifierStatic', + field=app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers'), + ), + migrations.CreateModel( + name='artifactBase', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', app.models.NameField(max_length=100, verbose_name='Name')), + ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), + ('item', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.itemBase', verbose_name='Item')), + ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.artifactbase_set+', to='contenttypes.ContentType')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltBase', verbose_name='Character')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', }, ), + migrations.CreateModel( + name='charmSolar', + fields=[ + ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), + ('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Key Ability')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltSolar', verbose_name='Character')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.charmbase',), + ), + migrations.CreateModel( + name='charmMartialArt', + fields=[ + ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltBase', verbose_name='Characer')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.charmbase',), + ), + migrations.CreateModel( + name='charmLunarShape', + fields=[ + ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.charmbase',), + ), + migrations.CreateModel( + name='charmLunar', + fields=[ + ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), + ('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Key Attribute')), + ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.charmbase',), + ), + migrations.CreateModel( + name='artifactEvocation', + fields=[ + ('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), + ('artifact', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.artifactBase', verbose_name='Artifact')), + ], + options={ + 'abstract': False, + 'base_manager_name': 'objects', + }, + bases=('app.charmbase',), + ), ] diff --git a/app/migrations/0002_auto_20200411_1502.py b/app/migrations/0002_auto_20200411_1502.py deleted file mode 100644 index 83ce039..0000000 --- a/app/migrations/0002_auto_20200411_1502.py +++ /dev/null @@ -1,37 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 15:02 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='characterexaltlunar', - name='experience', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='experienceTotal', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='experience', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='experienceTotal', - ), - migrations.RemoveField( - model_name='charactermortal', - name='experience', - ), - migrations.RemoveField( - model_name='charactermortal', - name='experienceTotal', - ), - ] diff --git a/app/migrations/0003_auto_20200411_1503.py b/app/migrations/0003_auto_20200411_1503.py deleted file mode 100644 index 7e831d4..0000000 --- a/app/migrations/0003_auto_20200411_1503.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 15:03 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0002_auto_20200411_1502'), - ] - - operations = [ - migrations.AddField( - model_name='characterexaltlunar', - name='experience', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='experienceTotal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='experience', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='experienceTotal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience'), - ), - migrations.AddField( - model_name='charactermortal', - name='experience', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience'), - ), - migrations.AddField( - model_name='charactermortal', - name='experienceTotal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience'), - ), - ] diff --git a/app/migrations/0004_auto_20200411_1544.py b/app/migrations/0004_auto_20200411_1544.py deleted file mode 100644 index 1065c94..0000000 --- a/app/migrations/0004_auto_20200411_1544.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 15:44 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0003_auto_20200411_1503'), - ] - - operations = [ - migrations.AddField( - model_name='itemarmor', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - migrations.AddField( - model_name='itemweaponmelee', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - migrations.AddField( - model_name='itemweaponranged', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - ] diff --git a/app/migrations/0005_auto_20200411_1620.py b/app/migrations/0005_auto_20200411_1620.py deleted file mode 100644 index 90a436c..0000000 --- a/app/migrations/0005_auto_20200411_1620.py +++ /dev/null @@ -1,70 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 16:20 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0004_auto_20200411_1544'), - ] - - operations = [ - migrations.RenameField( - model_name='characterexaltlunar', - old_name='armor', - new_name='armorEquipped', - ), - migrations.RenameField( - model_name='characterexaltlunar', - old_name='weaponsMelee', - new_name='weaponsMeleeEquipped', - ), - migrations.RenameField( - model_name='characterexaltlunar', - old_name='weaponsRanged', - new_name='weaponsRangedEquipped', - ), - migrations.RenameField( - model_name='characterexaltsolar', - old_name='armor', - new_name='armorEquipped', - ), - migrations.RenameField( - model_name='characterexaltsolar', - old_name='weaponsMelee', - new_name='weaponsMeleeEquipped', - ), - migrations.RenameField( - model_name='characterexaltsolar', - old_name='weaponsRanged', - new_name='weaponsRangedEquipped', - ), - migrations.RenameField( - model_name='charactermortal', - old_name='armor', - new_name='armorEquipped', - ), - migrations.RenameField( - model_name='charactermortal', - old_name='weaponsMelee', - new_name='weaponsMeleeEquipped', - ), - migrations.RenameField( - model_name='charactermortal', - old_name='weaponsRanged', - new_name='weaponsRangedEquipped', - ), - migrations.RemoveField( - model_name='itemarmor', - name='equipped', - ), - migrations.RemoveField( - model_name='itemweaponmelee', - name='equipped', - ), - migrations.RemoveField( - model_name='itemweaponranged', - name='equipped', - ), - ] diff --git a/app/migrations/0006_auto_20200411_1624.py b/app/migrations/0006_auto_20200411_1624.py deleted file mode 100644 index 7d7f180..0000000 --- a/app/migrations/0006_auto_20200411_1624.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 16:24 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0005_auto_20200411_1620'), - ] - - operations = [ - migrations.RenameField( - model_name='characterexaltlunar', - old_name='archey', - new_name='archery', - ), - migrations.RenameField( - model_name='characterexaltsolar', - old_name='archey', - new_name='archery', - ), - migrations.RenameField( - model_name='charactermortal', - old_name='archey', - new_name='archery', - ), - ] diff --git a/app/migrations/0007_auto_20200411_1651.py b/app/migrations/0007_auto_20200411_1651.py deleted file mode 100644 index 50625d0..0000000 --- a/app/migrations/0007_auto_20200411_1651.py +++ /dev/null @@ -1,426 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 16:51 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0006_auto_20200411_1624'), - ] - - operations = [ - migrations.RemoveField( - model_name='characterexaltlunar', - name='appearance', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='archery', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='armorEquipped', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='athletics', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='awareness', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='brawl', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='bureaucracy', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='charisma', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='craft', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='dexterity', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='dodge', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='experience', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='experienceTotal', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='health0', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='health1', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='health2', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='healthIndex', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='id', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='integrity', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='intelligence', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='investigation', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='items', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='larceny', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='linguistics', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='lore', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='manipulation', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='martialArts', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='medicine', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='melee', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='merits', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='name', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='occult', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='perception', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='performance', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='presence', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='resistance', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='ride', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='sail', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='socialize', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='stamina', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='stealth', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='strength', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='survival', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='thrown', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='war', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='weaponsMeleeEquipped', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='weaponsRangedEquipped', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='willpower', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='willpowerMax', - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='wits', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='appearance', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='archery', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='armorEquipped', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='athletics', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='awareness', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='brawl', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='bureaucracy', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='charisma', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='craft', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='dexterity', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='dodge', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='experience', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='experienceTotal', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='health0', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='health1', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='health2', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='healthIndex', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='id', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='integrity', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='intelligence', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='investigation', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='items', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='larceny', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='linguistics', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='lore', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='manipulation', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='martialArts', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='medicine', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='melee', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='merits', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='name', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='occult', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='perception', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='performance', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='presence', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='resistance', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='ride', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='sail', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='socialize', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='stamina', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='stealth', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='strength', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='survival', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='thrown', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='war', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='weaponsMeleeEquipped', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='weaponsRangedEquipped', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='willpower', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='willpowerMax', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='wits', - ), - migrations.AddField( - model_name='characterexaltlunar', - name='charactermortal_ptr', - field=models.OneToOneField(auto_created=True, default=None, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterMortal'), - preserve_default=False, - ), - migrations.AddField( - model_name='characterexaltsolar', - name='charactermortal_ptr', - field=models.OneToOneField(auto_created=True, default=None, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterMortal'), - preserve_default=False, - ), - ] diff --git a/app/migrations/0008_auto_20200411_1653.py b/app/migrations/0008_auto_20200411_1653.py deleted file mode 100644 index 9e0123b..0000000 --- a/app/migrations/0008_auto_20200411_1653.py +++ /dev/null @@ -1,93 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 16:53 - -import app.models -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0007_auto_20200411_1651'), - ] - - operations = [ - migrations.CreateModel( - name='characterBase', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('strength', app.models.DotField(default=0, verbose_name='Strength')), - ('dexterity', app.models.DotField(default=0, verbose_name='Dexterity')), - ('stamina', app.models.DotField(default=0, verbose_name='Stamina')), - ('charisma', app.models.DotField(default=0, verbose_name='Charisma')), - ('manipulation', app.models.DotField(default=0, verbose_name='Manipulation')), - ('appearance', app.models.DotField(default=0, verbose_name='Apperance')), - ('perception', app.models.DotField(default=0, verbose_name='Perception')), - ('intelligence', app.models.DotField(default=0, verbose_name='Intelligence')), - ('wits', app.models.DotField(default=0, verbose_name='Wits')), - ('archery', app.models.DotField(default=0, verbose_name='Archery')), - ('athletics', app.models.DotField(default=0, verbose_name='Athletics')), - ('awareness', app.models.DotField(default=0, verbose_name='Awareness')), - ('brawl', app.models.DotField(default=0, verbose_name='Brawl')), - ('bureaucracy', app.models.DotField(default=0, verbose_name='Bureaucracy')), - ('craft', app.models.DotField(default=0, verbose_name='Craft')), - ('dodge', app.models.DotField(default=0, verbose_name='Dodge')), - ('integrity', app.models.DotField(default=0, verbose_name='Integrity')), - ('investigation', app.models.DotField(default=0, verbose_name='Investigation')), - ('larceny', app.models.DotField(default=0, verbose_name='Larceny')), - ('linguistics', app.models.DotField(default=0, verbose_name='Linguistics')), - ('lore', app.models.DotField(default=0, verbose_name='Lore')), - ('martialArts', app.models.DotField(default=0, verbose_name='MartialArts')), - ('medicine', app.models.DotField(default=0, verbose_name='Medicine')), - ('melee', app.models.DotField(default=0, verbose_name='Melee')), - ('occult', app.models.DotField(default=0, verbose_name='Occult')), - ('performance', app.models.DotField(default=0, verbose_name='Performance')), - ('presence', app.models.DotField(default=0, verbose_name='Presence')), - ('resistance', app.models.DotField(default=0, verbose_name='Resistance')), - ('ride', app.models.DotField(default=0, verbose_name='Ride')), - ('sail', app.models.DotField(default=0, verbose_name='Sail')), - ('socialize', app.models.DotField(default=0, verbose_name='Socialize')), - ('stealth', app.models.DotField(default=0, verbose_name='Stealth')), - ('survival', app.models.DotField(default=0, verbose_name='Survival')), - ('thrown', app.models.DotField(default=0, verbose_name='Thrown')), - ('war', app.models.DotField(default=0, verbose_name='War')), - ('willpowerMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Willpower')), - ('willpower', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Willpower')), - ('experienceTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience')), - ('experience', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience')), - ('health0', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-0' Health Levels")), - ('health1', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-1' Health Levels")), - ('health2', app.models.NamedIntegerField(default=0, help_text=None, verbose_name="'-2' Health Levels")), - ('healthIndex', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Health Track Index')), - ('armorEquipped', app.models.NamedManyToManyField(blank=True, to='app.itemArmor', verbose_name='Armor')), - ('items', app.models.NamedManyToManyField(blank=True, to='app.item', verbose_name='Items')), - ('merits', app.models.NamedManyToManyField(blank=True, to='app.merit', verbose_name='Merits')), - ('weaponsMeleeEquipped', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponMelee', verbose_name='Melee Weapons')), - ('weaponsRangedEquipped', app.models.NamedManyToManyField(blank=True, to='app.itemWeaponRanged', verbose_name='Ranged Weapons')), - ], - ), - migrations.RemoveField( - model_name='characterexaltlunar', - name='charactermortal_ptr', - ), - migrations.RemoveField( - model_name='characterexaltsolar', - name='charactermortal_ptr', - ), - migrations.DeleteModel( - name='characterMortal', - ), - migrations.AddField( - model_name='characterexaltlunar', - name='characterbase_ptr', - field=models.OneToOneField(auto_created=True, default=None, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase'), - preserve_default=False, - ), - migrations.AddField( - model_name='characterexaltsolar', - name='characterbase_ptr', - field=models.OneToOneField(auto_created=True, default=None, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.characterBase'), - preserve_default=False, - ), - ] diff --git a/app/migrations/0009_auto_20200411_1706.py b/app/migrations/0009_auto_20200411_1706.py deleted file mode 100644 index 506d9af..0000000 --- a/app/migrations/0009_auto_20200411_1706.py +++ /dev/null @@ -1,100 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 17:06 - -import app.models -from django.db import migrations -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0008_auto_20200411_1653'), - ] - - operations = [ - migrations.RemoveField( - model_name='characterbase', - name='armorEquipped', - ), - migrations.RemoveField( - model_name='characterbase', - name='items', - ), - migrations.RemoveField( - model_name='characterbase', - name='merits', - ), - migrations.RemoveField( - model_name='characterbase', - name='weaponsMeleeEquipped', - ), - migrations.RemoveField( - model_name='characterbase', - name='weaponsRangedEquipped', - ), - migrations.AddField( - model_name='charm', - name='active', - field=app.models.NamedBooleanField(default=False, verbose_name='Active?'), - ), - migrations.AddField( - model_name='charm', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='intimacyprincipal', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='intimacytie', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='item', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='itemarmor', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='itemarmor', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - migrations.AddField( - model_name='itemweaponmelee', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='itemweaponmelee', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - migrations.AddField( - model_name='itemweaponranged', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='itemweaponranged', - name='equipped', - field=app.models.NamedBooleanField(default=False, verbose_name='Equipped?'), - ), - migrations.AddField( - model_name='merit', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - migrations.AddField( - model_name='speciality', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'), - ), - ] diff --git a/app/migrations/0010_auto_20200411_1711.py b/app/migrations/0010_auto_20200411_1711.py deleted file mode 100644 index eb614de..0000000 --- a/app/migrations/0010_auto_20200411_1711.py +++ /dev/null @@ -1,58 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 17:11 - -import app.models -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0009_auto_20200411_1706'), - ] - - operations = [ - migrations.CreateModel( - name='charmLunar', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')), - ('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Key Level')), - ('active', app.models.NamedBooleanField(default=False, verbose_name='Active?')), - ('attribute', app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Srength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Key Attribute')), - ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')), - ('modifierAbility', app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers')), - ('modifierAttribute', app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers')), - ('modifierStatic', app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers')), - ('rollConfiguration', app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations')), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='charmSolar', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')), - ('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Key Level')), - ('active', app.models.NamedBooleanField(default=False, verbose_name='Active?')), - ('ability', app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Key Ability')), - ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character')), - ('modifierAbility', app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers')), - ('modifierAttribute', app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers')), - ('modifierStatic', app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers')), - ('rollConfiguration', app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations')), - ], - options={ - 'abstract': False, - }, - ), - migrations.DeleteModel( - name='charm', - ), - ] diff --git a/app/migrations/0011_rollconfiguration_name.py b/app/migrations/0011_rollconfiguration_name.py deleted file mode 100644 index 8421003..0000000 --- a/app/migrations/0011_rollconfiguration_name.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 17:14 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0010_auto_20200411_1711'), - ] - - operations = [ - migrations.AddField( - model_name='rollconfiguration', - name='name', - field=app.models.NameField(default='', max_length=100, verbose_name='Name'), - preserve_default=False, - ), - ] diff --git a/app/migrations/0012_rollconfiguration_successesauto.py b/app/migrations/0012_rollconfiguration_successesauto.py deleted file mode 100644 index 7405921..0000000 --- a/app/migrations/0012_rollconfiguration_successesauto.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 17:17 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0011_rollconfiguration_name'), - ] - - operations = [ - migrations.AddField( - model_name='rollconfiguration', - name='successesAuto', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Auto-Successes'), - ), - ] diff --git a/app/migrations/0013_auto_20200411_1727.py b/app/migrations/0013_auto_20200411_1727.py deleted file mode 100644 index f503403..0000000 --- a/app/migrations/0013_auto_20200411_1727.py +++ /dev/null @@ -1,40 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 17:27 - -import app.models -from django.db import migrations -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0012_rollconfiguration_successesauto'), - ] - - operations = [ - migrations.AddField( - model_name='characterexaltlunar', - name='attributeFavored', - field=app.models.MultiChoiceField(blank=True, choices=[('Physical', (('STR', 'Srength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Favoured Attributes'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='abilityFavored', - field=app.models.MultiChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Favoured Abilities'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='abilitySupernal', - field=app.models.SingleChoiceField(blank=True, choices=[('War', (('ARCHERY', 'Archery'), ('ATHLETICS', 'Athletics'), ('AWARENESS', 'Awareness'), ('BRAWL', 'Brawl'), ('DODGE', 'Dodge'), ('INTEGRITY', 'Integrity'), ('MELEE', 'Melee'), ('RESISTANCE', 'Resistance'), ('THROWN', 'Thrown'), ('WAR', 'War'))), ('Life', (('CRAFT', 'Craft'), ('LARCENY', 'Larceny'), ('LINGUISTICS', 'Linguistics'), ('PERFORMANCE', 'Performance'), ('PRESENCE', 'Presence'), ('RIDE', 'Ride'), ('SAIL', 'Sail'), ('SOCIALISE', 'Socialise'), ('STEALTH', 'Stealth'), ('SURVIVAL', 'Survival'))), ('Wisdom', (('BUREAUCRACY', 'Bureaucracy'), ('INVESTIGATION', 'Investigation'), ('LORE', 'Lore'), ('MEDICINE', 'Medicine'), ('OCCULT', 'Occult')))], max_length=100, verbose_name='Supernal Ability'), - ), - migrations.AlterField( - model_name='charmlunar', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character'), - ), - migrations.AlterField( - model_name='charmsolar', - name='character', - field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltSolar', verbose_name='Character'), - ), - ] diff --git a/app/migrations/0014_auto_20200411_1800.py b/app/migrations/0014_auto_20200411_1800.py deleted file mode 100644 index 7aab2d0..0000000 --- a/app/migrations/0014_auto_20200411_1800.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 18:00 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0013_auto_20200411_1727'), - ] - - operations = [ - migrations.RemoveField( - model_name='speciality', - name='ability', - ), - migrations.AddField( - model_name='characterbase', - name='essence', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence'), - ), - migrations.AddField( - model_name='merit', - name='active', - field=app.models.NamedBooleanField(default=False, verbose_name='Active?'), - ), - migrations.AddField( - model_name='speciality', - name='active', - field=app.models.NamedBooleanField(default=False, verbose_name='Active?'), - ), - migrations.AddField( - model_name='speciality', - name='modifierAbility', - field=app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers'), - ), - migrations.AddField( - model_name='speciality', - name='modifierStatic', - field=app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers'), - ), - ] diff --git a/app/migrations/0015_auto_20200411_1844.py b/app/migrations/0015_auto_20200411_1844.py deleted file mode 100644 index 5d982b0..0000000 --- a/app/migrations/0015_auto_20200411_1844.py +++ /dev/null @@ -1,169 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 18:44 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0014_auto_20200411_1800'), - ] - - operations = [ - migrations.RemoveField( - model_name='characterbase', - name='appearance', - ), - migrations.RemoveField( - model_name='characterbase', - name='archery', - ), - migrations.RemoveField( - model_name='characterbase', - name='athletics', - ), - migrations.RemoveField( - model_name='characterbase', - name='awareness', - ), - migrations.RemoveField( - model_name='characterbase', - name='brawl', - ), - migrations.RemoveField( - model_name='characterbase', - name='bureaucracy', - ), - migrations.RemoveField( - model_name='characterbase', - name='charisma', - ), - migrations.RemoveField( - model_name='characterbase', - name='craft', - ), - migrations.RemoveField( - model_name='characterbase', - name='dexterity', - ), - migrations.RemoveField( - model_name='characterbase', - name='dodge', - ), - migrations.RemoveField( - model_name='characterbase', - name='integrity', - ), - migrations.RemoveField( - model_name='characterbase', - name='intelligence', - ), - migrations.RemoveField( - model_name='characterbase', - name='investigation', - ), - migrations.RemoveField( - model_name='characterbase', - name='larceny', - ), - migrations.RemoveField( - model_name='characterbase', - name='linguistics', - ), - migrations.RemoveField( - model_name='characterbase', - name='lore', - ), - migrations.RemoveField( - model_name='characterbase', - name='manipulation', - ), - migrations.RemoveField( - model_name='characterbase', - name='martialArts', - ), - migrations.RemoveField( - model_name='characterbase', - name='medicine', - ), - migrations.RemoveField( - model_name='characterbase', - name='melee', - ), - migrations.RemoveField( - model_name='characterbase', - name='occult', - ), - migrations.RemoveField( - model_name='characterbase', - name='perception', - ), - migrations.RemoveField( - model_name='characterbase', - name='performance', - ), - migrations.RemoveField( - model_name='characterbase', - name='presence', - ), - migrations.RemoveField( - model_name='characterbase', - name='resistance', - ), - migrations.RemoveField( - model_name='characterbase', - name='ride', - ), - migrations.RemoveField( - model_name='characterbase', - name='sail', - ), - migrations.RemoveField( - model_name='characterbase', - name='socialize', - ), - migrations.RemoveField( - model_name='characterbase', - name='stamina', - ), - migrations.RemoveField( - model_name='characterbase', - name='stealth', - ), - migrations.RemoveField( - model_name='characterbase', - name='strength', - ), - migrations.RemoveField( - model_name='characterbase', - name='survival', - ), - migrations.RemoveField( - model_name='characterbase', - name='thrown', - ), - migrations.RemoveField( - model_name='characterbase', - name='war', - ), - migrations.RemoveField( - model_name='characterbase', - name='wits', - ), - migrations.AlterField( - model_name='characterexaltlunar', - name='attributeFavored', - field=app.models.MultiChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Favoured Attributes'), - ), - migrations.AlterField( - model_name='charmlunar', - name='attribute', - field=app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Key Attribute'), - ), - migrations.AlterField( - model_name='modifierattribute', - name='attribute', - field=app.models.SingleChoiceField(blank=True, choices=[('Physical', (('STR', 'Strength'), ('DEX', 'Dexterity'), ('STA', 'Stamina'))), ('Social', (('CHA', 'Charisma'), ('MAN', 'Manipulation'), ('APP', 'Appearance'))), ('Mental', (('PER', 'Perception'), ('INT', 'Intelligence'), ('WIT', 'Wits')))], max_length=100, verbose_name='Attribute'), - ), - ] diff --git a/app/migrations/0016_auto_20200411_1851.py b/app/migrations/0016_auto_20200411_1851.py deleted file mode 100644 index 67cb78c..0000000 --- a/app/migrations/0016_auto_20200411_1851.py +++ /dev/null @@ -1,189 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 18:51 - -import app.models -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0015_auto_20200411_1844'), - ] - - operations = [ - migrations.AddField( - model_name='characterbase', - name='appearance', - field=app.models.DotField(default=0, verbose_name='Apperance'), - ), - migrations.AddField( - model_name='characterbase', - name='archery', - field=app.models.DotField(default=0, verbose_name='Archery'), - ), - migrations.AddField( - model_name='characterbase', - name='athletics', - field=app.models.DotField(default=0, verbose_name='Athletics'), - ), - migrations.AddField( - model_name='characterbase', - name='awareness', - field=app.models.DotField(default=0, verbose_name='Awareness'), - ), - migrations.AddField( - model_name='characterbase', - name='brawl', - field=app.models.DotField(default=0, verbose_name='Brawl'), - ), - migrations.AddField( - model_name='characterbase', - name='bureaucracy', - field=app.models.DotField(default=0, verbose_name='Bureaucracy'), - ), - migrations.AddField( - model_name='characterbase', - name='charisma', - field=app.models.DotField(default=0, verbose_name='Charisma'), - ), - migrations.AddField( - model_name='characterbase', - name='craft', - field=app.models.DotField(default=0, verbose_name='Craft'), - ), - migrations.AddField( - model_name='characterbase', - name='dexterity', - field=app.models.DotField(default=0, verbose_name='Dexterity'), - ), - migrations.AddField( - model_name='characterbase', - name='dodge', - field=app.models.DotField(default=0, verbose_name='Dodge'), - ), - migrations.AddField( - model_name='characterbase', - name='integrity', - field=app.models.DotField(default=0, verbose_name='Integrity'), - ), - migrations.AddField( - model_name='characterbase', - name='intelligence', - field=app.models.DotField(default=0, verbose_name='Intelligence'), - ), - migrations.AddField( - model_name='characterbase', - name='investigation', - field=app.models.DotField(default=0, verbose_name='Investigation'), - ), - migrations.AddField( - model_name='characterbase', - name='larceny', - field=app.models.DotField(default=0, verbose_name='Larceny'), - ), - migrations.AddField( - model_name='characterbase', - name='linguistics', - field=app.models.DotField(default=0, verbose_name='Linguistics'), - ), - migrations.AddField( - model_name='characterbase', - name='lore', - field=app.models.DotField(default=0, verbose_name='Lore'), - ), - migrations.AddField( - model_name='characterbase', - name='manipulation', - field=app.models.DotField(default=0, verbose_name='Manipulation'), - ), - migrations.AddField( - model_name='characterbase', - name='martialArts', - field=app.models.DotField(default=0, verbose_name='MartialArts'), - ), - migrations.AddField( - model_name='characterbase', - name='medicine', - field=app.models.DotField(default=0, verbose_name='Medicine'), - ), - migrations.AddField( - model_name='characterbase', - name='melee', - field=app.models.DotField(default=0, verbose_name='Melee'), - ), - migrations.AddField( - model_name='characterbase', - name='occult', - field=app.models.DotField(default=0, verbose_name='Occult'), - ), - migrations.AddField( - model_name='characterbase', - name='perception', - field=app.models.DotField(default=0, verbose_name='Perception'), - ), - migrations.AddField( - model_name='characterbase', - name='performance', - field=app.models.DotField(default=0, verbose_name='Performance'), - ), - migrations.AddField( - model_name='characterbase', - name='presence', - field=app.models.DotField(default=0, verbose_name='Presence'), - ), - migrations.AddField( - model_name='characterbase', - name='resistance', - field=app.models.DotField(default=0, verbose_name='Resistance'), - ), - migrations.AddField( - model_name='characterbase', - name='ride', - field=app.models.DotField(default=0, verbose_name='Ride'), - ), - migrations.AddField( - model_name='characterbase', - name='sail', - field=app.models.DotField(default=0, verbose_name='Sail'), - ), - migrations.AddField( - model_name='characterbase', - name='socialize', - field=app.models.DotField(default=0, verbose_name='Socialize'), - ), - migrations.AddField( - model_name='characterbase', - name='stamina', - field=app.models.DotField(default=0, verbose_name='Stamina'), - ), - migrations.AddField( - model_name='characterbase', - name='stealth', - field=app.models.DotField(default=0, verbose_name='Stealth'), - ), - migrations.AddField( - model_name='characterbase', - name='strength', - field=app.models.DotField(default=0, verbose_name='Strength'), - ), - migrations.AddField( - model_name='characterbase', - name='survival', - field=app.models.DotField(default=0, verbose_name='Survival'), - ), - migrations.AddField( - model_name='characterbase', - name='thrown', - field=app.models.DotField(default=0, verbose_name='Thrown'), - ), - migrations.AddField( - model_name='characterbase', - name='war', - field=app.models.DotField(default=0, verbose_name='War'), - ), - migrations.AddField( - model_name='characterbase', - name='wits', - field=app.models.DotField(default=0, verbose_name='Wits'), - ), - ] diff --git a/app/migrations/0017_auto_20200411_2228.py b/app/migrations/0017_auto_20200411_2228.py deleted file mode 100644 index b95c425..0000000 --- a/app/migrations/0017_auto_20200411_2228.py +++ /dev/null @@ -1,114 +0,0 @@ -# Generated by Django 3.0.5 on 2020-04-11 22:28 - -import app.models -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('app', '0016_auto_20200411_1851'), - ] - - operations = [ - migrations.AddField( - model_name='characterexaltlunar', - name='experienceExalted', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='experienceExaltedTotal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='limitBreak', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='limitTrigger', - field=models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='motesPeripheral', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='motesPeripheralMax', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='motesPersonal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes'), - ), - migrations.AddField( - model_name='characterexaltlunar', - name='motesPersonalMax', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Personal Motes'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='experienceExalted', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Experience'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='experienceExaltedTotal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Experience'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='limitBreak', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='limitTrigger', - field=models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='motesPeripheral', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='motesPeripheralMax', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='motesPersonal', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes'), - ), - migrations.AddField( - model_name='characterexaltsolar', - name='motesPersonalMax', - field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Personal Motes'), - ), - migrations.CreateModel( - name='charmLunarShape', - fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', app.models.NameField(max_length=100, verbose_name='Name')), - ('levelEssence', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Essence Level')), - ('levelKey', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Key Level')), - ('active', app.models.NamedBooleanField(default=False, verbose_name='Active?')), - ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), - ('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterExaltLunar', verbose_name='Character')), - ('modifierAbility', app.models.NamedManyToManyField(blank=True, to='app.modifierAbility', verbose_name='Abilities Modifiers')), - ('modifierAttribute', app.models.NamedManyToManyField(blank=True, to='app.modifierAttribute', verbose_name='Attribute Modifiers')), - ('modifierStatic', app.models.NamedManyToManyField(blank=True, to='app.modifierStatic', verbose_name='Statics Modifiers')), - ('rollConfiguration', app.models.NamedManyToManyField(blank=True, to='app.rollConfiguration', verbose_name='Roll Configurations')), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/app/migrations/__pycache__/0001_initial.cpython-38.pyc b/app/migrations/__pycache__/0001_initial.cpython-38.pyc index f736ecf9696e898377bebe23e7b3f0f8aa3ad94e..7aa5501e2db81727cb213312cce1ac7201f47d13 100644 GIT binary patch literal 12149 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 MHfxE{cqkG10)%Mx82|tP literal 10488 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 qaSe`l@eB%H$xx&L^k0$2TP9-^e~L<0x6nN zf+<>2LMbd!!aytn#G)zMQDP}f!3>%@i8_o73|uZ*iFxVy3dN}}`{^IGQd@W8GwSPGd%<$<~~{0PKu2$^ZZW diff --git a/exalted/__pycache__/urls.cpython-38.pyc b/exalted/__pycache__/urls.cpython-38.pyc index bf957e77d723c9086e7b0aace99beb9e02aa02e6..4a53c723dd5b5914769f8bb866194ce1dc597890 100644 GIT binary patch literal 433 zcmYjOy-ve05VqsANt?8))QOD=sSL>rR232oObCh6!2`&|R+{4c$aeYZ%FM(Iz{o3k zW#Sc(kT^$BdXn$H?|gUPS-u<$`Uq@q@p83~5&Cds*8(6%aP%A;M;uF3Vv4cDp7csW zNsEc}=SUFl3%u&Ax=$Y9jtE}EH^jRzf4+WNXM!usxx#-}^lHemYN)zI(ou(*4LK;hPZ0G;y_ul`xoX;Z<#^?Fh_df&A`|dWwF@nuAc+3e*)LVJf zr$Ob5U={doJ*q|`T!p^JLK?DQH{MOY1f{<^qT{z-G9fj9vTIUVM$zS)SLjU14KEu_ zELSp$-fbDWYIIc-Ynhhj3RT=#q*Y^?aR~-lg+6fh(WK~HX(W_ph|7)AqJuzn#fV|Z zFqTCK#@5=}WEfLbn3V2_ELE-5jukd7l)y~l$LR^Ss^*2kE*Qi021hThi2y8U2dMvJq3o7vMynFkVVx{ zE=w?>yU$50pqK}LE;?fnP=WHeShh&ernfTN+qEx8>I^@S>|>XmDYs_3u2hM^z{5?k zJLquZB#C}Nt9pswjtLc9!Xk8zf0}e#{5qMoM|lqYk>{(sJta_LHD7D!R', CharacterDetailView.as_view(), name="characterDetailView"), ]