def __init__(self, identity, service, accepted = False, rejected = False, waiting = False, sent = False, received = False, targets = False, friends = False): UserResourceBase.__init__(self, identity, service) self.invitationService = IInvitationService(service) self.accepted = accepted self.rejected = rejected self.waiting = waiting self.sent = sent self.received = received self.targets = targets self.friends = friends if(not self.accepted and not self.rejected and not self.waiting): self.putChild("accepted", InvitationsResource(identity, service, True, False, False, sent, received, targets, friends)) self.putChild("rejected", InvitationsResource(identity, service, False, True, False, sent, received, targets, friends)) self.putChild("waiting", InvitationsResource(identity, service, False, False, True, sent, received, targets, friends)) if(not self.sent and not self.received): self.putChild("sent", InvitationsResource(identity, service, accepted, rejected, waiting, True, False, targets, friends)) self.putChild("received", InvitationsResource(identity, service, accepted, rejected, waiting, False, True, targets, friends)) if(not self.targets and not self.friends): self.putChild("targets", InvitationsResource(identity, service, accepted, rejected, waiting, sent, received, True, False)) self.putChild("friends", InvitationsResource(identity, service, accepted, rejected, waiting, sent, received, False, True))
class InvitationsResource(UserResourceBase): implements(interface.IInvitationsResource) def __init__(self, identity, service, accepted = False, rejected = False, waiting = False, sent = False, received = False, targets = False, friends = False): UserResourceBase.__init__(self, identity, service) self.invitationService = IInvitationService(service) self.accepted = accepted self.rejected = rejected self.waiting = waiting self.sent = sent self.received = received self.targets = targets self.friends = friends if(not self.accepted and not self.rejected and not self.waiting): self.putChild("accepted", InvitationsResource(identity, service, True, False, False, sent, received, targets, friends)) self.putChild("rejected", InvitationsResource(identity, service, False, True, False, sent, received, targets, friends)) self.putChild("waiting", InvitationsResource(identity, service, False, False, True, sent, received, targets, friends)) if(not self.sent and not self.received): self.putChild("sent", InvitationsResource(identity, service, accepted, rejected, waiting, True, False, targets, friends)) self.putChild("received", InvitationsResource(identity, service, accepted, rejected, waiting, False, True, targets, friends)) if(not self.targets and not self.friends): self.putChild("targets", InvitationsResource(identity, service, accepted, rejected, waiting, sent, received, True, False)) self.putChild("friends", InvitationsResource(identity, service, accepted, rejected, waiting, sent, received, False, True)) def getChild(self, path, request): return InvitationResource(self.identity, path, self.service) def user_check_GET(self, authUser, user, request): return defer.succeed(authUser.login != "root" and authUser.login != "guest" and authUser.id == user.id) def user_auth_GET(self, authUser, user, request): def get_invitations(_): return self.invitationService.get_invitations(user) def complete(results): return defer.succeed(map(lambda result: { "id" : result.id, "owner" : result.owner.id, "creator" : result.creator.id, "text" : result.text, "type" : result.type, "status" : result.status }, results)) d = defer.Deferred() d.addCallback(get_invitations) d.addCallback(complete) reactor.callLater(0, d.callback, None) return d def user_check_POST(self, authUser, user, request): return defer.succeed(authUser.login != "root" and authUser.login != "guest" and authUser.id != user.id) def user_auth_POST(self, authUser, user, request): def add_invitation(_): return self.invitationService.add_invitation(authUser, user, data) def complete(result): return defer.succeed({ "id" : result.id, "owner" : result.owner.id, "creator" : result.creator.id, "text" : result.text, "type" : result.type, "status" : result.status }) data = json.loads(request.content.read()) d = defer.Deferred() d.addCallback(add_invitation) d.addCallback(complete) reactor.callLater(0, d.callback, None) return d