|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
import sqlite3 |
|
|
|
|
|
|
|
|
|
from library import permissions |
|
|
|
|
from library import permissions |
|
|
|
|
from library.exceptions import * |
|
|
|
|
|
|
|
|
|
# because of the way that SQLite works we need to have these two |
|
|
|
|
# files be different, because the Office staff needs read/write |
|
|
|
@ -248,6 +249,13 @@ def getBookCategories(book): |
|
|
|
|
c.close() |
|
|
|
|
return cats |
|
|
|
|
|
|
|
|
|
def isStickered(book): |
|
|
|
|
cats = getBookCategories(book) |
|
|
|
|
for c in cats: |
|
|
|
|
if c['category'] == "Stickered": |
|
|
|
|
return True |
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
@permissions.check_permissions(permissions.PERMISSION_LIBCOM) |
|
|
|
|
def categorizeBook(book, cats): |
|
|
|
|
conn = sqlite3.connect(_catalogue_db_file) |
|
|
|
@ -307,6 +315,9 @@ def deleteCategories(cats): |
|
|
|
|
######################################### |
|
|
|
|
@permissions.check_permissions(permissions.PERMISSION_OFFICE) |
|
|
|
|
def checkout_book(book_id, uwid): |
|
|
|
|
book = get_book(book_id) |
|
|
|
|
if isStickered(book): |
|
|
|
|
raise StickeredError() |
|
|
|
|
conn = sqlite3.connect(_checkout_db_file) |
|
|
|
|
c = conn.cursor() |
|
|
|
|
|
|
|
|
@ -314,12 +325,11 @@ def checkout_book(book_id, uwid): |
|
|
|
|
query = "INSERT INTO " + _checkout_table + " (id, uwid) VALUES (?, ?);" |
|
|
|
|
c.execute(query, (book_id, uwid)) |
|
|
|
|
except sqlite3.IntegrityError: |
|
|
|
|
return False # didn't work |
|
|
|
|
raise CheckoutError() |
|
|
|
|
finally: |
|
|
|
|
conn.commit() |
|
|
|
|
c.close() |
|
|
|
|
|
|
|
|
|
return True # worked |
|
|
|
|
|
|
|
|
|
@permissions.check_permissions(permissions.PERMISSION_OFFICE) |
|
|
|
|
def return_book(book_id): |
|
|
|
|