def fillresponse(self): self.fields_desc.initial(self.item) self.read_criteria_from_params() self.fillresponse_add_title() self.fillresponse_search_select() self.fillresponse_search_values() self.fillresponse_show_criteria() row = self.get_max_row() if isinstance(self.filter, Q) and (len(self.filter.children) > 0): self.items = self.model.objects.filter( self.filter) else: self.items = self.model.objects.all() grid = XferCompGrid(self.field_id) grid.set_model(self.items, self.fieldnames, self) grid.add_actions(self, action_list=self.action_grid) grid.set_location(0, row + 4, 4) grid.set_size(200, 500) self.add_component(grid) lbl = XferCompLabelForm("nb") lbl.set_location(0, row + 5, 4) lbl.set_value(_("Total number of %(name)s: %(count)d") % { 'name': self.model._meta.verbose_name_plural, 'count': grid.nb_lines}) self.add_component(lbl) for act_type, title, icon in self.action_list: self.add_action(ActionsManage.get_act_changed( self.model.__name__, act_type, title, icon), {'close': CLOSE_NO}) self.add_action(WrapAction(_('Close'), 'images/close.png'), {})
def fill_grid(self, row, model, field_id, items): grid = XferCompGrid(field_id) if self.multi_page: xfer = self else: xfer = None grid.set_model(items, self.fieldnames, xfer) grid.add_actions(self, action_list=self.action_grid, model=model) grid.set_location(0, row + 1, 2) grid.set_size(200, 500) self.add_component(grid) lbl = XferCompLabelForm("nb_" + field_id) lbl.set_location(0, row + 2, 2) lbl.set_value(_("Total number of %(name)s: %(count)d") % { 'name': model._meta.verbose_name_plural, 'count': grid.nb_lines}) self.add_component(lbl)
def filltab_from_model(self, col, row, readonly, field_names): maxsize_of_lines = self.get_maxsize_of_lines(field_names) for line_field_name in field_names: if not isinstance(line_field_name, tuple): line_field_name = line_field_name, offset = 0 height = 1 for field_name in line_field_name: if field_name is None: continue colspan = self.get_current_offset( maxsize_of_lines, len(line_field_name), offset) if field_name[-4:] == '_set': # field is one-to-many relation child = getattr(self.item, field_name).all() if hasattr(self.item, field_name[:-4] + '_query'): child = child.filter( getattr(self.item, field_name[:-4] + '_query')) lbl = XferCompLabelForm('lbl_' + field_name) lbl.set_location(col + offset, row, 1, 1) lbl.set_value_as_name( child.model._meta.verbose_name) self.add_component(lbl) comp = XferCompGrid(field_name[:-4]) comp.set_model(child, None, self) comp.add_actions(self, model=child.model) comp.set_location(col + 1 + offset, row, colspan, 1) self.add_component(comp) offset += 2 else: if isinstance(field_name, tuple): verbose_name, field_name = field_name else: verbose_name = None dep_field = self.item.get_field_by_name(field_name) # field real in model if (dep_field is None) or not dep_field.auto_created or dep_field.concrete: # field not many-to-many lbl = XferCompLabelForm('lbl_' + field_name) lbl.set_location(col + offset, row, 1, 1) if verbose_name is None: lbl.set_value_as_name( six.text_type(dep_field.verbose_name)) else: lbl.set_value_as_name( six.text_type(verbose_name)) self.add_component(lbl) if (dep_field is None) or (not (dep_field.is_relation and dep_field.many_to_many)): if readonly: comp = self.get_reading_comp(field_name) else: comp = self.get_writing_comp(field_name) comp.set_location( col + 1 + offset, row, colspan, 1) self.add_component(comp) else: # field many-to-many if readonly: child = getattr(self.item, field_name).all() comp = XferCompGrid(field_name) comp.set_model(child, None, self) comp.set_location( col + 1 + offset, row, colspan, 1) self.add_component(comp) else: self.selector_from_model( col + offset, row, field_name) height = 5 offset += 2 row += height