mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-24 15:29:36 +02:00
Initial framework for custom categories
This commit is contained in:
parent
c3f37b66d0
commit
4a7f720773
8 changed files with 205 additions and 11 deletions
|
@ -0,0 +1,34 @@
|
|||
# Generated by Django 5.0.8 on 2024-11-14 04:30
|
||||
|
||||
from django.conf import settings
|
||||
import django.db.models.deletion
|
||||
import uuid
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0010_collection_link'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Category',
|
||||
fields=[
|
||||
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
||||
('name', models.CharField(max_length=200)),
|
||||
('display_name', models.CharField(max_length=200)),
|
||||
('icon', models.CharField(default='🌎', max_length=200)),
|
||||
('user_id', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
'verbose_name_plural': 'Categories',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='adventure',
|
||||
name='category',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='adventures.category'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,59 @@
|
|||
from django.db import migrations
|
||||
|
||||
def migrate_categories(apps, schema_editor):
|
||||
# Use the historical models
|
||||
Adventure = apps.get_model('adventures', 'Adventure')
|
||||
Category = apps.get_model('adventures', 'Category')
|
||||
|
||||
ADVENTURE_TYPES = {
|
||||
'general': ('General', '🌍'),
|
||||
'outdoor': ('Outdoor', '🏞️'),
|
||||
'lodging': ('Lodging', '🛌'),
|
||||
'dining': ('Dining', '🍽️'),
|
||||
'activity': ('Activity', '🏄'),
|
||||
'attraction': ('Attraction', '🎢'),
|
||||
'shopping': ('Shopping', '🛍️'),
|
||||
'nightlife': ('Nightlife', '🌃'),
|
||||
'event': ('Event', '🎉'),
|
||||
'transportation': ('Transportation', '🚗'),
|
||||
'culture': ('Culture', '🎭'),
|
||||
'water_sports': ('Water Sports', '🚤'),
|
||||
'hiking': ('Hiking', '🥾'),
|
||||
'wildlife': ('Wildlife', '🦒'),
|
||||
'historical_sites': ('Historical Sites', '🏛️'),
|
||||
'music_concerts': ('Music & Concerts', '🎶'),
|
||||
'fitness': ('Fitness', '🏋️'),
|
||||
'art_museums': ('Art & Museums', '🎨'),
|
||||
'festivals': ('Festivals', '🎪'),
|
||||
'spiritual_journeys': ('Spiritual Journeys', '🧘♀️'),
|
||||
'volunteer_work': ('Volunteer Work', '🤝'),
|
||||
'other': ('Other', '❓'),
|
||||
}
|
||||
|
||||
adventures = Adventure.objects.all()
|
||||
for adventure in adventures:
|
||||
# Access the old 'type' field using __dict__ because it's not in the model anymore
|
||||
old_type = adventure.__dict__.get('type')
|
||||
if old_type in ADVENTURE_TYPES:
|
||||
category, created = Category.objects.get_or_create(
|
||||
name=old_type,
|
||||
user_id=adventure.user_id,
|
||||
defaults={
|
||||
'display_name': ADVENTURE_TYPES[old_type][0],
|
||||
'icon': ADVENTURE_TYPES[old_type][1],
|
||||
}
|
||||
)
|
||||
adventure.category = category
|
||||
adventure.save()
|
||||
else:
|
||||
print(f"Unknown type: {old_type}")
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0011_category_adventure_category'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(migrate_categories),
|
||||
]
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 5.0.8 on 2024-11-14 04:51
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('adventures', '0012_migrate_types_to_categories'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='adventure',
|
||||
name='type',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='adventure',
|
||||
name='category',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='adventures.category'),
|
||||
),
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue