On Sat, May 23, 2009 at 10:50 AM, Jani Tiainen <rede...@gmail.com> wrote:
> > George Song kirjoitti: > > On 5/23/2009 5:13 AM, Jani Tiainen wrote: > >> I'm designing application (site) that is supposed to rely heavily on > >> pluings. > >> > >> i didn't found much of references how I can create plugin that can > >> provide something useful for my main template. something like: > >> > >> myplugin.py: > >> > >> provide_link = "<a href="{% url myplugin.views.linkaction > %}">MyPlugin</a>" > >> > >> And then in my "core" application template: > >> templates/mycore/mycore.html: > >> > >> {% for plugin in allplugins %}{{ plugin.provide_link }}{% endfor %} > >> > >> Any pointers to such apps or snippets that uses this (or similiar) > >> tehcnique would be appreciated. > > > > Well, if you break down the problem, it really is just two things: > > > > 1. Registry > > 2. Interface > > > > Registry > > ======== > > The registry takes care of the part that when you create a new plugin, > > it should be registered somehow as a plugin. > > > > Django itself is full of this pattern: models, template tags, filters, > > admin sites, databrowse, serialization, etc. You can look to those for > > ideas and inspirations. The most sophisticated being the models which > > relies on a metaclass to do its implicit registration magic. > > This one I've solved by metaclass registration magic. And this was the > easy part of whole plugin system. > > > Interface > > ========= > > This is really internal to the specific plugin domain, so depending on > > your needs, you can enforce it a number of ways: simple documentation of > > the superclass, putting in a stub of NotImplemented, etc. > > > > I believe in duck typing (documentation of the superclass) rather than > explicitly forcing something. > > I'm just searching for reference implementations how to make something > visible in my template. > > -- > Jani Tiainen > > > > I wrote a plugin type application about a year ago: while I don't know that I would use it as is (I certainly haven't worked on it in months) it may be interesting to look at: http://github.com/alex/django-plugins/tree/master Alex -- "I disapprove of what you say, but I will defend to the death your right to say it." --Voltaire "The people's good is the highest law."--Cicero --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---