Here you can find information, how to update your old PyLucid Plugins (from v0.7.x to v0.8.x).
Some things has been changed, but many things works similar.
Examples of changes in a updated plugin:
update the internal pages
All internal pages are now stored into a sub directory named 'internal_pages'.
The django template engine is similar to the jinja engine. But some things works in a other way. First, you can use the update function:
- Install the Plugin
- run 'update to the new django template engine' in the _install section.
- copy&paste the internal pages from the database into your files.
Then you can update in a try-error way. Look at these page:
The best way to change your internal page template: Edit the files and use the 'reinit' function in the Plugin Administration!
- There is no difference between "modules" and "plugins". There are no more "modules". Everything are named "plugins".
- module_manager renamed to plugin_manager
- new filesystem structure:
- The directory "modules" and "builtin_plugins" are merged to "plugins_internal". The old "plugins" directory is renamed to "plugins_external".
In the config file there are a few things changed:
- In the 'internal_page_info' information, the key 'template_engine' deleted. Because we used only the django template engine.
- rename 'module_manager_data' -> 'plugin_manager_data'
- In the meta data thinks like "__important_buildin__" and "__essential_buildin__" removed.
- New config setting: "__can_deinstall__". If this is False, the plugin can't be uninstalled. Default: True.
- response and request object with subobjects changed.
- Plugins should only write to self.response and return None. Other way: return a django httpresponse object (file download)
- write internal pages
- old: self.templates.write("sub_menu", context)
- new: self._render_template("sub_menu", context)
Base class to inherit
PyLucid.system.BaseModule.PyLucidBaseModule -> PyLucid.system.BasePlugin.PyLucidBasePlugin
Now it works like this:
from PyLucid.system.BasePlugin import PyLucidBasePlugin
Many methods are deleted or renamed from this object:
- commandLink(plugin_name, method_name, args=None)
- 'actionLink' renamed to: methodLink(method_name, args=None)
The own PyLucid database wrapper is gone a way. But that not a real problem. The django ORM is great! Please read the documentation about this here:
access to POST, GET data
txt1 = self.request.form["txt1"]
txt1 = self.request.POST["txt1"]
It is recommended to use newforms: http://www.djangoproject.com/documentation/newforms/