class uchandler(asynchat.async_chat): def __init__(self, sock): asynchat.async_chat.__init__(self, sock) self.ibuffer = [] self.set_terminator('\n') def _false(self): self.push('0') self.close_when_done() def _true(self): self.push('1') self.close_when_done() def collect_incoming_data(self, data): 'Buffer the data' self.ibuffer.append(data) def found_terminator(self): data = ''.join(self.ibuffer) self.ibuffer = [] try: username, repo = data.split(',') repouser, reponame = repo.split('/') except ValueError: return self._false() self.handle_request(username, repouser, reponame) def handle_request(self, username, repouser, reponame): print username, repouser, reponame try: repo = Repo.objects.get(user_username=repouser, name=reponame) user = User.objects.get(username=username) except (Repo.DoesNotExist, User.DoesNotExist): print 'wtf' return self._false() if repo.check_write(user): print 'true' self._true() else: print 'false' self._false()