kopia lustrzana https://github.com/jointakahe/takahe
39 wiersze
1.2 KiB
Python
39 wiersze
1.2 KiB
Python
from django.http import HttpRequest
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
from django.utils.decorators import method_decorator
|
|
from django.views.generic import View
|
|
|
|
from activities.models.hashtag import Hashtag
|
|
from users.decorators import identity_required
|
|
|
|
|
|
@method_decorator(identity_required, name="dispatch")
|
|
class HashtagFollow(View):
|
|
"""
|
|
Follows/unfollows a hashtag with the current identity
|
|
"""
|
|
|
|
undo = False
|
|
|
|
def post(self, request: HttpRequest, hashtag):
|
|
hashtag = get_object_or_404(
|
|
Hashtag,
|
|
pk=hashtag,
|
|
)
|
|
follow = None
|
|
if self.undo:
|
|
request.identity.hashtag_follows.filter(hashtag=hashtag).delete()
|
|
else:
|
|
follow = request.identity.hashtag_follows.get_or_create(hashtag=hashtag)
|
|
# Return either a redirect or a HTMX snippet
|
|
if request.htmx:
|
|
return render(
|
|
request,
|
|
"activities/_hashtag_follow.html",
|
|
{
|
|
"hashtag": hashtag,
|
|
"follow": follow,
|
|
},
|
|
)
|
|
return redirect(hashtag.urls.view)
|