# HG changeset patch # User Paul Boddie # Date 1414266225 -7200 # Node ID 4e8cbf5e400f6269324b67c0240ae3f8da91f37f # Parent 8bd3079c0122d53ae35d17704dd2d1b11a82d641 Prevented request duplication in the queue; added more comprehensive methods. diff -r 8bd3079c0122 -r 4e8cbf5e400f imip_store.py --- a/imip_store.py Sat Oct 25 19:04:47 2014 +0200 +++ b/imip_store.py Sat Oct 25 21:43:45 2014 +0200 @@ -124,9 +124,40 @@ return True - def queue_request(self, user, uid): + def get_requests(self, user): + + "Get requests for the given 'user'." + + filename = self.get_object_in_store(user, "requests") + if not filename: + return None + + f = open(filename) + try: + return [line.strip() for line in f.readlines()] + finally: + f.close() + + def set_requests(self, user, requests): - "Queue a request for 'user' having the given 'uid'." + "For the given 'user', set the list of queued 'requests'." + + filename = self.get_object_in_store(user, "requests") + if not filename: + return False + + f = open(filename, "w") + try: + for request in requests: + print >>f, request + finally: + f.close() + + return True + + def set_request(self, user, request): + + "For the given 'user', set the queued 'request'." filename = self.get_object_in_store(user, "requests") if not filename: @@ -134,12 +165,23 @@ f = open(filename, "a") try: - print >>f, uid + print >>f, request finally: f.close() return True + def queue_request(self, user, uid): + + "Queue a request for 'user' having the given 'uid'." + + requests = self.get_requests(user) + + if uid not in requests: + return self.set_request(user, uid) + + return False + class FilePublisher(FileBase): "A publisher of objects."