class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'radio' widget_label = _('Radio') view_js = '++resource++eea.facetednavigation.widgets.radio.view.js' edit_js = '++resource++eea.facetednavigation.widgets.radio.edit.js' view_css = '++resource++eea.facetednavigation.widgets.radio.view.css' css_class = 'faceted-radio-widget' index = ViewPageTemplateFile('widget.pt') edit_schema = CountableWidget.edit_schema.copy() + EditSchema def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if not value: return query value = atdx_normalize(value) query[index] = value return query
class ItemsSortWidget(Widget): """ Sort items with custom (multiple) sort orders """ widget_type = "items_sort" widget_label = _("Items sort order") groups = (DefaultSchemata,) index = ViewPageTemplateFile("sort.pt") def query(self, form): """ Sort items by meeting date (desc) and by item number (asc) """ # XXX avoid double sort_on when we selected a meeting # this is not necessary and it some case, produce weird results if "seance" in form: query = { "sort_on": ["sortable_number"], "sort_order": ["ascending"], } else: query = { "sort_on": ["linkedMeetingDate", "sortable_number"], "sort_order": ["descending", "ascending"], } return query
class Widget(CountableWidget): """ Widget """ implements(IAlphabeticWidget) # Widget properties widget_type = 'alphabetic' widget_label = _('Alphabetic') view_js = '++resource++eea.facetednavigation.widgets.alphabets.view.js' edit_js = '++resource++eea.facetednavigation.widgets.alphabets.edit.js' view_css = '++resource++eea.facetednavigation.widgets.alphabets.view.css' edit_css = '++resource++eea.facetednavigation.widgets.alphabets.edit.css' index = ViewPageTemplateFile('widget.pt') edit_schema = CountableWidget.edit_schema.copy() + EditSchema # Widget custom API def getAlphabet(self, lang): """ Get language alphabet """ try: lang = lang.split('-')[0].lower() except Exception, err: logger.exception(err) lang = 'en' return unicode_character_map.get(lang, unicode_character_map.get('en'))
class Widget(AbstractWidget): """ Widget """ # Widget properties widget_type = 'range' widget_label = _('Range') view_js = '++resource++eea.facetednavigation.widgets.range.view.js' edit_js = '++resource++eea.facetednavigation.widgets.range.edit.js' view_css = '++resource++eea.facetednavigation.widgets.range.view.css' edit_css = '++resource++eea.facetednavigation.widgets.range.edit.css' css_class = 'faceted-range-widget' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() + EditSchema @property def default(self): """ Return default """ default = self.data.get('default', '') if not default: return ('', '') default = default.split('=>') if len(default) != 2: return ('', '') start, end = default return (start, end) def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: start, end = self.default else: value = form.get(self.data.getId(), ()) if not value or len(value)!=2: return query start, end = value if not (start and end): return query # let the field be integer if integer: catalog = getToolByName(self.context, 'portal_catalog') evalues = catalog.uniqueValuesFor(index) if True in [isinstance(v, int) for v in evalues]: start, end = int(start), int(end) query[index] = { 'query': (start, end), 'range': 'min:max' } return query
class Widget(AbstractWidget): """ Widget """ # Widget properties widget_type = 'layout' widget_label = _('Layout selection') groups = ( DefaultSchemata, LayoutSchemata, ) index = ViewPageTemplateFile('layout.pt') def __init__(self, *args, **kwargs): super(Widget, self).__init__(*args, **kwargs) self.data.widget_context = self.context def vocabulary(self, **kwargs): voc_factory = getUtility( IVocabularyFactory, name='collective.eeafaceted.layoutwidget.Layouts', ) return [(t.value, t.title) for t in voc_factory(self.context) if t.value in self.data.values]
class Widget(AbstractWidget, L10nDatepicker): """ Simple date Widget specific to events """ widget_type = 'simpledate' widget_label = _('Simple date for events') view_js = '++resource++cpskin.agenda.widgets.simpledate.view.js' edit_js = '++resource++cpskin.agenda.widgets.simpledate.edit.js' view_css = '++resource++cpskin.agenda.widgets.simpledate.view.css' edit_css = '++resource++cpskin.agenda.widgets.simpledate.edit.css' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() @property def default(self): """Return default value""" default = self.data.get('default', '') if not default: return '' default = default.strip() try: default = DateTime( datetime.strptime(default, self.python_date_format)) default = default.strftime(self.python_date_format) except Exception, err: logger.exception('%s => Date: %s', err, default) default = '' return default
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'resultsrange' widget_label = _('Results range') view_js = '++resource++collective.bibliocustomviews.resultsrange.view.js' edit_js = '++resource++collective.bibliocustomviews.resultsrange.edit.js' view_css = '++resource++collective.bibliocustomviews.resultsrange.view.css' index = ViewPageTemplateFile('widget.pt') edit_schema = CountableWidget.edit_schema.copy() + EditSchema edit_schema['title'].default = 'Results range' del edit_schema['sortcountable'] @property def default(self): """ Get default values """ value = self.data.get('default', 0) or 0 if value == ALL_VALUE: return ALL_VALUE try: return int(value) except (TypeError, ValueError), err: logger.exception(err) return ALL_VALUE
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'select' widget_label = _('Select') view_js = '++resource++eea.facetednavigation.widgets.select.view.js' edit_js = '++resource++eea.facetednavigation.widgets.select.edit.js' view_css = '++resource++eea.facetednavigation.widgets.select.view.css' index = ViewPageTemplateFile('widget.pt') edit_schema = CountableWidget.edit_schema.copy() + EditSchema def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if not value: return query if not isinstance(value, unicode): value = value.decode('utf-8') query[index] = value.encode('utf-8') return query
class Widget(AbstractWidget): """ Widget """ widget_type = 'resultsperpage' widget_label = _('Results per page') groups = (DefaultSchemata, LayoutSchemata, DisplaySchemata) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Get default values """ value = self.data.get('default', 0) or 0 try: return int(value) except (TypeError, ValueError) as err: logger.exception(err) return 0 def results_per_page(self, form, default=20): """ Get results per page """ if self.hidden: value = self.default else: value = form.get(self.data.getId(), default) if not value: return default try: value = int(value) except (TypeError, ValueError) as err: logger.exception(err) return default return value def vocabulary(self, **kwargs): """ Vocabulary """ try: start = int(self.data.get('start', 0) or 0) except (TypeError, ValueError) as err: logger.exception(err) start = 0 try: end = int(self.data.get('end', 21)) + 1 except (TypeError, ValueError) as err: logger.exception(err) end = 21 try: step = int(self.data.get('step', 1)) except (TypeError, ValueError) as err: logger.exception(err) step = 1 return [(x, x) for x in range(start, end, step)]
class Widget(AbstractWidget): """ Widget """ widget_type = 'criteria' widget_label = _('Filters') groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt')
class Widget(AbstractWidget): """ Widget """ widget_type = 'etag' widget_label = 'ETag' groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt')
class Widget(AbstractWidget): """ Widget """ widget_type = 'debug' widget_label = _('Debugger') groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt')
class Widget(AbstractWidget): """ Widget """ widget_type = 'range' widget_label = _('Range') groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Return default """ default = self.data.get('default', '') if not default: return ('', '') default = default.split('=>') if len(default) != 2: return ('', '') start, end = default return (start, end) def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: start, end = self.default else: value = form.get(self.data.getId(), ()) if not value or len(value) != 2: return query start, end = value if not (start and end): return query # let the field be integer if integer: catalog = getToolByName(self.context, 'portal_catalog') evalues = catalog.uniqueValuesFor(index) if True in [isinstance(v, int) for v in evalues]: start, end = int(start), int(end) query[index] = { 'query': (start, end), 'range': 'min:max' } return query
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'boolean' widget_label = _('Boolean') groups = (DefaultSchemata, LayoutSchemata, CountableSchemata) index = ViewPageTemplateFile('widget.pt') @property def css_class(self): """ Widget specific css class """ css_type = self.widget_type css_title = normalizer.normalize(self.data.title) return ('faceted-checkboxes-widget ' 'faceted-{0}-widget section-{1}{2}').format( css_type, css_title, self.custom_css) def selected(self): """ Return True if True by default """ return self.default or False def vocabulary(self, **kwargs): """ Vocabulary """ return [(1, 1)] def index_id(self): """ Index """ return self.data.get('index', '').lower() def query(self, form): """ Get value from form and return a catalog dict query """ index = self.data.get('index', '') if six.PY2: index = index.encode('utf-8', 'replace') if not index: return {} if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if value: return {index: True} return {}
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'boolean' widget_label = _('Boolean') view_js = '++resource++eea.facetednavigation.widgets.checkbox.view.js' edit_js = '++resource++eea.facetednavigation.widgets.checkbox.edit.js' view_css = '++resource++eea.facetednavigation.widgets.checkbox.view.css' edit_css = '++resource++eea.facetednavigation.widgets.checkbox.edit.css' edit_schema = BooleanEditSchema index = ViewPageTemplateFile('widget.pt') css_class = "faceted-boolean-widget" @property def default(self): """ Get default values """ return bool(self.data.get('default', None)) def selected(self): """ Return True if True by default """ return self.default or False def vocabulary(self): """ Vocabulary """ return [(1, 1)] def index_id(self): """ Index """ return self.data.get('index', '').lower() def query(self, form): """ Get value from form and return a catalog dict query """ index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return {} if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if value: return {index: True} else: return {}
class Widget(_Widget): widget_type = 'criteria_degree_explorer' #widget_type_css = 'criteria' index = ViewPageTemplateFile('widget.pt') @property def css_class(self): """ Widget specific css class """ css_type = self.widget_type #_css css_title = normalizer.normalize(self.data.title) return 'faceted-{0}-widget section-{1}'.format(css_type, css_title)
class Widget(AbstractWidget): """ Widget """ widget_type = 'etag' widget_label = 'ETag' edit_js = '++resource++eea.facetednavigation.widgets.etag.edit.js' edit_css = '++resource++eea.facetednavigation.widgets.etag.edit.css' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() + EditSchema edit_schema['title'].default = 'ETag' edit_schema['hidden'].default = True edit_schema['hidden'].schemata = 'hidden'
class Widgettaxonomy(Widget): """ Widget """ widget_type = "select" widget_label = _("taxonomy_widget") index = ViewPageTemplateFile("widget.pt") def taxonomy(self): taxonomy = Taxonomy(default_value=self.default or "") for term in self.vocabulary(): taxonomy.add_term(term[0], self.translate(term[1])) return taxonomy
class Widget(AbstractWidget): """ Widget """ # Widget properties widget_type = 'criteria' widget_label = _('Filters') view_js = '++resource++eea.facetednavigation.widgets.criteria.view.js' view_css = '++resource++eea.facetednavigation.widgets.criteria.view.css' edit_css = '++resource++eea.facetednavigation.widgets.criteria.edit.css' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() + EditSchema edit_schema['title'].default = 'Current search' edit_schema['hidecriteriaenabled'].default = True
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'radio' widget_label = _('Radio') groups = (DefaultSchemata, LayoutSchemata, CountableSchemata, DisplaySchemata) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Get default values """ default = super(Widget, self).default or u'' if six.PY2: if isinstance(default, six.text_type): default = default.encode('utf-8') return default def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') if six.PY2: index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if not value: return query catalog = getToolByName(self.context, 'portal_catalog') if index in catalog.Indexes: if catalog.Indexes[index].meta_type == 'BooleanIndex': if value == 'False': value = False elif value == 'True': value = True query[index] = value return query
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'boolean' widget_label = _('Boolean') groups = (DefaultSchemata, LayoutSchemata, CountableSchemata) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Get default values """ return bool(self.data.get('default', None)) def selected(self): """ Return True if True by default """ return self.default or False def vocabulary(self): """ Vocabulary """ return [(1, 1)] def index_id(self): """ Index """ return self.data.get('index', '').lower() def query(self, form): """ Get value from form and return a catalog dict query """ index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return {} if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if value: return {index: True} else: return {}
class Widget(CountableWidget): """ Widget """ widget_type = 'alphabetic' widget_label = _('Alphabetic') groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt') # Widget custom API def getAlphabet(self, lang): """ Get language alphabet """ try: lang = lang.split('-')[0].lower() except Exception as err: logger.exception(err) lang = 'en' return unicode_character_map.get(lang, unicode_character_map.get('en')) def count(self, brains, sequence=None): """ Intersect results """ res = {} lang = self.request.get('LANGUAGE', 'en') sequence = [item[0] for item in self.getAlphabet(lang)] if not sequence: return res index_id = self.data.get('index') if not index_id: return res index = 0 for index, brain in enumerate(brains): xval = getattr(brain, index_id, None) if not xval: continue if not isinstance(xval, (six.binary_type, six.text_type)): continue if isinstance(xval, six.binary_type): xval = xval.decode('utf-8', 'replace') letter = xval[0].upper() count = res.get(letter, 0) res[letter] = count + 1 res['all'] = index + 1 return res
class Widget(AbstractWidget): """ Widget """ # Widget properties widget_type = 'bounds' widget_label = _('Bounds selection') groups = ( DefaultSchemata, LayoutSchemata, ) index = ViewPageTemplateFile('bounds.pt') def __init__(self, context, request, data=None): super(Widget, self).__init__(context, request, data)
class NavigationRootPathWidget(Widget): """ Filter on objects from current navigation root """ widget_type = "navigation_root_path" widget_label = _("Navigation root path") groups = (DefaultSchemata,) index = ViewPageTemplateFile("root_path.pt") def query(self, form): """ Returns only objects from current navigation root """ nav_root = api.portal.get_navigation_root(self.context) path = "/".join(nav_root.getPhysicalPath()) query = {"path": {"query": path}} return query
class Widget(AbstractWidget, L10nDatepicker): """ Widget """ # Widget properties widget_type = 'daterange' widget_label = _('Date range') view_js = '++resource++eea.facetednavigation.widgets.daterange.view.js' edit_js = '++resource++eea.facetednavigation.widgets.daterange.edit.js' view_css = '++resource++eea.facetednavigation.widgets.daterange.view.css' edit_css = '++resource++eea.facetednavigation.widgets.daterange.edit.css' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() + EditSchema @property def default(self): """ Return default """ default = self.data.get('default', '') if not default: return '', '' default = default.split('=>') if len(default) != 2: return '', '' start, end = default start = start.strip() end = end.strip() if not self.use_plone_date_format: start = start.replace('/', '-') end = end.replace('/', '-') try: start = DateTime(datetime.strptime(start, self.python_date_format)) start = start.strftime(self.python_date_format) except Exception, err: logger.exception('%s => Start date: %s', err, start) start = '' try: end = DateTime(datetime.strptime(end, self.python_date_format)) end = end.strftime(self.python_date_format) except Exception, err: logger.exception('%s => End date: %s', err, end) end = ''
class Widget(AbstractWidget): widget_type = 'datepicker' widget_label = _(u'Date Picker') view_js = '++resource++dssweb.theme.unicorn.datepicker.view.js' edit_js = '++resource++dssweb.theme.unicorn.datepicker.edit.js' view_css = '++resource++dssweb.theme.unicorn.datepicker.view.css' index = ViewPageTemplateFile('widget.pt') edit_schema = AbstractWidget.edit_schema.copy() + EditSchema def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: value = self.default else: value = form.get(self.data.getId(), None) if value is None: return query start = ensure_date_format(value) if not start: return query try: start = formated_time(start) except Exception as err: logger.exception(err) return query start = start - 1 start = start.latestTime() query[index] = { 'query': start, 'range': 'min' } return query
class Widget(CountableWidget): """ Widget """ # Widget properties widget_type = 'radio' widget_label = _('Radio') groups = ( DefaultSchemata, LayoutSchemata, CountableSchemata, DisplaySchemata ) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Get default values """ default = super(Widget, self).default or u'' return default.encode('utf-8') def query(self, form): """ Get value from form and return a catalog dict query """ query = {} index = self.data.get('index', '') index = index.encode('utf-8', 'replace') if not index: return query if self.hidden: value = self.default else: value = form.get(self.data.getId(), '') if not value: return query query[index] = value return query
class Widget(AbstractWidget): """ Widget """ widget_type = 'resultsperpage' widget_label = _('Results per page') groups = (DefaultSchemata, LayoutSchemata, DisplaySchemata) index = ViewPageTemplateFile('widget.pt') @property def default(self): """ Get default values """ value = self.data.get('default', 0) or 0 try: return int(value) except (TypeError, ValueError), err: logger.exception(err) return 0
class Widget(CountableWidget): """ Widget """ widget_type = 'alphabetic' widget_label = _('Alphabetic') groups = (DefaultSchemata, LayoutSchemata) index = ViewPageTemplateFile('widget.pt') # Widget custom API def getAlphabet(self, lang): """ Get language alphabet """ try: lang = lang.split('-')[0].lower() except Exception, err: logger.exception(err) lang = 'en' return unicode_character_map.get(lang, unicode_character_map.get('en'))
class SearchPageCheckbox(BaseCheckboxWidget): widget_type = 'searchpagecheckbox' index = ViewPageTemplateFile('searchpagecheckbox.pt') edit_schema = BaseCheckboxWidget.edit_schema.copy() + EditSchema # def __init__(self, context, request, data=None): # self.context = context # self.request = request # self.request.debug = False # self.data = data @property def disable_label(self): return self.data.get('disable_criterion_label', 'disable') @property def enable_label(self): return self.data.get('enable_criterion_label', 'enable')