diff --git a/peachjam/adapters/indigo.py b/peachjam/adapters/indigo.py index 2bb10f800..56a5aeeb6 100644 --- a/peachjam/adapters/indigo.py +++ b/peachjam/adapters/indigo.py @@ -75,7 +75,13 @@ def get_doc_list(self): logger.info(f"Getting document list for {place_code}") url = f"{self.api_url}/akn/{place_code}/.json" while url: - res = self.client_get(url).json() + try: + res = self.client_get(url).json() + except requests.exceptions.HTTPError as e: + if e.response.status_code == 404: + logger.warning(f"Ignoring 404 for {url}") + continue + raise e # ignore bills # TODO: later, make this configurable diff --git a/peachjam/admin.py b/peachjam/admin.py index dafb89467..a8b9eb148 100644 --- a/peachjam/admin.py +++ b/peachjam/admin.py @@ -74,6 +74,7 @@ citations_processor, pj_settings, ) +from peachjam.plugins import plugins from peachjam.resources import ( ArticleResource, AttorneyResource, @@ -821,12 +822,22 @@ class IngestorSettingInline(admin.TabularInline): extra = 3 +class IngestorForm(forms.ModelForm): + adapter = forms.ChoiceField( + choices=lambda: [(y, y) for y in plugins.registry["ingestor-adapter"].keys()] + ) + + class Meta: + model = Ingestor + fields = ("adapter", "name", "last_refreshed_at", "enabled") + + @admin.register(Ingestor) class IngestorAdmin(admin.ModelAdmin): inlines = [IngestorSettingInline] actions = ["refresh_all_content"] - fields = ("adapter", "name", "last_refreshed_at", "enabled") - list_display = ("name", "last_refreshed_at", "enabled") + list_display = ("name", "adapter", "last_refreshed_at", "enabled") + form = IngestorForm def refresh_all_content(self, request, queryset): from peachjam.tasks import run_ingestor diff --git a/peachjam/migrations/0121_alter_ingestorsetting_value.py b/peachjam/migrations/0121_alter_ingestorsetting_value.py new file mode 100644 index 000000000..f6ccb9671 --- /dev/null +++ b/peachjam/migrations/0121_alter_ingestorsetting_value.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.20 on 2024-03-01 08:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("peachjam", "0120_gazette_details"), + ] + + operations = [ + migrations.AlterField( + model_name="ingestorsetting", + name="value", + field=models.CharField( + blank=True, default="", max_length=2048, verbose_name="value" + ), + ), + ]