def mark_available(book_copy): ''' Desc: If there is an active reservation awaiting for this copy, let it know. ''' reservations = Reservation.objects.filter(Q_reservation_active, book_copy=book_copy).filter(start_date__lte=utils.today()) if reservations.count() > 0: # TODO: this probably can be done more effectively first_reservation = reservations[0] first_reservation.active_since = utils.today() first_reservation.save() mail.reservation_active(first_reservation)
def confirm_reservation(reservation): ''' Check if reservation can be immediately rented and send appropriate email. ''' preceding_reservations = Reservation.objects.filter(Q_reservation_active|Q(rental__isnull=False, rental__end_date__isnull=True), book_copy=reservation.book_copy, id__lt=reservation.id) if not preceding_reservations and reservation.start_date <= utils.today(): mail.reservation_active(reservation) reservation.active_since = utils.today() reservation.save() else: mail.made_reservation(reservation)
import baseapp.emails as mail for r in Rental.objects.all(): if not r.end_date: if r.reservation.end_date < today( ): # reservation expired: notify reader every day mail.overdued(r) if r.reservation.end_date == after_days( Config().get_int('due_remind_time')): mail.returnal_date_coming( r) # reservation will expire soon: notify reader for r in Reservation.objects.filter(aux.Q_reservation_active): if not r.active_since and aux.is_reservation_rentable(r): # reservation has just become active - notify user r.active_since = today() r.save() mail.reservation_active(r) if r.active_since and r.active_since <= after_days( -1 * Config().get_int('reservation_rush')): # reservation has been active for 'reservation_rush' days, so it expires r.when_cancelled = datetime.now() r.save() mail.reservation_expired(r) # to restore db: first totally clean db, uncompress file: # gunzip backup_2010-10-01.gz # then, from bash restore database # psql -f backup_2010-10-01
from datetime import datetime import baseapp.views_aux as aux import baseapp.emails as mail for r in Rental.objects.all(): if not r.end_date : if r.reservation.end_date < today(): # reservation expired: notify reader every day mail.overdued(r) if r.reservation.end_date == after_days(Config().get_int('due_remind_time')): mail.returnal_date_coming(r) # reservation will expire soon: notify reader for r in Reservation.objects.filter(aux.Q_reservation_active): if not r.active_since and aux.is_reservation_rentable(r): # reservation has just become active - notify user r.active_since = today() r.save() mail.reservation_active(r) if r.active_since and r.active_since <= after_days(-1*Config().get_int('reservation_rush')): # reservation has been active for 'reservation_rush' days, so it expires r.when_cancelled = datetime.now() r.save() mail.reservation_expired(r) # to restore db: first totally clean db, uncompress file: # gunzip backup_2010-10-01.gz # then, from bash restore database # psql -f backup_2010-10-01