def testFromDict(self): """Conversion from dict to string.""" nu = NodeUrl() for d,s in self.TEST: nu.update(d) self.assertEqual(s, str(nu))
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))
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())
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
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()