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'),
 | 
			
		||||
                                             help_text=_("Organisation von der manuellen Überprüfung ausschließen, "
 | 
			
		||||
                                                         "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)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
 
 | 
			
		||||
@@ -30,6 +30,18 @@
 | 
			
		||||
    </div>
 | 
			
		||||
    <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">
 | 
			
		||||
        <h2 class="title is-3">{% translate "Zuletzt geprüft" %}</h2>
 | 
			
		||||
        <div class="grid is-col-min-15">
 | 
			
		||||
 
 | 
			
		||||
@@ -803,12 +803,15 @@ def rescue_organization_check(request, context=None):
 | 
			
		||||
            if comment_form.is_valid():
 | 
			
		||||
                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
 | 
			
		||||
    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)
 | 
			
		||||
    num_rescue_orgs_to_check = RescueOrganization.objects.filter(exclude_from_check=False).filter(
 | 
			
		||||
        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["percentage_checked"] = percentage_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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user