mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-22 17:48:09 +00:00
51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
# In your app's migrations folder, create a new migration file
|
|
# e.g., migrations/000X_migrate_channel_group_to_foreign_key.py
|
|
|
|
from django.db import migrations
|
|
|
|
def migrate_channel_group(apps, schema_editor):
|
|
Stream = apps.get_model('dispatcharr_channels', 'Stream')
|
|
ChannelGroup = apps.get_model('dispatcharr_channels', 'ChannelGroup')
|
|
ChannelGroupM3UAccount = apps.get_model('dispatcharr_channels', 'ChannelGroup')
|
|
M3UAccount = apps.get_model('m3u', 'M3UAccount')
|
|
|
|
streams_to_update = []
|
|
for stream in Stream.objects.all():
|
|
# If the stream has a 'channel_group' string, try to find or create the ChannelGroup
|
|
if stream.group_name: # group_name holds the channel group string
|
|
channel_group_name = stream.group_name.strip()
|
|
|
|
# Try to find the ChannelGroup by name
|
|
channel_group, created = ChannelGroup.objects.get_or_create(name=channel_group_name)
|
|
|
|
# Set the foreign key to the found or newly created ChannelGroup
|
|
stream.channel_group = channel_group
|
|
|
|
streams_to_update.append(stream)
|
|
|
|
# If the stream has an M3U account, ensure the M3U account is linked
|
|
if stream.m3u_account:
|
|
ChannelGroupM3UAccount.objects.get_or_create(
|
|
channel_group=channel_group,
|
|
m3u_account=stream.m3u_account,
|
|
enabled=True # Or set it to whatever the default logic is
|
|
)
|
|
|
|
Stream.objects.bulk_update(streams_to_update, ['channel_group'])
|
|
|
|
def reverse_migration(apps, schema_editor):
|
|
# This reverse migration would undo the changes, setting `channel_group` to `None` and clearing any relationships.
|
|
Stream = apps.get_model('yourapp', 'Stream')
|
|
for stream in Stream.objects.all():
|
|
stream.channel_group = None
|
|
stream.save()
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('dispatcharr_channels', '0005_stream_channel_group_stream_last_seen_and_more'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(migrate_channel_group, reverse_code=reverse_migration),
|
|
]
|