def get(self, request, **kwargs):
        #オペレータチェック
        c = operatorcheck(request)
        if c is not None:
            return c

        return super().get(self, request, **kwargs)
Esempio n. 2
0
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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
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')
Esempio n. 6
0
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)
Esempio n. 7
0
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)
Esempio n. 8
0
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)