import json
import sys

event_id = int(sys.argv[1])
target_name = sys.argv[2]

print(f"Creating export for event '{event_id}' as '{target_name}'")

# Load json file just created by django
with open('backups/akplanning_only.json', 'r') as json_file:
    exported_entries = json.load(json_file)
print(f"Loaded {len(exported_entries)} entries in total, restricting to event...")

entries_without_event = 0
entries_out = []
virtual_rooms_to_preserve = set()

# Loop over all dumped entries
for entry in exported_entries:
    # Handle all entries with event reference
    if "event" in entry['fields']:
        event = int(entry['fields']['event'])

        # Does this entry belong to the event we are looking for?
        if event == event_id:
            # Store for backup
            entries_out.append(entry)

            # Remember the primary keys of all rooms of this event
            # Required for special handling of virtual rooms,
            # since they inherit from normal rooms and have no direct event reference
            if entry['model'] == "AKModel.room":
                virtual_rooms_to_preserve.add(entry['pk'])
    # Handle entries without event reference
    else:
        # Backup virtual rooms of that event
        if entry['model'] == "AKOnline.virtualroom":
            if entry['pk'] in virtual_rooms_to_preserve:
                entries_out.append(entry)
        # Backup the event itself
        elif entry['model'] == "AKModel.event":
            if int(entry['pk']) == event_id:
                entries_out.append(entry)
        else:
            # This should normally not happen (all other models should have a reference to the event)
            entries_without_event += 1
            print(entry)

print(f"Ignored entries without event: {entries_without_event}")
print(f"Exporting {len(entries_out)} entries for event")

with open(f'backups/{target_name}.json', 'w') as json_file:
    json.dump(entries_out, json_file, indent=2)