Advertisement
urasayanoglu

views.py

Dec 23rd, 2022
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | Source Code | 0 0
  1. from django.shortcuts import render, redirect
  2. from django.contrib.auth.decorators import login_required
  3. from django.http import Http404
  4.  
  5. from .models import Game, Loan
  6. from .forms import GameForm, LoanForm
  7.  
  8. # Create your views here.
  9. def index(request):
  10.     """The home page for Board Game Club."""
  11.     return render(request, 'board_game_club_apps/index.html')
  12.  
  13. @login_required
  14. def games(request):
  15.     """Show all board games."""
  16.     games = Game.objects.filter(owner = request.user).order_by('status')
  17.     context = {'games': games}
  18.     return render(request, 'board_game_club_apps/games.html', context)
  19.  
  20. @login_required
  21. def game(request, game_id):
  22.     """Show information of a board game."""
  23.     game = Game.objects.get(id=game_id)
  24.     if game.status != 'o':
  25.             context = {'game': game}
  26.     return render(request, 'board_game_club_apps/game.html', context)
  27.  
  28. @login_required
  29. def edit_game(request, game_id):
  30.     """Edit an existing board game."""
  31.     game = Game.objects.get(id=game_id)
  32.     # Making sure the game belongs to the current user:
  33.     if game.owner != request.user:
  34.         raise Http404("You are not the owner of the game, you cannot edit.")
  35.     if request.method != 'POST':
  36.         # Initial request, pre-fill form with the current experience.
  37.         form = GameForm(instance=game)
  38.     else:
  39.         # POST data submitted -> process the data.
  40.         form = GameForm(instance=game, data=request.POST )
  41.         if form.is_valid():
  42.             edit_game = form.save(commit=False)
  43.             edit_game.owner = request.user
  44.             edit_game.save()
  45.             return redirect('board_game_club_apps:game', game_id = game.id)
  46.     context = {'game': game, 'form': form}
  47.     return render(request, 'board_game_club_apps/edit_game.html', context)
  48.  
  49. @login_required
  50. def new_game(request):
  51.     """Add a new game."""
  52.     if request.method != 'POST':
  53.         # No data submitted -> create a blank form.
  54.         form = GameForm()
  55.     else:
  56.         # Post data submitted -> process the data.
  57.         form = GameForm(data = request.POST)
  58.         if form.is_valid():
  59.             new_game = form.save(commit=False)
  60.             new_game.owner = request.user
  61.             new_game.save()
  62.             return redirect('board_game_club_apps:games')
  63.     # Display a blank or an invalid form:
  64.     context = {'form': form}
  65.     return render(request, 'board_game_club_apps/new_game.html', context)
  66.  
  67. @login_required
  68. def loanable_games(request):
  69.     """Show all loanable board games."""
  70.     games = Game.objects.order_by('status')
  71.     context = {'games': games}
  72.     return render(request, 'board_game_club_apps/loanable_games.html', context)
  73.  
  74. @login_required
  75. def loanable_game(request, game_id):
  76.     """Show a board game with loan information."""
  77.     game = Game.objects.get(id=game_id)
  78.     loans = game.loan_set.order_by('-loan_date')
  79.     context = {'game': game, 'loans':loans}
  80.     return render(request, 'board_game_club_apps/loanable_game.html', context)
  81.  
  82. @login_required
  83. def new_loan(request):
  84.     """Add a new game."""
  85.     if request.method != 'POST':
  86.         # No data submitted -> create a blank form.
  87.         form = LoanForm()
  88.     else:
  89.         # Post data submitted -> process the data.
  90.         form = LoanForm(data = request.POST)
  91.         if form.is_valid():
  92.             new_loan = form.save(commit=False)
  93.             new_loan.owner = request.user
  94.             new_loan.status_change()
  95.             new_loan.save()
  96.             return redirect('board_game_club_apps:loanable_games')
  97.     # Display a blank or an invalid form:
  98.     context = {'form': form}
  99.     return render(request, 'board_game_club_apps/new_loan.html', context)
  100.  
  101. @login_required
  102. def return_loan(request, loan_id):
  103.     """Return a loaned board game."""
  104.     loan = Loan.objects.get(id=loan_id)
  105.     if loan.owner != request.user:
  106.         raise Http404("You cannot return a game that you didnt loan.")
  107.     if request.method == 'POST':
  108.         loan.return_game()
  109.         loan.delete()
  110.     loans = Loan.objects.filter(owner = request.user).order_by('loan_date')
  111.     context = {'loans': loans}
  112.     return render(request, 'board_game_club_apps/my_loans.html', context)
  113.    
  114. @login_required
  115. def my_loans(request):
  116.     """Show loan informations."""
  117.     loans = Loan.objects.filter(owner = request.user).order_by('loan_date')
  118.     context = {'loans':loans}
  119.     return render(request, 'board_game_club_apps/my_loans.html', context)
Tags: django
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement