refactor: Create shared task for post-AN stuff
This commit is contained in:
parent
fef211b2d0
commit
2730ff3f51
@ -2,7 +2,7 @@ from rest_framework.views import APIView
|
|||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from fellchensammlung.models import AdoptionNotice, Animal, Log, TrustLevel
|
from fellchensammlung.models import AdoptionNotice, Animal, Log, TrustLevel
|
||||||
from fellchensammlung.tasks import add_adoption_notice_location
|
from fellchensammlung.tasks import post_adoption_notice_save
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from .serializers import (
|
from .serializers import (
|
||||||
@ -47,7 +47,7 @@ class AdoptionNoticeApiView(APIView):
|
|||||||
adoption_notice = serializer.save(owner=request.user)
|
adoption_notice = serializer.save(owner=request.user)
|
||||||
|
|
||||||
# Add the location
|
# Add the location
|
||||||
add_adoption_notice_location.delay_on_commit(adoption_notice.pk)
|
post_adoption_notice_save.delay_on_commit(adoption_notice.pk)
|
||||||
|
|
||||||
# Only set active when user has trust level moderator or higher
|
# Only set active when user has trust level moderator or higher
|
||||||
if request.user.trust_level >= TrustLevel.MODERATOR:
|
if request.user.trust_level >= TrustLevel.MODERATOR:
|
||||||
|
@ -37,17 +37,14 @@ def task_deactivate_unchecked():
|
|||||||
set_timestamp("task_deactivate_404_adoption_notices")
|
set_timestamp("task_deactivate_404_adoption_notices")
|
||||||
|
|
||||||
|
|
||||||
@celery_app.task(name="commit.add_location")
|
@celery_app.task(name="commit.post_an_save")
|
||||||
def add_adoption_notice_location(pk):
|
def post_adoption_notice_save(pk):
|
||||||
instance = AdoptionNotice.objects.get(pk=pk)
|
instance = AdoptionNotice.objects.get(pk=pk)
|
||||||
Location.add_location_to_object(instance)
|
Location.add_location_to_object(instance)
|
||||||
set_timestamp("add_adoption_notice_location")
|
set_timestamp("add_adoption_notice_location")
|
||||||
|
logging.info(f"Location was added to Adoption notice {pk}")
|
||||||
|
|
||||||
@celery_app.task(name="commit.notify_subscribers")
|
notify_search_subscribers(instance, only_if_active=True)
|
||||||
def notify_subscribers(pk):
|
|
||||||
instance = AdoptionNotice.objects.get(pk=pk)
|
|
||||||
notify_search_subscribers(instance)
|
|
||||||
logging.info(f"Subscribers for AN {pk} have been notified")
|
|
||||||
|
|
||||||
@celery_app.task(name="tools.healthcheck")
|
@celery_app.task(name="tools.healthcheck")
|
||||||
def task_healthcheck():
|
def task_healthcheck():
|
||||||
|
@ -25,7 +25,7 @@ from .tools.geo import GeoAPI
|
|||||||
from .tools.metrics import gather_metrics_data
|
from .tools.metrics import gather_metrics_data
|
||||||
from .tools.admin import clean_locations, get_unchecked_adoption_notices, deactivate_unchecked_adoption_notices, \
|
from .tools.admin import clean_locations, get_unchecked_adoption_notices, deactivate_unchecked_adoption_notices, \
|
||||||
deactivate_404_adoption_notices
|
deactivate_404_adoption_notices
|
||||||
from .tasks import add_adoption_notice_location, notify_subscribers
|
from .tasks import post_adoption_notice_save
|
||||||
from rest_framework.authtoken.models import Token
|
from rest_framework.authtoken.models import Token
|
||||||
|
|
||||||
from .tools.search import Search
|
from .tools.search import Search
|
||||||
@ -212,15 +212,9 @@ def add_adoption_notice(request):
|
|||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
an_instance = form.save(commit=False)
|
an_instance = form.save(commit=False)
|
||||||
an_instance.owner = request.user
|
an_instance.owner = request.user
|
||||||
an_instance.save()
|
|
||||||
|
|
||||||
"""Spin up a task that adds the location"""
|
|
||||||
add_adoption_notice_location.delay_on_commit(an_instance.pk)
|
|
||||||
|
|
||||||
# Set correct status
|
|
||||||
if request.user.trust_level >= TrustLevel.MODERATOR:
|
if request.user.trust_level >= TrustLevel.MODERATOR:
|
||||||
an_instance.set_active()
|
an_instance.set_active()
|
||||||
notify_subscribers.delay_on_commit(an_instance.pk)
|
|
||||||
else:
|
else:
|
||||||
an_instance.set_unchecked()
|
an_instance.set_unchecked()
|
||||||
|
|
||||||
@ -238,6 +232,9 @@ def add_adoption_notice(request):
|
|||||||
Log.objects.create(user=request.user, action="add_adoption_notice",
|
Log.objects.create(user=request.user, action="add_adoption_notice",
|
||||||
text=f"{request.user} hat Vermittlung {an_instance.pk} hinzugefügt")
|
text=f"{request.user} hat Vermittlung {an_instance.pk} hinzugefügt")
|
||||||
|
|
||||||
|
"""Spin up a task that adds the location"""
|
||||||
|
post_adoption_notice_save.delay(an_instance.id)
|
||||||
|
|
||||||
"""Subscriptions"""
|
"""Subscriptions"""
|
||||||
# Automatically subscribe user that created AN to AN
|
# Automatically subscribe user that created AN to AN
|
||||||
Subscriptions.objects.create(owner=request.user, adoption_notice=an_instance)
|
Subscriptions.objects.create(owner=request.user, adoption_notice=an_instance)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user