def get(self, request, **kwargs): #オペレータチェック c = operatorcheck(request) if c is not None: return c return super().get(self, request, **kwargs)
def return_check(request, pk): #オペレータチェック c = operatorcheck(request) if c is not None: return c #bookの取り出し book = Book.objects.filter(id=pk).first() params = {'book': book} return render(request, 'book_rental/return_check.html', params)
def get(self, request, mode=None): #オペレータチェック c = operatorcheck(request) if c is not None: return c if mode == 'all': if 'form_value' in self.request.session: del self.request.session['form_value'] del self.request.session['type'] return super().get(self, request)
def get(self, request): #オペレータユーザ c = operatorcheck(request) if c is not None: return c if 'mode' in request.session: if self.request.session['mode'] == 'operator_mode': operator = Operator.objects.get(id=request.session['id']) name = operator.full_name welcome_word = {'welcome_word': 'ようこそ!オペレータ:' + name + ' 様'} self.params.update(welcome_word) if self.request.session['mode'] == 'user_mode': user = User.objects.get(id=request.session['id']) name = user.full_name welcome_word = {'welcome_word': 'ようこそ!ユーザ:' + name + ' 様'} self.params.update(welcome_word) return render(request, 'book_manager/index.html', self.params)
def isbnSearch(request): c = operatorcheck(request) if c is not None: return c if (request.method == 'POST'): isbn = request.POST['isbnsearch'] if isbn == "": messages.error(request, 'ISBN番号が未入力です') return redirect('isbnsearch') book_isbn = BookInfo.objects.filter(isbn=isbn) if book_isbn.first() is None: request.session['isbn'] = isbn #return render(request , 'book_manager/bookinfo_create.html' ) return redirect(to='bookinfo_create') else: id = book_isbn.first().id #return render(request , 'book_manager/book_create.html' ) return redirect(to='book_create', pk=id) else: return render(request, 'book_manager/isbnsearch.html')
def book_return(request, pk): #オペレータチェック c = operatorcheck(request) if c is not None: return c #bookの取り出し book = Book.objects.filter(id=pk).first() #貸出本が予約されているか #予約リストの中で一番若いのの取り出し wish = WishBook.objects.filter(bookinfo=book.bookinfo, book__isnull=True, is_active=True).order_by('id').first() if wish is not None: #予約があった場合 wish.book = book wish.save() #確保中にする。 s = Status.objects.get(code=2) book.status = s book.save() else: #予約なかった場合 #貸出可にする。 s = Status.objects.get(code=0) book.status = s book.save() #貸出台帳の返却日に今日の日付を登録 rental = Rental.objects.get(book=book, return_date__isnull=True) rental.return_date = datetime.date.today() rental.save() #返却ユーザーの取り出し(htmlでのリンク用) user = User.objects.get(id=rental.user.id) params = {'user': user} return render(request, 'book_rental/book_return.html', params)
def overdue(request): #オペレータチェック c = operatorcheck(request) if c is not None: return c #延滞者を探す if Rental.objects.filter(return_deadline__lt=datetime.date.today(), return_date=None, user__is_active=True): #10日以上の人 if Rental.objects.filter(return_deadline__lt=datetime.date.today() - datetime.timedelta(10), return_date=None, user__is_active=True): #30日以上の人 if Rental.objects.filter( return_deadline__lt=datetime.date.today() - datetime.timedelta(30), return_date=None, user__is_active=True): #30以上 overde_list = Rental.objects.filter( return_deadline__lt=datetime.date.today() - datetime.timedelta(30), return_date=None, user__is_active=True).order_by('id') overde_list1 = Rental.objects.filter( return_deadline__lt=datetime.date.today() - datetime.timedelta(10), return_deadline__gte=datetime.date.today() - datetime.timedelta(30), return_date=None, user__is_active=True).order_by('id') overde_list2 = Rental.objects.filter( return_deadline__lt=datetime.date.today(), return_deadline__gte=datetime.date.today() - datetime.timedelta(10), return_date=None, user__is_active=True).order_by('id') context = { 'object_list': overde_list, 'object_list1': overde_list1, 'object_list2': overde_list2, } #予約台帳から消す whish = WishBook.objects.all() for i in overde_list: for j in whish: if i.user.id == j.user.id: j.is_active = False j.save() else: continue return render(request, 'book_rental/overdue.html', context) #10日以上の人表示 overde_list1 = Rental.objects.filter( return_deadline__lt=datetime.date.today() - datetime.timedelta(10), return_date=None, user__is_active=True).order_by('id') overde_list2 = Rental.objects.filter( return_deadline__lt=datetime.date.today(), return_deadline__gte=datetime.date.today() - datetime.timedelta(10), return_date=None, user__is_active=True).order_by('id') context = { 'object_list1': overde_list1, 'object_list2': overde_list2, } return render(request, 'book_rental/overdue.html', context) #数日過ぎた人 overde_list2 = Rental.objects.filter( return_deadline__lt=datetime.date.today(), return_date=None, user__is_active=True) context = { 'object_list2': overde_list2, } return render(request, 'book_rental/overdue.html', context) #延滞者なし else: sugita = '延滞者なし' context = {'sugita': sugita} return render(request, 'book_rental/overdue.html', context)
def rental(request, pk): #オペレータチェック c = operatorcheck(request) if c is not None: return c #選択した本の抽出 book = Book.objects.filter(id=pk).first() #会員ID用のフォームの提供 if request.method == 'GET': form = RentalForm() params = {'form': form, 'book': book} return render(request, 'book_rental/rental_check.html', params) #DBの操作 elif request.method == 'POST': #ユーザーが存在するか id = int(request.POST['id']) try: user = User.objects.get(id=id, is_active=True) except: params = {'word':'選択された会員IDのユーザは存在しません'} return render(request, 'book_rental/norental.html', params) #貸し出しが5冊以上かどうか rental_list = Rental.objects.filter(user=user, return_date__isnull=True) if len(rental_list) >= 5: params = {'word':'5冊の貸出本があるため貸し出しできません。'} return render(request, 'book_rental/norental.html', params) #延滞があるか judge = 1 for rent in rental_list: if rent.return_deadline < datetime.date.today(): judge = 0 if judge == 0: params = {'word': '延滞している本があるため貸し出しできません。'} return render(request, 'book_rental/norental.html', params) #貸出中なら(status.code==1) if book.status.code == 1: params = {'word':'選択された本は現在貸出中のため貸し出しできません。'} return render(request, 'book_rental/norental.html', params) #予約中なら(status.code==2) elif book.status.code == 2: #ユーザが予約者かどうか try: wish = WishBook.objects.get(book=book, user=user, is_active=True) wish.is_active = False #wish.book = Null wish.save() except: params = {'word':'選択された本は現在予約されているため貸し出しできません。'} return render(request, 'book_rental/norental.html', params) #貸出可(status.code==0) elif book.status.code == 0: pass #貸出中にする。 s = Status.objects.get(code=1) book.status = s book.save() #旧刊か新刊かで期限設定 passday = (datetime.date.today() - book.bookinfo.publish_date).days if passday < 90:#新刊 deadline = datetime.date.today() + datetime.timedelta(days=10) else:#旧刊 deadline = datetime.date.today() + datetime.timedelta(days=15) rental = Rental(book=book, user=user, rental_date=datetime.date.today(), return_deadline=deadline) rental.save() #完了画面(資料id,タイトル、返却期限) params = {'book': book, 'rental': rental, 'user':user} return render(request, 'book_rental/rental_complete.html', params)