Beispiel #1
0
 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'), {})
Beispiel #2
0
 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)
Beispiel #3
0
 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