NewsBlur-viq/apps/categories/views.py

45 lines
1.4 KiB
Python
Raw Normal View History

from apps.categories.models import MCategory
from apps.reader.models import UserSubscriptionFolders
from utils import json_functions as json
from utils.user_functions import ajax_login_required
2024-04-24 09:43:56 -04:00
@json.json_view
def all_categories(request):
categories = MCategory.serialize()
2024-04-24 09:43:56 -04:00
return categories
2024-04-24 09:43:56 -04:00
@ajax_login_required
@json.json_view
def subscribe(request):
user = request.user
categories = MCategory.serialize()
2024-04-24 09:43:56 -04:00
category_titles = [c["title"] for c in categories["categories"]]
subscribe_category_titles = request.POST.getlist("category") or request.POST.getlist("category[]")
invalid_category_title = False
for category_title in subscribe_category_titles:
if category_title not in category_titles:
invalid_category_title = True
2024-04-24 09:43:56 -04:00
if not subscribe_category_titles or invalid_category_title:
2024-04-24 09:43:56 -04:00
message = "Choose one or more of these categories: %s" % ", ".join(category_titles)
return dict(code=-1, message=message)
2024-04-24 09:43:56 -04:00
for category_title in subscribe_category_titles:
MCategory.subscribe(user.pk, category_title)
2024-04-24 09:43:56 -04:00
usf = UserSubscriptionFolders.objects.get(user=user.pk)
2024-04-24 09:43:56 -04:00
return dict(
code=1,
message="Subscribed to %s %s"
% (
len(subscribe_category_titles),
"category" if len(subscribe_category_titles) == 1 else "categories",
),
folders=json.decode(usf.folders),
)