def fillresponse(self, legal_entity=0, name_filter=''): self.item.legal_entity = LegalEntity.objects.get(id=legal_entity) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) self.add_component(img) self.fill_from_model(1, 0, True, ['legal_entity']) comp = XferCompEdit('filter') comp.set_value(name_filter) comp.set_action(self.request, self.get_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) comp.set_location(1, 2) comp.description = _('Filtrer by name') comp.is_default = True self.add_component(comp) identfilter = [] if name_filter != "": identfilter = [Q(firstname__icontains=name_filter) | Q(lastname__icontains=name_filter)] items = Individual.objects.filter(*identfilter).distinct() grid = XferCompGrid('individual') grid.set_model(items, None, self) grid.set_location(1, 3) grid.description = _('individual') grid.add_action(self.request, ResponsabilityModify.get_action(_("Select"), "images/ok.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, unique=SELECT_SINGLE, params={"SAVE": "YES"}) grid.add_action(self.request, IndividualShow.get_action(_("Show"), "images/edit.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) grid.add_action(self.request, IndividualAddModify.get_action(TITLE_ADD, "images/add.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO) self.add_component(grid)
def fillresponse(self, legal_entity=0, name_filter=''): self.item.legal_entity = LegalEntity.objects.get(id=legal_entity) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) self.add_component(img) self.fill_from_model(1, 0, True, ['legal_entity']) comp = XferCompEdit('filter') comp.set_value(name_filter) comp.set_action(self.request, self.get_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) comp.set_location(1, 2) comp.description = _('Filtrer by name') comp.is_default = True self.add_component(comp) identfilter = [] if name_filter != "": identfilter = [ Q(firstname__icontains=name_filter) | Q(lastname__icontains=name_filter)] items = Individual.objects.filter( *identfilter) grid = XferCompGrid('individual') grid.set_model(items, None, self) grid.set_location(1, 3) grid.description = _('individual') grid.add_action(self.request, ResponsabilityModify.get_action(_("Select"), "images/ok.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, unique=SELECT_SINGLE, params={"SAVE": "YES"}) grid.add_action(self.request, IndividualShow.get_action(_("Show"), "images/edit.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) grid.add_action(self.request, IndividualAddModify.get_action(TITLE_ADD, "images/add.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO) self.add_component(grid)
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 _entryline_editor(self, xfer, serial_vals, debit_rest, credit_rest): last_row = xfer.get_max_row() + 5 lbl = XferCompLabelForm('sep1') lbl.set_location(0, last_row, 6) lbl.set_value("{[center]}{[hr/]}{[/center]}") xfer.add_component(lbl) lbl = XferCompLabelForm('sep2') lbl.set_location(1, last_row + 1, 5) lbl.set_value_center(_("Add a entry line")) xfer.add_component(lbl) entry_line = EntryLineAccount() entry_line.editor.edit_line(xfer, 0, last_row + 2, debit_rest, credit_rest) if entry_line.has_account: btn = XferCompButton('entrybtn') btn.set_location(3, last_row + 5) btn.set_action(xfer.request, ActionsManage.get_action_url( 'accounting.EntryLineAccount', 'Add', xfer), close=CLOSE_YES) xfer.add_component(btn) self.item.editor.show(xfer) grid_lines = xfer.get_components('entrylineaccount') xfer.remove_component('entrylineaccount') new_grid_lines = XferCompGrid('entrylineaccount_serial') new_grid_lines.set_model(self.item.get_entrylineaccounts(serial_vals), None, xfer) new_grid_lines.set_location(grid_lines.col, grid_lines.row, grid_lines.colspan + 2, grid_lines.rowspan) new_grid_lines.add_action_notified(xfer, EntryLineAccount) xfer.add_component(new_grid_lines) nb_lines = len(new_grid_lines.record_ids) return nb_lines
def fillresponse(self, begin_date, end_date): self.item.set_dates(begin_date, end_date) date_init = XferCompDate("begin_date") date_init.set_needed(True) date_init.set_value(self.item.date_begin) date_init.set_location(1, 0) date_init.description = _('initial date') date_init.set_action(self.request, self.get_action(), close=CLOSE_NO, modal=FORMTYPE_REFRESH) self.add_component(date_init) date_end = XferCompDate("end_date") date_end.set_needed(True) date_end.set_value(self.item.date_end) date_end.set_location(2, 0) date_end.description = _('current date') date_end.set_action(self.request, self.get_action(), close=CLOSE_NO, modal=FORMTYPE_REFRESH) self.add_component(date_end) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 6) self.add_component(img) self.fill_from_model(1, 1, True, [((_('name'), 'third'),)]) grid = XferCompGrid('loadcount') grid.set_model(self.item.loadcount_set.all(), None) grid.set_location(1, 2, 2) self.add_component(grid) self.add_action(WrapAction(_('Close'), 'images/close.png'))
def fillresponse(self, model='', objid=0): img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 6) self.add_component(img) self.model = apps.get_model(model) if objid != 0: self.item = self.model.objects.get(id=objid) fieldnames = [] for fieldname in self.model.get_default_fields(): if isinstance(fieldname, tuple): fieldnames.append(fieldname[1]) else: fieldnames.append(fieldname) self.fill_from_model(1, 0, True, desc_fields=fieldnames) log_items = LucteriosLogEntry.objects.get_for_object(self.item) else: content_type = ContentType.objects.get_for_model(self.model) lbl = XferCompLabelForm('ModelName') lbl.set_value_as_header(six.text_type(content_type)) lbl.description = _("content type") lbl.set_location(1, 0, 2) self.add_component(lbl) log_items = LucteriosLogEntry.objects.get_for_model(self.model) grid = XferCompGrid(self.field_id) grid.set_model(log_items, None, self) grid.set_location(1, self.get_max_row() + 1, 2) grid.set_size(200, 500) self.add_component(grid)
def thirdaddon_accounting(item, xfer): if WrapAction.is_permission(xfer.request, 'accounting.change_entryaccount'): try: entry_lines_filter = Q(entrylineaccount__third=item) lines_filter = xfer.getparam('lines_filter', 0) if lines_filter == 0: entry_lines_filter &= Q(year=FiscalYear.get_current()) elif lines_filter == 1: entry_lines_filter &= Q(year=FiscalYear.get_current()) & Q(close=False) xfer.new_tab(_('entry of account')) lbl = XferCompLabelForm('lbl_lines_filter') lbl.set_value_as_name(_('Accounts filter')) lbl.set_location(0, 1) xfer.add_component(lbl) edt = XferCompSelect("lines_filter") edt.set_select([(0, _('All entries of current fiscal year')), (1, _( 'Only no-closed entries of current fiscal year')), (2, _('All entries for all fiscal year'))]) edt.set_value(lines_filter) edt.set_location(1, 1) edt.set_action(xfer.request, xfer.get_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) xfer.add_component(edt) entries = EntryAccount.objects.filter(entry_lines_filter) link_grid_lines = XferCompGrid('entryaccount') link_grid_lines.set_model(entries, EntryAccount.get_default_fields(), xfer) link_grid_lines.set_location(0, 2, 2) link_grid_lines.add_action(xfer.request, ActionsManage.get_action_url('accounting.EntryAccount', 'OpenFromLine', xfer), modal=FORMTYPE_MODAL, unique=SELECT_SINGLE, close=CLOSE_NO) link_grid_lines.add_action(xfer.request, ActionsManage.get_action_url('accounting.EntryAccount', 'Close', xfer), modal=FORMTYPE_MODAL, unique=SELECT_MULTI, close=CLOSE_NO) link_grid_lines.add_action(xfer.request, ActionsManage.get_action_url('accounting.EntryAccount', 'Link', xfer), modal=FORMTYPE_MODAL, unique=SELECT_MULTI, close=CLOSE_NO) xfer.add_component(link_grid_lines) except LucteriosException: pass
def add_legalentities(self, legal_entities): self.new_tab(_("Legal entities")) grid = XferCompGrid('legal_entity') grid.set_model(legal_entities, LegalEntity.get_default_fields()) grid.add_action(self.request, CurrentLegalEntityShow.get_action( _("Edit"), "images/show.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) grid.set_location(1, 1, 2) grid.set_size(200, 500) self.add_component(grid)
def show(self, xfer): xfer.move_components('body', 0, 2) obj_recipients = xfer.get_components('recipients') new_recipients = XferCompGrid('recipient_list') new_recipients.tab = obj_recipients.tab new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan) new_recipients.add_header("model", _('model')) new_recipients.add_header("filter", _('filter')) compid = 0 for model_title, filter_desc in self.item.recipients_description: new_recipients.set_value(compid, "model", model_title) new_recipients.set_value(compid, "filter", filter_desc) compid += 1 if compid == 0: xfer.remove_component('contact_nb') if not will_mail_send() or (len(self.item.get_contacts(False)) == 0): xfer.remove_component('contact_noemail') xfer.remove_component('recipients') new_recipients.add_action_notified(xfer, 'recipient_list') xfer.tab = new_recipients.tab xfer.add_component(new_recipients) old_documents = xfer.get_components('documents') xfer.remove_component('documents') new_documents = XferCompGrid('document') new_documents.tab = old_documents.tab new_documents.set_location(old_documents.col, old_documents.row, old_documents.colspan) new_documents.set_model(self.item.documents.all(), ["name", "description", "date_modification"], xfer) new_documents.add_action(xfer.request, DocumentShow.get_action( TITLE_EDIT, "images/show.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) if self.item.status == 0: new_documents.add_action(xfer.request, MessageRemoveDoc.get_action( _("Remove"), "images/delete.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_MULTI) new_documents.add_action(xfer.request, MessageInsertDoc.get_action( _("Insert"), "images/add.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_NONE) xfer.tab = new_documents.tab xfer.add_component(new_documents) return LucteriosEditor.show(self, xfer)
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_action_notified(self, model=model) grid.set_location(0, row + 1, 2) grid.set_size(200, 500) self.add_component(grid)
def show_contact_degree(contact, xfer): if WrapAction.is_permission(xfer.request, 'event.change_degree') and (Params.getvalue("event-degree-enable") == 1): up_contact = contact.get_final_child() if isinstance(up_contact, Adherent): degrees = Degree.objects.filter(adherent=up_contact) xfer.new_tab(_("Degree")) grid = XferCompGrid('degrees') grid.set_model(degrees, None, xfer) grid.add_action_notified(xfer, Degree) grid.set_location(0, xfer.get_max_row() + 1, 2) grid.set_size(200, 500) xfer.add_component(grid)
def show_contact_degree(contact, xfer): if WrapAction.is_permission(xfer.request, 'event.change_degree'): up_contact = contact.get_final_child() if isinstance(up_contact, Adherent): degrees = Degree.objects.filter(adherent=up_contact) xfer.new_tab(_("Degree")) grid = XferCompGrid('degrees') grid.set_model(degrees, None, xfer) grid.add_action_notified(xfer, Degree) grid.set_location(0, xfer.get_max_row() + 1, 2) grid.set_size(200, 500) xfer.add_component(grid)
def fill_grid(self, row, model, field_id, items): grid = XferCompGrid(field_id) if self.size_by_page is not None: grid.size_by_page = self.size_by_page if self.multi_page: xfer = self else: xfer = None grid.set_model(items, self.fieldnames, xfer) grid.add_action_notified(self, model=model) grid.set_location(0, row + 1, 2) grid.set_size(200, 500) self.add_component(grid)
def filltab_from_model(self, col, row, readonly, field_names, prefix=''): 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 comp_col_addon = 0 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')) comp = XferCompGrid(field_name[:-4]) comp.set_model(child, None, self) comp.add_action_notified(self, model=child.model) comp.set_location(col + comp_col_addon + offset, row, colspan, 1) comp.description = six.text_type( child.model._meta.verbose_name) self.add_component(comp) offset += 1 + comp_col_addon 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 if readonly: comp = self.get_reading_comp(field_name, prefix) else: comp = self.get_writing_comp(field_name) comp.set_location(col + comp_col_addon + offset, row, colspan, 1) if verbose_name is None: comp.description = six.text_type( dep_field.verbose_name) else: comp.description = six.text_type(verbose_name) self.add_component(comp) offset += 1 + comp_col_addon row += height
def show(self, xfer): obj_body = xfer.get_components('body') obj_body.value = "{[div style='border:1px solid black;background-color:#EEE;padding:5px;']}%s{[div]}" % obj_body.value xfer.move_components('body', 0, 2) obj_recipients = xfer.get_components('recipients') new_recipients = XferCompGrid('recipient_list') new_recipients.tab = obj_recipients.tab new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan) new_recipients.add_header("model", _('model')) new_recipients.add_header("filter", _('filter')) compid = 0 for model_title, filter_desc in self.item.recipients_description: new_recipients.set_value(compid, "model", model_title) new_recipients.set_value(compid, "filter", filter_desc) compid += 1 if compid == 0: xfer.remove_component('contact_nb') if not will_mail_send() or (len(self.item.get_contacts(False)) == 0): xfer.remove_component('contact_noemail') xfer.remove_component('recipients') new_recipients.add_action_notified(xfer, 'recipient_list') xfer.tab = new_recipients.tab xfer.add_component(new_recipients) old_documents = xfer.get_components('attachments') xfer.remove_component('attachments') if xfer.item.is_dynamic: xfer.remove_component('__tab_3') xfer.remove_component('doc_in_link') xfer.remove_component('empty') else: new_documents = XferCompGrid('attachments') new_documents.tab = old_documents.tab new_documents.set_location(old_documents.col, old_documents.row, old_documents.colspan) new_documents.set_model(self.item.attachments.all(), ["name", "description", "date_modification"], xfer) new_documents.add_action(xfer.request, DocumentShow.get_action(TITLE_EDIT, "images/show.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) if self.item.status == 0: new_documents.add_action(xfer.request, MessageRemoveDoc.get_action(_("Remove"), "images/delete.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_MULTI) new_documents.add_action(xfer.request, MessageInsertDoc.get_action(_("Insert"), "images/add.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_NONE) xfer.tab = new_documents.tab xfer.add_component(new_documents) contact_nb = xfer.get_components('contact_nb') if (contact_nb is not None) and (self.item.nb_total > 0): xfer.tab = contact_nb.tab xfer.fill_from_model(contact_nb.col, contact_nb.row + 1, True, [((_('statistic'), 'statistic'),)]) return LucteriosEditor.show(self, xfer)
def thirdaddon_invoice(item, xfer): if WrapAction.is_permission(xfer.request, 'invoice.change_bill'): try: FiscalYear.get_current() xfer.new_tab(_('Invoice')) current_filter, status_filter = _add_bill_filter(xfer, 1) current_filter &= Q(third=item) bills = Bill.objects.filter(current_filter) bill_grid = XferCompGrid('bill') bill_grid.set_model(bills, Bill.get_default_fields(status_filter), xfer) bill_grid.set_location(0, 2, 2) bill_grid.add_action(xfer.request, ActionsManage.get_action_url('invoice.Bill', 'Show', xfer), modal=FORMTYPE_MODAL, unique=SELECT_SINGLE, close=CLOSE_NO) xfer.add_component(bill_grid) except LucteriosException: pass
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 show(self, xfer): row = xfer.get_max_row() + 1 lbl = XferCompLabelForm('lbl_entrylineaccount') lbl.set_location(1, row) lbl.set_value_as_name(EntryLineAccount._meta.verbose_name) xfer.add_component(lbl) comp = XferCompGrid('entryaccount') comp.set_model(EntryAccount.objects.filter(entrylineaccount__account=self.item), None, xfer) comp.add_action(xfer.request, ActionsManage.get_action_url( 'accounting.EntryAccount', 'OpenFromLine', xfer), unique=SELECT_SINGLE, close=CLOSE_NO) comp.add_action(xfer.request, ActionsManage.get_action_url('accounting.EntryAccount', 'Close', xfer), unique=SELECT_MULTI, close=CLOSE_NO) if self.item.is_third: comp.add_action(xfer.request, ActionsManage.get_action_url( 'accounting.EntryAccount', 'Link', xfer), unique=SELECT_MULTI, close=CLOSE_NO) comp.set_location(2, row) xfer.add_component(comp)
def fillresponse(self, modelname=''): img_title = XferCompImage('img') img_title.set_location(0, 0, 1, 2) img_title.set_value(self.icon_path()) self.add_component(img_title) lab = XferCompLabelForm('title') lab.set_location(1, 0, 3) lab.set_value_as_title(_("Print models")) self.add_component(lab) lab = XferCompLabelForm('lblmodelname') lab.set_location(1, 1) lab.set_value_as_name(_('model')) self.add_component(lab) model_list = {} for print_model in PrintModel.objects.all(): if print_model.modelname not in model_list.keys(): try: model_list[ print_model.modelname] = print_model.model_associated_title() if modelname == '': modelname = print_model.modelname except LookupError: pass model_sel = XferCompSelect('modelname') model_sel.set_location(2, 1, 2) model_sel.set_select(model_list) model_sel.set_value(modelname) model_sel.set_action(self.request, self.get_action( "", ""), {'modal': FORMTYPE_REFRESH, 'close': CLOSE_NO}) self.add_component(model_sel) items = PrintModel.objects.filter( modelname=modelname) grid = XferCompGrid('print_model') grid.set_location(1, 2, 3) grid.set_model(items, ['name', 'kind'], self) grid.add_action(self.request, PrintModelEdit.get_action( _('edit'), 'images/edit.png'), {'unique': SELECT_SINGLE}) grid.add_action(self.request, PrintModelClone.get_action( _('clone'), 'images/clone.png'), {'unique': SELECT_SINGLE}) grid.add_action(self.request, PrintModelDelete.get_action( _('delete'), 'images/delete.png'), {'unique': SELECT_SINGLE}) self.add_component(grid) self.add_action(WrapAction(_('Close'), 'images/close.png'), {})
def summary_condo(xfer): is_right = WrapAction.is_permission(xfer.request, 'condominium.change_set') owners = get_owners(xfer.request) if is_right or (len(owners) == 1): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('condotitle') lab.set_value_as_infocenter(_('Condominium')) lab.set_location(0, row, 4) xfer.add_component(lab) if len(owners) == 1: lab = XferCompLabelForm('condoowner') lab.set_value(_('You are a owner')) lab.set_location(0, row + 1, 2) xfer.add_component(lab) grid = XferCompGrid("part") grid.set_model(owners[0].partition_set.filter(set__is_active=True), ["set", "value", (_("ratio"), 'ratio')]) grid.set_location(0, row + 2, 4) grid.set_size(200, 500) xfer.add_component(grid) if is_right: row = xfer.get_max_row() + 1 nb_set = len(Set.objects.filter(is_active=True)) nb_owner = len(Owner.objects.all()) lab = XferCompLabelForm('condoinfo') lab.set_value_as_header(_("There are %(set)d classes of loads for %(owner)d owners") % {'set': nb_set, 'owner': nb_owner}) lab.set_location(0, row + 1, 4) xfer.add_component(lab) if Params.getvalue("condominium-old-accounting"): lab = XferCompLabelForm('condoconvinfo') lab.set_value_as_header(_("Your condominium account is not in respect of French law{[newline]}An conversion is necessary.")) lab.set_color('red') lab.set_location(0, row + 2, 4) xfer.add_component(lab) btn = XferCompButton('condoconv') btn.set_location(0, row + 3, 4) btn.set_action(xfer.request, CondominiumConvert.get_action(_('Convertion ...'), ""), close=CLOSE_NO) xfer.add_component(btn) if is_right or (len(owners) == 1): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('condosep') lab.set_value_as_infocenter("{[hr/]}") lab.set_location(0, row, 4) xfer.add_component(lab) return True else: return False
def thirdaddon_expense(item, xfer): if WrapAction.is_permission(xfer.request, 'condominium.change_expense'): try: status_filter = xfer.getparam('status_filter', Expense.STATUS_BUILDING) date_filter = xfer.getparam('date_filter', 0) current_year = FiscalYear.get_current() item.get_account(current_year, current_system_account().get_provider_mask()) xfer.new_tab(_('Expenses')) edt = XferCompSelect("status_filter") edt.set_select(list(Expense.get_field_by_name('status').choices)) edt.set_value(status_filter) edt.description = _('Filter by type') edt.set_location(0, 1) edt.set_action(xfer.request, xfer.return_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) xfer.add_component(edt) edt = XferCompSelect("date_filter") edt.set_select([(0, _('only current fiscal year')), (1, _('all expenses'))]) edt.set_value(date_filter) edt.set_location(0, 2) edt.description = _('Filter by date') edt.set_action(xfer.request, xfer.return_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) xfer.add_component(edt) expense_filter = Q(status=status_filter) & Q(third=item) if date_filter == 0: expense_filter &= Q(date__gte=current_year.begin) & Q( date__lte=current_year.end) expenses = Expense.objects.filter(expense_filter).distinct() expense_grid = XferCompGrid('expense') expense_grid.set_model(expenses, Expense.get_default_fields(status_filter), xfer) expense_grid.add_action_notified(xfer, Expense) expense_grid.set_location(0, 3, 2) xfer.add_component(expense_grid) except LucteriosException: pass
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 comp_col_addon = 0 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')) comp = XferCompGrid(field_name[:-4]) comp.set_model(child, None, self) comp.add_action_notified(self, model=child.model) comp.set_location(col + comp_col_addon + offset, row, colspan, 1) comp.description = six.text_type(child.model._meta.verbose_name) self.add_component(comp) offset += 1 + comp_col_addon 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 if readonly: comp = self.get_reading_comp(field_name) else: comp = self.get_writing_comp(field_name) comp.set_location(col + comp_col_addon + offset, row, colspan, 1) if verbose_name is None: comp.description = six.text_type(dep_field.verbose_name) else: comp.description = six.text_type(verbose_name) self.add_component(comp) offset += 1 + comp_col_addon row += height
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() self.filter_items() grid = XferCompGrid(self.field_id) grid.set_model(self.items, self.fieldnames, self) grid.add_action_notified(self) grid.set_location(0, row + 4, 6) grid.set_size(200, 500) self.add_component(grid) for act, opt in ActionsManage.get_actions( ActionsManage.ACTION_IDENT_LIST, self, key=action_list_sorted): self.add_action(act, **opt) self.add_action(WrapAction(_('Close'), 'images/close.png'))
def show(self, xfer): xfer.move_components('body', 0, 2) obj_recipients = xfer.get_components('recipients') new_recipients = XferCompGrid('recipient_list') new_recipients.tab = obj_recipients.tab new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan) new_recipients.add_header("model", _('model')) new_recipients.add_header("filter", _('filter')) compid = 0 for model_title, filter_desc in self.item.recipients_description: new_recipients.set_value(compid, "model", model_title) new_recipients.set_value(compid, "filter", filter_desc) compid += 1 if compid == 0: xfer.remove_component('contact_nb') if not will_mail_send() or (len(self.item.get_contacts(False)) == 0): xfer.remove_component('contact_noemail') xfer.remove_component('recipients') new_recipients.add_action_notified(xfer, 'recipient_list') xfer.tab = new_recipients.tab xfer.add_component(new_recipients) old_documents = xfer.get_components('documents') xfer.remove_component('documents') new_documents = XferCompGrid('document') new_documents.tab = old_documents.tab new_documents.set_location(old_documents.col, old_documents.row, old_documents.colspan) new_documents.set_model(self.item.documents.all(), ["name", "description", "date_modification"], xfer) new_documents.add_action(xfer.request, DocumentShow.get_action(TITLE_EDIT, "images/show.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE) if self.item.status == 0: new_documents.add_action(xfer.request, MessageRemoveDoc.get_action(_("Remove"), "images/delete.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_MULTI) new_documents.add_action(xfer.request, MessageInsertDoc.get_action(_("Insert"), "images/add.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_NONE) xfer.tab = new_documents.tab xfer.add_component(new_documents) return LucteriosEditor.show(self, xfer)
def show(self, xfer): self._add_cost_savebtn(xfer) last_row = xfer.get_max_row() + 10 lbl = XferCompLabelForm('sep3') lbl.set_location(0, last_row + 1, 6) lbl.set_value_center("{[hr/]}") xfer.add_component(lbl) xfer.filltab_from_model(1, last_row + 2, True, ['entrylineaccount_set']) grid_lines = xfer.get_components('entrylineaccount') grid_lines.actions = [] if self.item.has_third: sum_customer = get_amount_sum(self.item.entrylineaccount_set.filter( account__code__regex=current_system_account().get_third_mask()).aggregate(Sum('amount'))) if ((sum_customer < 0) and not self.item.has_cash) or ((sum_customer > 0) and self.item.has_cash): lbl = XferCompLabelForm('asset_warning') lbl.set_location(0, last_row + 3, 6) lbl.set_value_as_header(_("entry of accounting for an asset")) xfer.add_component(lbl) if self.item.link is not None: linkentries = EntryAccount.objects.filter(link=self.item.link).exclude(id=self.item.id) if len(linkentries) == 0: self.item.unlink() else: lbl = XferCompLabelForm('sep4') lbl.set_location(0, last_row + 4, 6) lbl.set_value_center("{[hr/]}") xfer.add_component(lbl) lbl = XferCompLabelForm('entrylinklab') lbl.set_location(1, last_row + 5, 5) lbl.set_value_center(_("Linked entries")) xfer.add_component(lbl) link_grid_lines = XferCompGrid('entryaccount_link') link_grid_lines.set_model(linkentries, fieldnames=None, xfer_custom=xfer) link_grid_lines.set_location(1, last_row + 6, 5) link_grid_lines.add_action(xfer.request, ActionsManage.get_action_url( 'accounting.EntryAccount', 'OpenFromLine', xfer), unique=SELECT_SINGLE, close=CLOSE_YES, params={'field_id': 'entryaccount_link', 'journal': ''}) xfer.add_component(link_grid_lines) if self.added: xfer.add_action(xfer.get_action(TITLE_MODIFY, "images/ok.png"), params={"SAVE": "YES"})
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