Files
k-boris-website/backlogger/views.py
Boris 80f5335886
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
add sign up process for backlogger
2026-03-31 21:45:29 +03:00

80 lines
2.3 KiB
Python

from django.contrib.auth.decorators import login_required
from django.shortcuts import render, get_object_or_404, redirect
from .models import Item
from .forms import ItemForm, SignupForm
def signup(request):
if request.method == 'POST':
form = SignupForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False
user.save()
return render(request, 'backlogger/signup_pending.html')
else:
form = SignupForm()
return render(request, 'backlogger/signup.html', {'form': form})
SORT_MAP = {
'fav': ['-favorite', 'name'],
'az': ['name'],
'za': ['-name'],
'newest': ['-created_at'],
'oldest': ['created_at'],
'progress': ['-progress_percent'],
}
@login_required
def item_list(request):
category = request.GET.get('category', '')
sort = request.GET.get('sort', 'fav')
items = Item.objects.filter(user=request.user)
if category:
items = items.filter(category=category)
items = items.order_by(*SORT_MAP.get(sort, SORT_MAP['fav']))
return render(request, 'backlogger/list.html', {
'items': items,
'category': category,
'sort': sort,
'categories': Item.CATEGORY_CHOICES,
})
@login_required
def item_add(request):
if request.method == 'POST':
form = ItemForm(request.POST)
if form.is_valid():
item = form.save(commit=False)
item.user = request.user
item.save()
return redirect('backlogger:list')
else:
form = ItemForm()
return render(request, 'backlogger/item_form.html', {'form': form, 'action': 'Add'})
@login_required
def item_edit(request, pk):
item = get_object_or_404(Item, pk=pk, user=request.user)
if request.method == 'POST':
form = ItemForm(request.POST, instance=item)
if form.is_valid():
form.save()
return redirect('backlogger:list')
else:
form = ItemForm(instance=item)
return render(request, 'backlogger/item_form.html', {'form': form, 'action': 'Edit', 'item': item})
@login_required
def item_delete(request, pk):
if request.method == 'POST':
get_object_or_404(Item, pk=pk, user=request.user).delete()
return redirect('backlogger:list')