Exemplo n.º 1
0
    def _fetch_blips(self):
        assert self.auth_token, "auth_token must be set before we can fetch %s blips.  " \
                                "Please set username and password via the admin" % self.__class__.__name__ \

        import getpass

        from gdata.client import Unauthorized
        from gdata.docs.client import DocsClient
        from gdata.gauth import ClientLoginToken

        blips = []

        while True:
            try:
                client = DocsClient(source=self.application_name,
                                    auth_token=ClientLoginToken(
                                        self.auth_token))
                resources = client.GetAllResources()
                break
            except Unauthorized as e:
                msg = None
                for m in ('Token expired', 'Token invalid'):
                    if m in e.message:
                        msg = m
                if not msg:
                    raise e
                print "%s.  Please re-enter password for %s" % (msg,
                                                                self.email)
                self.password = getpass.getpass("Password: "******"We assume there is only one entry for each document currently"
            resource_atom = resource_atom.entries[0]

            revision_feed = client.get_revisions(resource)
            revision_atom = feedparser.parse(revision_feed.ToString())
            for revision in revision_atom.entries:
                timestamp = datetime.datetime.fromtimestamp(
                    time.mktime(revision.updated_parsed)).replace(tzinfo=utc)
                if timestamp > self.last_update:
                    #                    import pdb; pdb.set_trace()
                    blip = Blip()
                    #  some revisions don't have an author, use the document owner in that case
                    blip.who = getattr(revision, 'author',
                                       resource_atom.author)
                    blip.title = resource_atom.title
                    blip.summary = "%(title)s edited" % resource_atom
                    blip.source_url = resource_atom.link
                    blip.timestamp = timestamp

                    blips.append(blip)

        return blips