def send_accept(self): sender = get_object_or_404(ourUser, id=self.owner.id) receiver = get_object_or_404(ourUser, id=self.borrower.id) subject = "tool request accepted" contents = sender.username + " has accepted your request" message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save()
def change_community(self): contents = self.owner.username + " has changed communities. Your reservation has been cancelled, please return the tool." sender = get_object_or_404(ourUser, pk=self.owner.id) receiver = get_object_or_404(ourUser, pk=self.borrower.id) subject = "User Community Change" message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save()
def chain_mail(self, admin, user): contents = admin.username + " has updated your community." sender = get_object_or_404(ourUser,username=admin.username) receiver = get_object_or_404(ourUser, pk=user.id) subject = "Community changes" message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save()
def send_deny(self, content): sender = get_object_or_404(ourUser, id=self.owner.id) receiver = get_object_or_404(ourUser, id=self.borrower.id) subject = "tool request denied" contents = content message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver) message.save()
def admin_change(self,user): self.admin = user self.save() users = ourUser.objects.filter(community=self) for person in users: contents = user.username + " is now the admin of your community." sender = get_object_or_404(ourUser,username=user.username) receiver = get_object_or_404(ourUser, pk=user.id) subject = "admin changes" message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save()
def createMessage(user1=None, user2=None, reservation=None): # create message if user1 is None: user1 = createUserOne() if user2 is None: user2 = createUserTwo() message = Message( date_sent = datetime.datetime.now()-datetime.timedelta(days=1), subject = "Test Message", contents = "This is a test message", sender = user1, receiver = user2) message.save() return message
def upkeep(): while(True): now = datetime.now() tools = Tool.objects.all() for tool in tools: #go through all the tools and then get all reservations associated with those tools reservations = Reservation.objects.filter(is_complete=False, tool=tool, is_active=True, approved=True) if len(reservations) != 0: #this is the case where there is currently an active reservation for a tool for reservation in reservations: if reservation.return_date < now: #if the scheduled return date is less than now if not reservation.message_sent: #if there hasn't already been a notification sent print(now.isoformat(' ') + " sending message to " + tool.borrower.username) contents = "Your reservation has expired. Please return "+ reservation.owner.username +"'s "+ reservation.tool.name +"." sender = get_object_or_404(ourUser, pk=tool.owner.id) receiver = get_object_or_404(ourUser, pk=tool.borrower.id) subject = "Expired Reservation" message = Message( date_sent=datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save() reservation.message_sent = True reservation.save() else: #from here we can assume the tool is not currently being borrowed reservations = Reservation.objects.filter(is_complete=False, tool=tool, approved=True, skipped=False) for reservation in reservations: now = datetime.now() if reservation.borrow_request_date <= now and reservation.return_date >= now: #this is the case where there is no active reservation and this one fits the time slot print(now.isoformat(' ') + " Activating reservation for " + tool.name) reservation.is_active = True reservation.save() tool.borrower = reservation.borrower tool.save() elif reservation.borrow_request_date <= now and reservation.return_date <= now: #this is the case when someone doesn't return their tool on time and a reservation is skipped print(now.isoformat(' ') + " Skipping reservation for " + tool.name) reservation.skipped = True reservation.is_complete = True reservation.save() else: #this is the case where the reservation is still in the future pass time.sleep(7)
def remove(self, res): if self.borrower: return False else: if len(res) != 0: for reservation in res: reservation.skipped = True contents = str(self.owner) + " has deactivated this tool: " sender = get_object_or_404(ourUser, pk=self.owner.id) receiver = get_object_or_404(ourUser, pk=self.borrower.id) subject = self.name + "has been deactivated." message = Message( date_sent=datetime.datetime.now(), subject=subject, contents=contents, sender=sender, receiver=receiver,sent_by_system=True) message.save() reservation.save() self.is_active = False self.save() return True
def return_tool(self): reservation = get_object_or_404(Reservation, tool=self, is_active=True) if self.owner == self.borrower: self.borrower = None self.save() reservation.is_active = False reservation.is_complete = True reservation.returned_on = datetime.datetime.now() reservation.save() else: sender = get_object_or_404(ourUser, pk=reservation.borrower.id) receiver = get_object_or_404(ourUser, pk=reservation.owner.id) subject = "Please provide feed back for " + sender.username + "." message = Message( date_sent=datetime.datetime.now(), subject=subject, contents="temp", sender=sender, receiver=receiver,sent_by_system=True) message.save() contents = self.name + " has been returned to you." + "\n" + "<p><a href='/user/feedBack/" + str(reservation.id) + "/" + str(message.id) + "/'>feed back</a></p>" message.contents = contents message.save() self.borrower = None self.save() reservation.is_active = False reservation.is_complete = True reservation.returned_on = datetime.datetime.now() reservation.save()
def return_from_home(self,stats,mess_id=None): reservation = get_object_or_404(Reservation, tool=self, is_active=True) if stats: self.return_tool() if mess_id != None: message = get_object_or_404(Message,id=mess_id) message.delete_message(self.owner) else: sender = get_object_or_404(ourUser, pk=self.borrower.id) receiver = get_object_or_404(ourUser, pk=self.owner.id) subject = "Your tool has been returned" message = Message( date_sent=datetime.datetime.now(), subject=subject, sender=sender, contents="temp",receiver=receiver,sent_by_system=True) message.save() message.contents = self.name + " has been returned to you. Please confirm that it has been returned." + "\n" + "<p><a href='/toolshare/approveReturn/" + str(reservation.id) + "/" + str(message.id) + "/'>approve</a></p>" message.save() self.borrower = None self.save()