def add_filter_by_attribute(self, attr, title, data_type, valid_values=None, callback=None, use_having=False): """Add a filter accordingly to the attributes specified :param attr: attribute that will be filtered. This can be either the name of the attribute or the attribute itself. :param title: the title of the filter that will be visible in the interface :param data_type: the attribute type (str, bool, decimal, etc) :param callback: the callback function that will be triggered :param use_having: use having expression in the query """ if data_type is not bool: title += ':' if data_type == datetime.date: filter = DateSearchFilter(title) if valid_values: filter.clear_options() filter.add_custom_options() for opt in valid_values: filter.add_option(opt) filter.select(valid_values[0]) elif (data_type == decimal.Decimal or data_type == int or data_type == currency): filter = NumberSearchFilter(title) if data_type != int: filter.set_digits(2) elif data_type == str: if valid_values: filter = ComboSearchFilter(title, valid_values) else: filter = StringSearchFilter(title) filter.enable_advanced() elif data_type == bool: filter = BoolSearchFilter(title) else: raise NotImplementedError(title, data_type) filter.set_removable() self.add_filter(filter, columns=[attr], callback=callback, use_having=use_having) if data_type is not bool: label = filter.get_title_label() label.set_alignment(1.0, 0.5) self.label_group.add_widget(label) combo = filter.get_mode_combo() if combo: self.combo_group.add_widget(combo) return filter
def search_for_date(self, date): dfilter = DateSearchFilter(_("Expected receival date")) dfilter.set_removable() dfilter.select(data=DateSearchFilter.Type.USER_DAY) self.add_filter(dfilter, columns=["expected_receival_date"]) dfilter.start_date.set_date(date) self.refresh()
def create_filters(self): self.set_text_field_columns(['client_name', 'removed_by', 'identifier_str']) # Date self.date_filter = DateSearchFilter(_('Date:')) self.add_filter(self.date_filter, columns=['expire_date', 'open_date'])
def _setup_widgets(self): # Branches combo items = api.get_branches_for_filter(self.store) self.branch.prefill(items) # Daterange filter self.date_filter = DateSearchFilter(_(u'Date:')) self.date_filter.clear_options() self.date_filter.add_custom_options() for option in [Today, Yesterday, LastWeek, LastMonth]: self.date_filter.add_option(option) self.date_filter.select(position=0) self.daterange_hbox.pack_start(self.date_filter, False, False, 0) self.date_filter.show_all() # Setting report lists' columns self.sales_list.set_columns(self._get_sales_columns()) self.inpayments_list.set_columns(self._get_lonely_payments_columns()) self.purchases_list.set_columns(self._get_purchases_columns()) self.outpayments_list.set_columns(self._get_lonely_payments_columns()) self.return_sales_list.set_columns(self._get_return_sales_columns()) self.supplies_list.set_columns(self._get_till_columns()) self.removals_list.set_columns(self._get_till_columns()) self.permethod_list.set_columns(self._get_permethod_columns()) self.percard_list.set_columns(self._get_percard_columns()) # Print button is insensitive, until the first report is generated self.print_button.set_sensitive(False) self._setup_summary_labels()
def search_for_date(self, date): dfilter = DateSearchFilter(_("Expected receival date")) dfilter.set_removable() dfilter.mode.select_item_by_position(5) self.add_filter(dfilter, columns=["expected_receival_date"]) dfilter.start_date.set_date(date) self.refresh()
def create_filters(self): self.set_text_field_columns(['name']) self.search.set_query(self.executer_query) date_filter = DateSearchFilter(_('Date:')) self.search.add_filter(date_filter) self.date_filter = date_filter
def create_filters(self): self._date_filter = DateSearchFilter(_("Date:")) self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL) self.add_filter(self._date_filter, columns=[Sale.confirm_date]) self.search.set_summary_label('quantity', label=_(u'Total:'), format='<b>%s</b>')
def create_filters(self): self.set_text_field_columns( ['salesperson_name', 'description', 'code']) self._date_filter = DateSearchFilter("Data:") self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM, columns=[Sale.confirm_date])
def search_for_date(self, date): self.main_filter.select(None) dfilter = DateSearchFilter(_("Paid or due date")) dfilter.set_removable() dfilter.mode.select_item_by_position(5) self.add_filter(dfilter, columns=["paid_date", "due_date"]) dfilter.start_date.set_date(date) self.search.refresh()
def create_filters(self): self.set_text_field_columns( ['source_branch_name', 'destination_branch_name']) # Date self.date_filter = DateSearchFilter(_('Date:')) self.add_filter(self.date_filter, columns=['open_date', 'receival_date'])
def search_for_date(self, date): self.main_filter.combo.select(self._not_delivered_filter_item) dfilter = DateSearchFilter(_("Estimated finish")) dfilter.set_removable() dfilter.select(data=DateSearchFilter.Type.USER_DAY) self.add_filter(dfilter, columns=["estimated_finish"]) dfilter.start_date.set_date(date) self.refresh()
def search_for_date(self, date): self.main_filter.select(None) dfilter = DateSearchFilter(_("Paid or due date")) dfilter.set_removable() dfilter.select(data=DateSearchFilter.Type.USER_DAY) self.add_filter(dfilter, columns=["paid_date", "due_date"]) dfilter.start_date.set_date(date) self.refresh()
def create_filters(self): self.set_text_field_columns(['description', 'identifier_str']) self.search.set_query(self.executer_query) # Date date_filter = DateSearchFilter(_('Date:')) date_filter.select(0) columns = [Payment.due_date, Payment.open_date, Payment.paid_date] self.add_filter(date_filter, columns=columns) self.date_filter = date_filter
def create_filters(self): self.set_text_field_columns(['description']) self.date_filter = DateSearchFilter(_('Date:')) self.date_filter.select(Today) self.add_filter(self.date_filter, columns=['date']) # add summary label value_format = '<b>%s</b>' total_label = '<b>%s</b>' % api.escape(_(u'Total:')) self.search.set_summary_label('value', total_label, value_format)
def create_filters(self): # Date date_filter = DateSearchFilter(_('Date:')) date_filter.select(Today) columns = [ ProductHistory.sold_date, ProductHistory.received_date, ProductHistory.production_date, ProductHistory.decreased_date ] self.add_filter(date_filter, columns=columns) self.date_filter = date_filter
def _setup_widgets(self): self.date_filter = DateSearchFilter(_(u'Date:')) # FIXME: add a remove_option method in DateSearchFilter. self.date_filter.clear_options() self.date_filter.add_custom_options() for option in [Today, Yesterday, LastWeek, LastMonth]: self.date_filter.add_option(option) self.date_filter.select(position=0) self.vbox.pack_start(self.date_filter, False, False) self.date_filter.show_all()
def create_filters(self): self.set_text_field_columns(['description', 'message']) self.search.set_query(self.executer_query) # Date date_filter = DateSearchFilter(_("Date:")) self.search.add_filter(date_filter) self.date_filter = date_filter if self._date: date_filter.mode.select_item_by_position(5) date_filter.start_date.set_date(self._date) self.search.refresh()
def create_filters(self): self.set_text_field_columns(['description']) self.search.set_query(self.executer_query) # Date date_filter = DateSearchFilter(_('Date:')) self.search.add_filter(date_filter) self.date_filter = date_filter # Branch branch_filter = self.create_branch_filter(_('In Branch:')) self.add_filter(branch_filter, columns=[]) self.branch_filter = branch_filter
def create_filters(self): # Extra filters (that are not columns) self.search.add_filter_option(SellableCategory.description, title=_(u"Product category"), data_type=str) self.search.add_filter_option(Sellable.description, title=_(u"Product"), data_type=str) # Date date_filter = DateSearchFilter(_('Date:')) date_filter.select(Today) self.add_filter(date_filter, columns=[Sale.confirm_date])
def add_filter_by_column(self, column): """Add a filter accordingly to the column specification :param column: a SearchColumn instance """ title = column.get_search_label() if column.data_type is not bool: title += ':' if column.data_type == datetime.date: filter = DateSearchFilter(title) if column.valid_values: filter.clear_options() filter.add_custom_options() for opt in column.valid_values: filter.add_option(opt) filter.select(column.valid_values[0]) elif (column.data_type == decimal.Decimal or column.data_type == int or column.data_type == currency): filter = NumberSearchFilter(title) if column.data_type != int: filter.set_digits(2) elif column.data_type == str: if column.valid_values: filter = ComboSearchFilter(title, column.valid_values) else: filter = StringSearchFilter(title) filter.enable_advanced() elif column.data_type == bool: filter = BoolSearchFilter(title) else: raise NotImplementedError(title, column.data_type) filter.set_removable() attr = column.search_attribute or column.attribute self.add_filter(filter, columns=[attr], callback=column.search_func, use_having=column.use_having) if column.data_type is not bool: label = filter.get_title_label() label.set_alignment(1.0, 0.5) self.label_group.add_widget(label) combo = filter.get_mode_combo() if combo: self.combo_group.add_widget(combo) return filter
def __init__(self, store): BasicDialog.__init__(self, title=self.title) self.main_label.set_justify(gtk.JUSTIFY_CENTER) self.store = store self.ok_button.set_label(_("Generate")) self.date_filter = DateSearchFilter(_('Month:')) self.date_filter.set_use_date_entries(False) self.date_filter.clear_options() self._populate_date_filter(self.date_filter) self.date_filter.select() self.add(self.date_filter) self.date_filter.show()
def create_filters(self): self.set_text_field_columns(['salesperson_name', 'identifier_str']) self._salesperson_filter = self.create_salesperson_filter(_("Sold by:")) self.add_filter(self._salesperson_filter, SearchFilterPosition.TOP, callback=self._get_salesperson_query) # Adding a filter by date with custom interval self._date_filter = DateSearchFilter(_("Date:")) self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL) if sysparam.get_bool('SALE_PAY_COMMISSION_WHEN_CONFIRMED'): self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM, columns=[self.search_spec.confirm_date]) else: self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM, columns=[self.search_spec.paid_date])
def _add_date_filter(self): self.date_filter = DateSearchFilter(_('Date:')) self.date_filter.clear_options() self.date_filter.add_option(Any, 0) year = datetime.datetime.today().year month_names = get_month_names() for i, month in enumerate(month_names): name = month_names[i] option = type(name + 'Option', (MonthOption, ), {'name': _(name), 'month': i + 1, 'year': year}) self.date_filter.add_option(option, i + 1) self.date_filter.add_custom_options() self.date_filter.mode.select_item_by_position(0) self.search.add_filter(self.date_filter)
def create_filters(self): self.set_text_field_columns(['medic_name', 'description', 'code']) # Dont set a limit here, otherwise it might break the summary executer = self.search.get_query_executer() executer.set_limit(-1) branch_filter = self.create_branch_filter(_('In Branch:')) self.add_filter(branch_filter, SearchFilterPosition.TOP, columns=[Sale.branch_id]) self._date_filter = DateSearchFilter(_("Date:")) self._date_filter.select(data=DateSearchFilter.Type.USER_INTERVAL) self.add_filter(self._date_filter, SearchFilterPosition.BOTTOM, columns=[Sale.confirm_date]) self.search.set_summary_label('total', label=_(u'Total:'), format='<b>%s</b>')
def create_filters(self): self.set_text_field_columns(['description']) self.search.set_query(self.executer_query) # Date date_filter = DateSearchFilter(_('Date:')) date_filter.select(Today) self.add_filter(date_filter) self.date_filter = date_filter # Branch branch_filter = self.create_branch_filter(_('In branch:')) branch_filter.select(None) self.add_filter(branch_filter, columns=[], position=SearchFilterPosition.TOP) self.branch_filter = branch_filter
def create_filters(self): self.set_text_field_columns([ 'source_branch_name', 'destination_branch_name', 'identifier_str' ]) # Date self.date_filter = DateSearchFilter(_('Date:')) self.add_filter(self.date_filter, columns=['open_date', 'finish_date']) # Status self.status_filter = ComboSearchFilter(_('With status:'), self._get_status_options()) self.status_filter.select('pending') executer = self.search.get_query_executer() executer.add_filter_query_callback(self.status_filter, self._get_status_query) self.add_filter(self.status_filter, position=SearchFilterPosition.TOP)
def create_filters(self): self.set_text_field_columns(['description']) # Date date_filter = DateSearchFilter(_('Date:')) date_filter.select(Today) columns = [ProductHistory.sold_date, ProductHistory.received_date, ProductHistory.production_date, ProductHistory.decreased_date] self.add_filter(date_filter, columns=columns) self.date_filter = date_filter # Branch self.branch_filter = self.create_branch_filter(_('In branch:')) self.add_filter(self.branch_filter, columns=['branch'], position=SearchFilterPosition.TOP) # remove 'Any' option from branch_filter self.branch_filter.combo.remove_text(0)
def create_filters(self): self.set_text_field_columns([ 'source_branch_name', 'destination_branch_name', 'identifier_str' ]) # Date self.date_filter = DateSearchFilter(_('Date:')) self.add_filter(self.date_filter, columns=['open_date', 'receival_date']) # Branch self.branch_filter = self.create_branch_filter(_('To branch:')) self.add_filter(self.branch_filter, columns=['destination_branch_id']) # Status statuses = self._get_status_values() self.status_filter = ComboSearchFilter(_('With status:'), statuses) self.status_filter.select(None) self.add_filter(self.status_filter, columns=['status'], position=SearchFilterPosition.TOP)
def _setup_slaves(self): self.search = SearchSlave(self._get_columns(), restore_name=self.__class__.__name__, search_spec=QuotationView, store=self.store) self.attach_slave('search_group_holder', self.search) self.search.set_text_field_columns(['supplier_name', 'identifier_str']) filter = self.search.get_primary_filter() filter.set_label(_(u'Supplier:')) self.search.focus_search_entry() self.search.results.connect('selection-changed', self._on_searchlist__selection_changed) self.search.results.connect('row-activated', self._on_searchlist__row_activated) date_filter = DateSearchFilter(_('Date:')) self.search.add_filter(date_filter, columns=['open_date', 'deadline']) self.edit_button.set_sensitive(False) self.remove_button.set_sensitive(False)
def create_filters(self): self.search.set_query(self.executer_query) date_filter = DateSearchFilter(_('Date:')) self.search.add_filter(date_filter) self.date_filter = date_filter