123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- """
- Created on Oct 12, 2013
- @author: Daniel Gaspar
- """
- import logging
- from flask.globals import _request_ctx_stack
- from ._compat import as_unicode
- log = logging.getLogger(__name__)
- class RenderTemplateWidget(object):
- """
- Base template for every widget
- Enables the possibility of rendering a template
- inside a template with run time options
- """
- template = "appbuilder/general/widgets/render.html"
- template_args = None
- def __init__(self, **kwargs):
- self.template_args = kwargs
- def __call__(self, **kwargs):
- ctx = _request_ctx_stack.top
- jinja_env = ctx.app.jinja_env
- template = jinja_env.get_template(self.template)
- args = self.template_args.copy()
- args.update(kwargs)
- return template.render(args)
- class FormWidget(RenderTemplateWidget):
- """
- FormWidget
- form = None
- include_cols = []
- exclude_cols = []
- fieldsets = []
- """
- template = "appbuilder/general/widgets/form.html"
- class FormVerticalWidget(RenderTemplateWidget):
- """
- FormWidget
- form = None
- include_cols = []
- exclude_cols = []
- fieldsets = []
- """
- template = "appbuilder/general/widgets/form_vertical.html"
- class FormHorizontalWidget(RenderTemplateWidget):
- """
- FormWidget
- form = None
- include_cols = []
- exclude_cols = []
- fieldsets = []
- """
- template = "appbuilder/general/widgets/form_horizontal.html"
- class FormInlineWidget(RenderTemplateWidget):
- """
- FormWidget
- form = None
- include_cols = []
- exclude_cols = []
- fieldsets = []
- """
- template = "appbuilder/general/widgets/form_inline.html"
- class GroupFormListWidget(RenderTemplateWidget):
- template = "appbuilder/general/widgets/group_form_list.html"
- class SearchWidget(FormWidget):
- template = "appbuilder/general/widgets/search.html"
- filters = None
- def __init__(self, **kwargs):
- self.filters = kwargs.get("filters")
- return super(SearchWidget, self).__init__(**kwargs)
- def __call__(self, **kwargs):
- """create dict labels based on form"""
- """ create dict of form widgets """
- """ create dict of possible filters """
- """ create list of active filters """
- label_columns = {}
- form_fields = {}
- search_filters = {}
- dict_filters = self.filters.get_search_filters()
- for col in self.template_args["include_cols"]:
- label_columns[col] = as_unicode(self.template_args["form"][col].label.text)
- form_fields[col] = self.template_args["form"][col]()
- search_filters[col] = [as_unicode(flt.name) for flt in dict_filters[col]]
- kwargs["label_columns"] = label_columns
- kwargs["form_fields"] = form_fields
- kwargs["search_filters"] = search_filters
- kwargs["active_filters"] = self.filters.get_filters_values_tojson()
- return super(SearchWidget, self).__call__(**kwargs)
- class ShowWidget(RenderTemplateWidget):
- """
- ShowWidget implements a template as an widget
- it takes the following arguments
- pk = None
- label_columns = []
- include_columns = []
- value_columns = []
- actions = None
- fieldsets = []
- modelview_name = ''
- """
- template = "appbuilder/general/widgets/show.html"
- class ShowBlockWidget(RenderTemplateWidget):
- template = "appbuilder/general/widgets/show_block.html"
- class ShowVerticalWidget(RenderTemplateWidget):
- template = "appbuilder/general/widgets/show_vertical.html"
- class ListWidget(RenderTemplateWidget):
- """
- List Widget implements a Template as an widget.
- It takes the following arguments
- label_columns = []
- include_columns = []
- value_columns = []
- order_columns = []
- page = None
- page_size = None
- count = 0
- pks = []
- actions = None
- filters = {}
- modelview_name = ''
- """
- template = "appbuilder/general/widgets/list.html"
- class ListMasterWidget(ListWidget):
- template = "appbuilder/general/widgets/list_master.html"
- class ListAddWidget(ListWidget):
- template = "appbuilder/general/widgets/list_add.html"
- def __init__(self, **kwargs):
- super(ListAddWidget, self).__init__(**kwargs)
- def __call__(self, **kwargs):
- return super(ListAddWidget, self).__call__(**kwargs)
- class ListThumbnail(ListWidget):
- template = "appbuilder/general/widgets/list_thumbnail.html"
- class ListLinkWidget(ListWidget):
- template = "appbuilder/general/widgets/list_link.html"
- class ListCarousel(ListWidget):
- template = "appbuilder/general/widgets/list_carousel.html"
- class ListItem(ListWidget):
- template = "appbuilder/general/widgets/list_item.html"
- class ListBlock(ListWidget):
- template = "appbuilder/general/widgets/list_block.html"
|