Changeset 1706

Show
Ignore:
Timestamp:
07/23/08 12:46:51 (20 months ago)
Author:
JensDiemer
Message:

Add a set_preferences method. Update unittest and doc.

Location:
trunk/pylucid
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/pylucid/doc/plugin_api.py

    r1700 r1706  
    162162        my_entry_value = preferences["entry_key"] 
    163163 
     164    def change_preference_entry(self): 
     165        """ 
     166        A plugin can change a preference entry with self.set_preferences() 
     167        """ 
     168        new_preference_dict = self.set_preferences("key", "new_value") 
     169 
     170        self.page_msg("Changed value:", new_preference_dict["key"]) 
    164171 
    165172    #__________________________________________________________________________ 
  • trunk/pylucid/PyLucid/models/Plugin.py

    r1699 r1706  
    7676    Adds caching to plugin preference queries. 
    7777    """ 
    78     def get_preferences(self, plugin_name, id=None): 
    79         """ 
    80         returns the preference data dict, use the cache 
    81         """ 
     78    def get_pref_obj(self, plugin_name, id=None): 
    8279        # Get the name of the plugin, if __file__ used 
    8380        plugin_name = os.path.splitext(os.path.basename(plugin_name))[0] 
     
    10299            ) % (id, pref.plugin, plugin) 
    103100 
     101        return pref 
     102 
     103    def get_preferences(self, plugin_name, id=None): 
     104        """ 
     105        returns the preference data dict, use the cache 
     106        """ 
     107        pref = self.get_pref_obj(plugin_name, id) 
    104108        data_dict = pref.get_data() 
    105  
     109        return data_dict 
     110 
     111    def set_preferences(self, plugin_name, key, value, user, id=None): 
     112        """ 
     113        set a new value to one preferences entry 
     114        """ 
     115        pref_obj = self.get_pref_obj(plugin_name, id) 
     116        data_dict = pref_obj.get_data() 
     117        data_dict[key] = value 
     118        pref_obj.set_data(data_dict, user) 
     119        pref_obj.save() 
    106120        return data_dict 
    107121 
  • trunk/pylucid/PyLucid/system/BasePlugin.py

    r1700 r1706  
    6161        self.current_page = self.context["PAGE"] 
    6262 
    63     def get_preferences(self, id = None): 
     63    def get_preferences(self, id=None): 
    6464        """ 
    6565        returns the preferences from the database as a dict 
     
    6767        preference = Plugin.objects.get_preferences(self.plugin_name, id) 
    6868        return preference 
     69 
     70    def set_preferences(self, key, value, id=None): 
     71        """ 
     72        set a new value to one preferences entry 
     73        """ 
     74        user = self.request.user 
     75        data_dict = Plugin.objects.set_preferences( 
     76            self.plugin_name, key, value, user, id 
     77        ) 
     78        return data_dict 
    6979 
    7080    def build_menu(self): 
  • trunk/pylucid/tests/preferences.py

    r1668 r1706  
    182182        pref_obj3 = self.test_plugin.get_preference(id = id) 
    183183        self.assertEqual(pref_obj3.get_data(), TEST_DICT2) 
     184 
     185 
     186    def test_plugin_manager(self): 
     187        """ 
     188        Test Plugin.objects.set_preferences 
     189        """ 
     190        pref_obj1 = self.test_plugin.set_default_preference( 
     191            comment = "default pref", 
     192            data = {"a":1, "b":2}, 
     193            user = None, 
     194        ) 
     195        self.assertEqual(pref_obj1.get_data(), {"a":1, "b":2}) 
     196 
     197        # Test set_preferences 
     198        data_dict = Plugin.objects.set_preferences( 
     199            self.test_plugin.plugin_name, "b", 3, user=None 
     200        ) 
     201        self.assertEqual(data_dict, {"a":1, "b":3}) 
     202 
     203        # Check Plugin.objects.get_preferences 
     204        preference = Plugin.objects.get_preferences( 
     205            self.test_plugin.plugin_name, id=None 
     206        ) 
     207        self.assertEqual(preference, {"a":1, "b":3}) 
    184208 
    185209 
  • trunk/pylucid/tests/unittest_plugin/unittest_plugin.py

    r1668 r1706  
    158158        ) 
    159159 
     160        # Change a preference entry 
     161        new_preference_dict = self.set_preferences('print_index', True) 
     162        assert(new_preference_dict['print_index'], True) 
     163 
     164        # Get the preference from the database again and check 
     165        preferences = self.get_preferences() 
     166        assert(preferences['print_index'], True) 
     167 
    160168        self.response.write("test preferences END") 
    161169