示例#1
0
文件: test.py 项目: cClaude/xppr
 def testFromDict(self):
     """Conversion from dict to string."""
     nu = NodeUrl()
     
     for d,s in self.TEST:
         nu.update(d)
         self.assertEqual(s, str(nu))
示例#2
0
文件: tree.py 项目: cClaude/xppr
    def _upload_picture(self):
        """Upload photos to Picasa."""
        tree = Tree()
        userid = tree.userid
        token = tree.token
        client = tree.client
        
        # here user already logged in because action can run only from within
        if token == NOLOGIN:
            return Response(Response.ERROR, self.get_str(30409))

        # select photo to upload
        photo = self.get_user_input('picture', self.get_str(30304), True)
        if photo is None:
            return Response(Response.SUCCESS)

        self.log(self.__class__, "selected path: " + repr(photo))

        # get list of own albums
        result = tree.list_directory(AlbumsOfUser(userid))
        if result.status == Response.ERROR:
            return result
        
        # select album to upload to, or create new
        albums = [n for n in result.nodes if n.get_type() == 'album']
        album_names = ["<%s>" % self.get_str(30500),] + [a.title for a in albums]

        index = self.get_user_input('select', self.get_str(30302), album_names)
        if index == -1:
            return Response(Response.SUCCESS)                
        elif index == 0:
            new = self.get_user_input('string', self.get_str(30303))
            if new is None:
                return Response(Response.SUCCESS)

            try:
                url = NodeUrl(userid=userid)
                album = client.create_album(url.get_url(), new, token=token)
                albumid = album.gphoto_id
            except picasaclient.RequestError, err:
                return Response(Response.ERROR, str(err))
示例#3
0
文件: tree.py 项目: cClaude/xppr
 def __init__(self, action='', node=None):
     NodeUrl.__init__(self, action)
     if node is not None:
         self.set_query(kind=node.get_type())
         self.set_query(**node.get_attrs())
示例#4
0
文件: tree.py 项目: cClaude/xppr
    def _do_get_items(self, n_url, paging, media):
        """Forms the final Picasa API url and gets the feed.
        
        Depending on 'paging' and 'media' parameters:
            - adds paging query parameters;
            - adds media size query parameters;
            - gets the feed from the client and converts it to item list;
            - appends paging buttons to the item list.
        
        """
        # add visibility parameter
        n_url.set_query(access=self.access)
        
        # add paging query parameters if not already included
        if paging:
            if not n_url.get_query('start-index'):
                n_url.set_query(start_index="1")
            if not n_url.get_query('max-results'):
                n_url.set_query(max_results=self.pagesize)
                
        # add media size query parameters
        if media:
            n_url.set_query(imgmax="d", thumbsize=self.thumbsize)

        # get the actual feed and convert it to item list
        t = self.token
        if t == NOLOGIN:
            t = ''
            
        try:
            feed = self.client.get_feed(uri=n_url.get_url(), token=t)
        except picasaclient.RequestError:
            raise
        
        items = self._feed_to_itemlist(feed)
        if not items:
            return []
            
        # add paging buttons
        if paging:
            # crowded_length overrules totalResults if exists
            tr = int(feed.totalResults)
            if hasattr(feed, 'crowded_length') and feed.crowded_length:
                cl = int(feed.crowded_length)
            else:
                cl = sys.maxint

            if cl < tr:
                max_entry = cl
            else:
                max_entry = tr

            start_index = int(feed.startIndex)
            last_index = start_index + len(items) - 1
            items_per_page = int(feed.itemsPerPage)

            # add "prev" button
            if start_index > 1:
                prev_url = NodeUrl(n_url.get_url())
                si = start_index - items_per_page
                if si < 1:
                    si = 1
                prev_url.set_query(max_results=self.pagesize,
                                   start_index=str(si))
                label = self.get_str(30109) % (si, si + int(self.pagesize) - 1)
                previtems = Folder(label, prev_url, THUMBNAIL_PREV)
                items.insert(0, previtems)

            # add "next" button
            if last_index < max_entry:
                next_url = NodeUrl(n_url.get_url())
                next_url.set_query(max_results=self.pagesize,
                                   start_index=str(last_index + 1))
                label = self.get_str(30110) % (last_index + 1,
                                               last_index + int(self.pagesize))
                nextitems = Folder(label, next_url, THUMBNAIL_NEXT)
                items.append(nextitems)

        return items
示例#5
0
文件: tree.py 项目: cClaude/xppr
            try:
                url = NodeUrl(userid=userid)
                album = client.create_album(url.get_url(), new, token=token)
                albumid = album.gphoto_id
            except picasaclient.RequestError, err:
                return Response(Response.ERROR, str(err))
        else:
            albumid = albums[index-1].gid

        # upload photo
        try:
            self.start_progress(self.get_str(30412))
            for i, p in enumerate(photo):
                self.update_progress(int(100.0*i/len(photo)), p)
                url = NodeUrl(userid=userid, albumid=albumid)
                client.insert_photo(url.get_url(), p, token)
        except picasaclient.RequestError, err:
            self.close_progress()
            return Response(Response.ERROR, str(err))

        self.update_progress(100)
        self.close_progress()
        
        return Response(Response.SUCCESS, self.get_str(30408))

    #----------------------------------------------------------------------
    def _show_map(self, n_url):
        """"""
        lat, lon = n_url.get_query('pos').split()