Fixes cache of status interact
The CSRF token was being cached which caused submits to fail
This commit is contained in:
@ -1,7 +1,6 @@
|
||||
""" boosts and favs """
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.cache import cache
|
||||
from django.core.cache.utils import make_template_fragment_key
|
||||
from django.db import IntegrityError
|
||||
from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound
|
||||
from django.shortcuts import redirect
|
||||
@ -19,7 +18,7 @@ class Favorite(View):
|
||||
|
||||
def post(self, request, status_id):
|
||||
"""create a like"""
|
||||
clear_cache(request.user.id, status_id)
|
||||
cache.delete(f"fav-{request.user.id}-{status_id}")
|
||||
status = models.Status.objects.get(id=status_id)
|
||||
try:
|
||||
models.Favorite.objects.create(status=status, user=request.user)
|
||||
@ -38,6 +37,7 @@ class Unfavorite(View):
|
||||
|
||||
def post(self, request, status_id):
|
||||
"""unlike a status"""
|
||||
cache.delete(f"fav-{request.user.id}-{status_id}")
|
||||
status = models.Status.objects.get(id=status_id)
|
||||
try:
|
||||
favorite = models.Favorite.objects.get(status=status, user=request.user)
|
||||
@ -46,7 +46,6 @@ class Unfavorite(View):
|
||||
return HttpResponseNotFound()
|
||||
|
||||
favorite.delete()
|
||||
clear_cache(request.user.id, status_id)
|
||||
if is_api_request(request):
|
||||
return HttpResponse()
|
||||
return redirect(request.headers.get("Referer", "/"))
|
||||
@ -58,6 +57,7 @@ class Boost(View):
|
||||
|
||||
def post(self, request, status_id):
|
||||
"""boost a status"""
|
||||
cache.delete(f"boost-{request.user.id}-{status_id}")
|
||||
status = models.Status.objects.get(id=status_id)
|
||||
# is it boostable?
|
||||
if not status.boostable:
|
||||
@ -74,7 +74,6 @@ class Boost(View):
|
||||
privacy=status.privacy,
|
||||
user=request.user,
|
||||
)
|
||||
clear_cache(request.user.id, status_id)
|
||||
if is_api_request(request):
|
||||
return HttpResponse()
|
||||
return redirect(request.headers.get("Referer", "/"))
|
||||
@ -86,19 +85,13 @@ class Unboost(View):
|
||||
|
||||
def post(self, request, status_id):
|
||||
"""boost a status"""
|
||||
cache.delete(f"boost-{request.user.id}-{status_id}")
|
||||
status = models.Status.objects.get(id=status_id)
|
||||
boost = models.Boost.objects.filter(
|
||||
boosted_status=status, user=request.user
|
||||
).first()
|
||||
|
||||
boost.delete()
|
||||
clear_cache(request.user.id, status_id)
|
||||
if is_api_request(request):
|
||||
return HttpResponse()
|
||||
return redirect(request.headers.get("Referer", "/"))
|
||||
|
||||
|
||||
def clear_cache(user_id, status_id):
|
||||
"""clear template cache"""
|
||||
cache_key = make_template_fragment_key("interact", [user_id, status_id])
|
||||
cache.delete(cache_key)
|
||||
|
Reference in New Issue
Block a user