Commit 5b139c69ea03e31d32a4e300c100124c5213db1e

Authored by Gustavo Jaruga Cruz
2 parents d99d8ebc f2d16bc6

Merge pull request #105 from colab/improve_widget

Refactored widgets to receive **kwargs
colab/widgets/templatetags/widgets_tag.py
@@ -9,6 +9,5 @@ register = template.Library() @@ -9,6 +9,5 @@ register = template.Library()
9 def import_widgets(context, area_id, widget_var=None): 9 def import_widgets(context, area_id, widget_var=None):
10 if not widget_var: 10 if not widget_var:
11 widget_var = "widgets_{}".format(area_id) 11 widget_var = "widgets_{}".format(area_id)
12 - context[widget_var] = WidgetManager.get_widgets(area_id,  
13 - context['request']) 12 + context[widget_var] = WidgetManager.get_widgets(area_id, context=context)
14 return "" 13 return ""
colab/widgets/widget_manager.py
@@ -28,7 +28,7 @@ class Widget(object): @@ -28,7 +28,7 @@ class Widget(object):
28 head = self.content[start + len('<head>'):end] 28 head = self.content[start + len('<head>'):end]
29 return mark_safe(head) 29 return mark_safe(head)
30 30
31 - def generate_content(self, request=None): 31 + def generate_content(self, **kwarg):
32 self.content = '' 32 self.content = ''
33 33
34 34
@@ -50,11 +50,11 @@ class WidgetManager(object): @@ -50,11 +50,11 @@ class WidgetManager(object):
50 WidgetManager.widget_categories[category].remove(widget) 50 WidgetManager.widget_categories[category].remove(widget)
51 51
52 @staticmethod 52 @staticmethod
53 - def get_widgets(category, request=None): 53 + def get_widgets(category, **kargs):
54 if category not in WidgetManager.widget_categories: 54 if category not in WidgetManager.widget_categories:
55 return [] 55 return []
56 56
57 widgets = WidgetManager.widget_categories[category][:] 57 widgets = WidgetManager.widget_categories[category][:]
58 for widget in widgets: 58 for widget in widgets:
59 - widget.generate_content(request) 59 + widget.generate_content(**kargs)
60 return widgets 60 return widgets
docs/source/dev.rst
@@ -43,12 +43,13 @@ Example Widget: @@ -43,12 +43,13 @@ Example Widget:
43 class MyWidget(Widget): 43 class MyWidget(Widget):
44 identifier = 'my_widget_id' 44 identifier = 'my_widget_id'
45 name = 'My Widget' 45 name = 'My Widget'
46 - def generate_content(self, request): 46 + def generate_content(self, **kwargs):
47 # process HTML content 47 # process HTML content
48 self.content = processed_content 48 self.content = processed_content
49 49
50 To add the widget in a view check the Widgets section in User Documentation. 50 To add the widget in a view check the Widgets section in User Documentation.
51 To use a widget in the templates, you have to use the ``import_widget`` tag inside the ``html`` block. 51 To use a widget in the templates, you have to use the ``import_widget`` tag inside the ``html`` block.
  52 +This way, the kwargs parameter will have a ``context`` key from the ``html``.
52 You can also set the variable that the widgets of an area will be imported. 53 You can also set the variable that the widgets of an area will be imported.
53 Or you can use the default name, which is ``widgets_area_name``. 54 Or you can use the default name, which is ``widgets_area_name``.
54 For example, in the ``profile`` area the variable name is ``widgets_profile``. 55 For example, in the ``profile`` area the variable name is ``widgets_profile``.