From dad3dabd832cda8fdb21a26451347185f539a92c Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 20 Mar 2008 21:39:17 +0000 Subject: [PATCH] Support for old custom Profiles in the GUI using the new feeds2disk infrastructure. --- src/libprs500/gui2/main.py | 2 +- src/libprs500/gui2/news.py | 17 +++++++++-------- src/libprs500/web/feeds/main.py | 17 ++++++++++------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/libprs500/gui2/main.py b/src/libprs500/gui2/main.py index 856130f9e5..7a336beb3c 100644 --- a/src/libprs500/gui2/main.py +++ b/src/libprs500/gui2/main.py @@ -623,7 +623,7 @@ class Main(MainWindow, Ui_MainWindow): args.extend(['--username', data['username']]) if data['password']: args.extend(['--password', data['password']]) - args.append(data['title']) + args.append(data['script'] if data['script'] else data['title']) id = self.job_manager.run_conversion_job(self.news_fetched, 'feeds2lrf', args=[args], job_description=_('Fetch news from ')+data['title']) self.conversion_jobs[id] = (pt, 'lrf') diff --git a/src/libprs500/gui2/news.py b/src/libprs500/gui2/news.py index 7fa0b303da..ddc2112bea 100644 --- a/src/libprs500/gui2/news.py +++ b/src/libprs500/gui2/news.py @@ -16,7 +16,7 @@ from PyQt4.QtCore import QObject, SIGNAL, QFile from PyQt4.QtGui import QMenu, QIcon, QDialog, QAction from libprs500.gui2.dialogs.password import PasswordDialog -from libprs500.web.feeds.recipes import titles, get_builtin_recipe +from libprs500.web.feeds.recipes import titles, get_builtin_recipe, compile_recipe class NewsAction(QAction): @@ -60,7 +60,8 @@ class NewsMenu(QMenu): fetch = True if recipe.needs_subscription: - d = PasswordDialog(self, module + ' info dialog', + name = module if module else recipe.title + d = PasswordDialog(self, name + ' info dialog', _('

Please enter your username and password for %s
If you do not have one, please subscribe to get access to the articles.
Click OK to proceed.')%(recipe.title,)) d.exec_() if d.result() == QDialog.Accepted: @@ -68,7 +69,8 @@ class NewsMenu(QMenu): else: fetch = False if fetch: - data = dict(title=recipe.title, username=username, password=password) + data = dict(title=recipe.title, username=username, password=password, + script=getattr(recipe, 'gui_recipe_script', None)) self.emit(SIGNAL('fetch_news(PyQt_PyObject)'), data) def set_custom_feeds(self, feeds): @@ -78,9 +80,9 @@ class CustomNewMenuItem(QAction): def __init__(self, title, script, parent): QAction.__init__(self, QIcon(':/images/user_profile.svg'), title, parent) - self.title = title - self.script = script - + self.title = title + self.recipe = compile_recipe(script) + self.recipe.gui_recipe_script = script class CustomNewsMenu(QMenu): @@ -90,9 +92,8 @@ class CustomNewsMenu(QMenu): self.connect(self, SIGNAL('triggered(QAction*)'), self.launch) def launch(self, action): - profile = action.script self.emit(SIGNAL('start_news_fetch(PyQt_PyObject, PyQt_PyObject)'), - profile, None) + action.recipe, None) def set_feeds(self, feeds): self.clear() diff --git a/src/libprs500/web/feeds/main.py b/src/libprs500/web/feeds/main.py index 2723caa5e4..8624eea91d 100644 --- a/src/libprs500/web/feeds/main.py +++ b/src/libprs500/web/feeds/main.py @@ -1,6 +1,4 @@ -#!/usr/bin/env python -from libprs500.web.feeds.news import BasicNewsRecipe - +#!/usr/bin/env python ## Copyright (C) 2008 Kovid Goyal kovid@kovidgoyal.net ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by @@ -20,8 +18,8 @@ from libprs500.web.feeds.news import BasicNewsRecipe import sys, os, logging from libprs500.web.feeds.recipes import get_builtin_recipe, compile_recipe, titles from libprs500.web.fetch.simple import option_parser as _option_parser -from libprs500.web.feeds.news import Profile2Recipe -from libprs500.ebooks.lrf.web.profiles import DefaultProfile +from libprs500.web.feeds.news import Profile2Recipe, BasicNewsRecipe +from libprs500.ebooks.lrf.web.profiles import DefaultProfile, FullContentProfile def option_parser(usage='''\ @@ -107,7 +105,8 @@ def run_recipe(opts, recipe_arg, parser, notification=None, handler=None): if os.access(recipe_arg, os.R_OK): try: recipe = compile_recipe(open(recipe_arg).read()) - is_profile = DefaultProfile in recipe.__bases__ + is_profile = DefaultProfile in recipe.__bases__ or \ + FullContentProfile in recipe.__bases__ except: import traceback traceback.print_exc() @@ -118,7 +117,8 @@ def run_recipe(opts, recipe_arg, parser, notification=None, handler=None): recipe, is_profile = get_builtin_recipe(recipe_arg) if recipe is None: recipe = compile_recipe(recipe_arg) - is_profile = DefaultProfile in recipe.__bases__ + is_profile = DefaultProfile in recipe.__bases__ or \ + FullContentProfile in recipe.__bases__ if recipe is None: raise RecipeError(recipe_arg+ ' is an invalid recipe') @@ -135,6 +135,9 @@ def run_recipe(opts, recipe_arg, parser, notification=None, handler=None): recipe = Profile2Recipe(recipe, opts, parser, notification) else: recipe = recipe(opts, parser, notification) + print + print recipe + print if not os.path.exists(recipe.output_dir): os.makedirs(recipe.output_dir) recipe.download()