feat: add option to mark a rescue org to be in active communication
That enables to filter them out from a check without forgetting there are to-dos. Most often this will be used when you want to call a rescue org but they can currently not be reached
This commit is contained in:
		@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					# Generated by Django 5.2.1 on 2025-07-13 10:54
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import django.db.models.deletion
 | 
				
			||||||
 | 
					from django.conf import settings
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('fellchensammlung', '0054_alter_notification_comment'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='rescueorganization',
 | 
				
			||||||
 | 
					            name='ongoing_communication',
 | 
				
			||||||
 | 
					            field=models.BooleanField(default=False, help_text='Es findet gerade Kommunikation zwischen Notfellchen und der Organisation statt.', verbose_name='In aktiver Kommunikation'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        migrations.AlterField(
 | 
				
			||||||
 | 
					            model_name='notification',
 | 
				
			||||||
 | 
					            name='user_to_notify',
 | 
				
			||||||
 | 
					            field=models.ForeignKey(help_text='Useraccount der Benachrichtigt wird', on_delete=django.db.models.deletion.CASCADE, related_name='user', to=settings.AUTH_USER_MODEL, verbose_name='Empfänger*in'),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
@@ -151,6 +151,9 @@ class RescueOrganization(models.Model):
 | 
				
			|||||||
    exclude_from_check = models.BooleanField(default=False, verbose_name=_('Von Prüfung ausschließen'),
 | 
					    exclude_from_check = models.BooleanField(default=False, verbose_name=_('Von Prüfung ausschließen'),
 | 
				
			||||||
                                             help_text=_("Organisation von der manuellen Überprüfung ausschließen, "
 | 
					                                             help_text=_("Organisation von der manuellen Überprüfung ausschließen, "
 | 
				
			||||||
                                                         "z.B. weil Tiere nicht online geführt werden"))
 | 
					                                                         "z.B. weil Tiere nicht online geführt werden"))
 | 
				
			||||||
 | 
					    ongoing_communication = models.BooleanField(default=False, verbose_name=_('In aktiver Kommunikation'),
 | 
				
			||||||
 | 
					                                                help_text=_(
 | 
				
			||||||
 | 
					                                                    "Es findet gerade Kommunikation zwischen Notfellchen und der Organisation statt."))
 | 
				
			||||||
    parent_org = models.ForeignKey("RescueOrganization", on_delete=models.PROTECT, blank=True, null=True)
 | 
					    parent_org = models.ForeignKey("RescueOrganization", on_delete=models.PROTECT, blank=True, null=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Meta:
 | 
					    class Meta:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,18 @@
 | 
				
			|||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <hr>
 | 
					    <hr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="block">
 | 
				
			||||||
 | 
					        <h2 class="title is-3">{% translate "In aktiver Kommunikation" %}</h2>
 | 
				
			||||||
 | 
					        <div class="grid is-col-min-15">
 | 
				
			||||||
 | 
					            {% for rescue_org in rescue_orgs_with_ongoing_communication %}
 | 
				
			||||||
 | 
					                <div class="cell">
 | 
				
			||||||
 | 
					                    {% include "fellchensammlung/partials/partial-check-rescue-org.html" %}
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            {% endfor %}
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <hr>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="block">
 | 
					    <div class="block">
 | 
				
			||||||
        <h2 class="title is-3">{% translate "Zuletzt geprüft" %}</h2>
 | 
					        <h2 class="title is-3">{% translate "Zuletzt geprüft" %}</h2>
 | 
				
			||||||
        <div class="grid is-col-min-15">
 | 
					        <div class="grid is-col-min-15">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -803,12 +803,15 @@ def rescue_organization_check(request, context=None):
 | 
				
			|||||||
            if comment_form.is_valid():
 | 
					            if comment_form.is_valid():
 | 
				
			||||||
                comment_form.save()
 | 
					                comment_form.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rescue_orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=False).order_by("last_checked")[:10]
 | 
					    rescue_orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=False, ongoing_communication=False).order_by("last_checked")[:3]
 | 
				
			||||||
 | 
					    rescue_orgs_with_ongoing_communication = RescueOrganization.objects.filter(ongoing_communication=True).order_by("updated_at")
 | 
				
			||||||
 | 
					    rescue_orgs_last_checked = RescueOrganization.objects.filter().order_by("-last_checked")[:10]
 | 
				
			||||||
 | 
					    rescue_orgs_to_comment = rescue_orgs_to_check | rescue_orgs_with_ongoing_communication | rescue_orgs_last_checked
 | 
				
			||||||
    # Prepare a form for each organization
 | 
					    # Prepare a form for each organization
 | 
				
			||||||
    comment_forms = {
 | 
					    comment_forms = {
 | 
				
			||||||
        org.id: RescueOrgInternalComment(instance=org) for org in rescue_orgs_to_check
 | 
					        org.id: RescueOrgInternalComment(instance=org) for org in rescue_orgs_to_comment
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    rescue_orgs_last_checked = RescueOrganization.objects.filter().order_by("-last_checked")[:10]
 | 
					
 | 
				
			||||||
    timeframe = timezone.now().date() - timedelta(days=14)
 | 
					    timeframe = timezone.now().date() - timedelta(days=14)
 | 
				
			||||||
    num_rescue_orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=False).filter(
 | 
					    num_rescue_orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=False).filter(
 | 
				
			||||||
        last_checked__lt=timeframe).count()
 | 
					        last_checked__lt=timeframe).count()
 | 
				
			||||||
@@ -826,6 +829,7 @@ def rescue_organization_check(request, context=None):
 | 
				
			|||||||
    context["num_rescue_orgs_to_check"] = num_rescue_orgs_to_check
 | 
					    context["num_rescue_orgs_to_check"] = num_rescue_orgs_to_check
 | 
				
			||||||
    context["percentage_checked"] = percentage_checked
 | 
					    context["percentage_checked"] = percentage_checked
 | 
				
			||||||
    context["num_rescue_orgs_checked"] = num_rescue_orgs_checked
 | 
					    context["num_rescue_orgs_checked"] = num_rescue_orgs_checked
 | 
				
			||||||
 | 
					    context["rescue_orgs_with_ongoing_communication"] = rescue_orgs_with_ongoing_communication
 | 
				
			||||||
    return render(request, 'fellchensammlung/rescue-organization-check.html', context=context)
 | 
					    return render(request, 'fellchensammlung/rescue-organization-check.html', context=context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user