From 7e4ff4366ba2ea45e405d5bd488901a4a60aac45 Mon Sep 17 00:00:00 2001 From: xAndy Date: Tue, 13 May 2025 00:24:26 +0200 Subject: [PATCH] increase calendar url length, add import action in admin backend --- shiftregister/importer/admin.py | 6 ++++++ .../migrations/0003_alter_calendar_url.py | 18 ++++++++++++++++++ shiftregister/importer/models.py | 9 ++++++++- shiftregister/importer/tasks.py | 3 +-- 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 shiftregister/importer/migrations/0003_alter_calendar_url.py diff --git a/shiftregister/importer/admin.py b/shiftregister/importer/admin.py index 01f1530..669a774 100644 --- a/shiftregister/importer/admin.py +++ b/shiftregister/importer/admin.py @@ -3,6 +3,12 @@ from django.contrib import admin from .models import Calendar +def update_calendar(modeladmin, request, queryset): + for calendar in queryset: + calendar.update() + + @admin.register(Calendar) class CalendarAdmin(admin.ModelAdmin): list_display = ("url", "needs_fallback", "has_errors") + actions = (update_calendar,) diff --git a/shiftregister/importer/migrations/0003_alter_calendar_url.py b/shiftregister/importer/migrations/0003_alter_calendar_url.py new file mode 100644 index 0000000..77f1e44 --- /dev/null +++ b/shiftregister/importer/migrations/0003_alter_calendar_url.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.4 on 2025-05-12 22:16 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("importer", "0002_calendar_needs_fallback"), + ] + + operations = [ + migrations.AlterField( + model_name="calendar", + name="url", + field=models.URLField(max_length=1000, primary_key=True, serialize=False), + ), + ] diff --git a/shiftregister/importer/models.py b/shiftregister/importer/models.py index 2d09c90..8134d43 100644 --- a/shiftregister/importer/models.py +++ b/shiftregister/importer/models.py @@ -4,10 +4,17 @@ from shiftregister.app.models import * class Calendar(models.Model): - url = models.URLField(primary_key=True) + url = models.URLField(primary_key=True, max_length=1000) needs_fallback = models.BooleanField(default=False, editable=True) has_errors = models.BooleanField(default=False, editable=False) + def update(self): + # break circular import + from .importer import import_calendar + + self.has_errors = not import_calendar(self) + self.save() + class Event(Shift): uuid = models.UUIDField(primary_key=True, editable=False) diff --git a/shiftregister/importer/tasks.py b/shiftregister/importer/tasks.py index 948f5fb..32eec41 100644 --- a/shiftregister/importer/tasks.py +++ b/shiftregister/importer/tasks.py @@ -7,5 +7,4 @@ from .models import Calendar @shared_task def import_shifts(): for calendar in Calendar.objects.all(): - calendar.has_errors = not import_calendar(calendar) - calendar.save() + calendar.update()