def download(self, index=None): print_enter('worknoteBookServer.download') if not index is None: print 'Index:', index from worknoteBookHelpers import parse_index try: index = parse_index(index) if len(index) == 1: index = [index[0] - 1] elif len(index) == 2: index = [index[0] - 1, index[1] - 1] else: raise ValueError('Too many indices') except ValueError, e: return str(e) print 'Parsed index:', index if len(index) == 1: index = index[0] if index < 0 or index > len(self.worknote_list) - 1: return 'Index out of range' return self.__serve_wn(self.worknote_list[index], self.storagedir) elif len(index) == 2: chapter_index, index = index chapter_index -= len(self.worknote_list) if chapter_index < 0 or chapter_index > len(self.chapter_list) - 1: return 'Index out of range' chapter = self.chapter_list[chapter_index] if index < 0 or index > len(self.chapters[chapter]['worknote_list']) - 1: return 'Index out of range' return self.__serve_wn(self.chapters[chapter]['worknote_list'][index], self.chapters[chapter]['chapter_dir'])
def delete(self, index): print_enter('worknoteBookServer.delete') print cherrypy.request.headers from worknoteBookHelpers import parse_index from shutil import rmtree from os.path import join print 'Index:', index try: index = parse_index(index) if len(index) == 1: index = [index[0] - 1] elif len(index) == 2: index = [index[0] - 1, index[1] - 1] else: raise ValueError('Too many indices') except ValueError, e: return str(e)
def download(self, index, workdir, servername=None): from worknoteBookHelpers import unzip_worknote from urllib2 import urlopen, URLError from tempfile import gettempdir from os.path import join from worknoteBookHelpers import parse_index index = parse_index(index)[0:2] if len(index) == 1: index = '{:d}'.format(index[0]) elif len(index) == 2: index = '{:d}:{:d}'.format(index[0], index[1]) tmpfn = join(gettempdir(), 'worknoteBook_download.zip') server_url = 'http://{server:s}/download?index={index:s}'.format(server = self.get_server(servername), index = index) try: server = urlopen(server_url) with open(tmpfn, 'wb') as tmpfile: tmpfile.write(server.read()) except URLError, e: print 'ERROR: Download failed ({:s})'.format(str(e)) return
else: print 'Upload not possible, no login information for this server' request_url = 'http://{:s}/auth/login'.format(self.get_server(servername)) request = Request(request_url) request.add_header('Authorization', auth_header) try: response = urlopen(request) response.read() response.close() except HTTPError, e: print 'ERROR: Delete failed ({:s})'.format(str(e)) return except URLError, e: print 'ERROR: Delete failed ({:s})'.format(str(e)) return index = parse_index(index)[0:2] if len(index) == 1: index = '{:d}'.format(index[0]) elif len(index) == 2: index = '{:d}:{:d}'.format(index[0], index[1]) server_url = 'http://{server:s}/delete?index={index:s}'.format(server = self.get_server(servername), index = index) try: server = urlopen(server_url) response = server.read() except URLError, e: print 'ERROR: Delete failed ({:s})'.format(str(e)) def upload(self, workdir, overwrite=False, servername=None, chapter=''): from urllib2 import Request, urlopen, HTTPError, URLError, HTTPCookieProcessor, build_opener, install_opener from base64 import b64encode