Show
Ignore:
Timestamp:
05/01/08 12:24:21 (23 months ago)
Author:
JensDiemer
Message:

put the plugin preferences into the plugin model.
TODO: update detect_page and set system_settings at install.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pylucid/PyLucid/system/plugin_manager.py

    r1544 r1548  
    3434from django.http import HttpResponse, Http404 
    3535 
    36 from PyLucid.db.preferences import Preferences, preference_cache, \ 
    37                                                         PreferenceDoesntExist 
     36#from PyLucid.db.preferences import Preferences, preference_cache, PreferenceDoesntExist 
    3837from PyLucid.system.plugin_import import get_plugin_module, get_plugin_config 
    3938from PyLucid.system.exceptions import * 
     
    112111    URLs.current_plugin = plugin_name 
    113112 
    114     plugin_module = get_plugin_module(request, plugin.package_name, plugin_name) 
    115  
    116     if plugin_name in preference_cache: 
    117         context.preferences = preference_cache[plugin_name] 
    118     else: 
    119         if hasattr(plugin_module, "PreferencesForm"): 
    120             # Get the preferences dict data from the database 
    121             try: 
    122                 p = Preferences() 
    123                 p.set_plugin(plugin) 
    124                 p.load_from_db() 
    125                 context.preferences = p.data_dict 
    126             except PreferenceDoesntExist, e: 
    127                 error("Can't get preferences: %s" % e) 
    128                 return 
    129         else: 
    130             # plugin has no preferences 
    131             context.preferences = None 
     113    debug = request.user.is_superuser or request.debug 
     114    plugin_module = get_plugin_module(plugin.package_name, plugin_name, debug) 
    132115 
    133116    plugin_class = getattr(plugin_module, plugin_name) 
     117#    print plugin_class, type(plugin_class) 
    134118    class_instance = plugin_class(context, local_response) 
    135119    unbound_method = getattr(class_instance, method_name) 
     
    216200 
    217201 
    218 def _install_plugin(package_name, plugin_name, plugin_config, active, 
     202def _install_plugin(request, package_name, plugin_name, plugin_config, active, 
    219203                                                                extra_verbose): 
    220204    """ 
     
    223207    if extra_verbose: 
    224208        print "Install %s.%s..." % (package_name, plugin_name), 
     209 
    225210    plugin = Plugin.objects.create( 
    226211        package_name = package_name, 
    227212        plugin_name = plugin_name, 
    228         version = plugin_config.__version__, 
    229213        author = plugin_config.__author__, 
    230214        url = plugin_config.__url__, 
    231215        description = plugin_config.__description__, 
    232         long_description = plugin_config.__long_description__, 
    233216        can_deinstall = getattr(plugin_config, "__can_deinstall__", True), 
    234217        active = active, 
    235218    ) 
     219    debug = request.user.is_superuser or request.debug 
     220    plugin_module = get_plugin_module(package_name, plugin_name, debug) 
     221    pref_form = getattr(plugin_module, "PreferencesForm", None) 
     222    if pref_form: 
     223        # plugin module has a preferences newform class 
     224        plugin.init_pref_form(pref_form) 
     225 
     226 
    236227    plugin.save() 
    237228    if extra_verbose: 
     
    239230    return plugin 
    240231 
    241  
    242 def _insert_preferences(request, plugin, package_name, plugin_name): 
    243     """ 
    244     insertet the initial values from the newforms preferences class into the 
    245     database. 
    246     """ 
    247     plugin_module = get_plugin_module(request, package_name, plugin_name) 
    248  
    249     pref_form = getattr(plugin_module, "PreferencesForm", None) 
    250     if pref_form == None: 
    251         # Has no preferences newform class 
    252         return 
    253  
    254     p = Preferences() 
    255     p.set_plugin(plugin) 
    256     p.create_initial(pref_form) 
    257232 
    258233 
     
    280255 
    281256    plugin = _install_plugin( 
    282         package_name, plugin_name, plugin_config, active, extra_verbose 
     257        request, package_name, plugin_name, 
     258        plugin_config, active, extra_verbose 
    283259    ) 
    284     _insert_preferences(request, plugin, package_name, plugin_name) 
    285260 
    286261 
     
    314289            ) 
    315290        except Exception, e: 
    316             print "Error:", e 
     291            print "Error:" 
     292            import traceback 
     293            traceback.print_exc() 
    317294            continue 
    318295