def summary_contacts(xfer): if not hasattr(xfer, 'add_component'): return WrapAction.is_permission(xfer, 'contacts.change_abstractcontact') else: if WrapAction.is_permission(xfer.request, 'contacts.change_abstractcontact'): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('contactstitle') lab.set_value_as_infocenter(_("Addresses and contacts")) lab.set_location(0, row, 4) xfer.add_component(lab) nb_legal_entities = len(LegalEntity.objects.all()) lbl_doc = XferCompLabelForm('lbl_nblegalentities') lbl_doc.set_location(0, row + 1, 4) lbl_doc.set_value_center(_("Total number of legal entities: %d") % nb_legal_entities) xfer.add_component(lbl_doc) nb_individual = len(Individual.objects.all()) lbl_doc = XferCompLabelForm('lbl_nbindividuals') lbl_doc.set_location(0, row + 2, 4) lbl_doc.set_value_center(_("Total number of individuals: %d") % nb_individual) xfer.add_component(lbl_doc) lab = XferCompLabelForm('contactsend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 3, 4) xfer.add_component(lab) return True else: return False
def summary_documents(xfer): if not hasattr(xfer, 'add_component'): return WrapAction.is_permission(xfer, 'documents.change_document') elif WrapAction.is_permission(xfer.request, 'documents.change_document'): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('documenttitle') lab.set_value_as_infocenter(_('Document management')) lab.set_location(0, row, 4) xfer.add_component(lab) filter_result = Q() if notfree_mode_connect(): filter_result = filter_result & (Q(folder=None) | Q(folder__viewer__in=xfer.request.user.groups.all() if xfer.request.user.id is not None else [])) nb_doc = len(Document.objects.filter(*[filter_result])) lbl_doc = XferCompLabelForm('lbl_nbdocument') lbl_doc.set_location(0, row + 1, 4) if nb_doc == 0: lbl_doc.set_value_center(_("no file currently available")) elif nb_doc == 1: lbl_doc.set_value_center(_("one file currently available")) else: lbl_doc.set_value_center(_("%d files currently available") % nb_doc) xfer.add_component(lbl_doc) lab = XferCompLabelForm('documentend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 2, 4) xfer.add_component(lab) return True else: return False
def summary_documents(xfer): if not hasattr(xfer, 'add_component'): return WrapAction.is_permission(xfer, 'documents.change_document') elif WrapAction.is_permission(xfer.request, 'documents.change_document'): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('documenttitle') lab.set_value_as_infocenter(_('Document management')) lab.set_location(0, row, 4) xfer.add_component(lab) filter_result = Q() if notfree_mode_connect(): filter_result = filter_result & (Q(parent=None) | Q( parent__viewer__in=xfer.request.user.groups.all( ) if xfer.request.user.id is not None else [])) nb_doc = len(DocumentContainer.objects.filter(*[filter_result])) lbl_doc = XferCompLabelForm('lbl_nbdocument') lbl_doc.set_location(0, row + 1, 4) if nb_doc == 0: lbl_doc.set_value_center(_("no file currently available")) elif nb_doc == 1: lbl_doc.set_value_center(_("one file currently available")) else: lbl_doc.set_value_center( _("%d files currently available") % nb_doc) xfer.add_component(lbl_doc) lab = XferCompLabelForm('documentend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 2, 4) xfer.add_component(lab) return True else: return False
def _get_from_custom(self, request, *args, **kwargs): dlg = XferContainerCustom() dlg.request = self.request dlg.is_view_right = self.is_view_right dlg.caption = self.caption dlg.extension = self.extension dlg.action = self.action img_title = XferCompImage('img_title') img_title.set_location(0, 0, 1, 2) img_title.set_value(self.traitment_data[0]) dlg.add_component(img_title) lbl = XferCompLabelForm("info") lbl.set_location(1, 0) dlg.add_component(lbl) if self.getparam("RELOAD") is not None: lbl.set_value(six.text_type(self.traitment_data[2])) dlg.add_action(WrapAction(_("Close"), "images/close.png")) else: lbl.set_value_center("{[br/]}" + six.text_type(self.traitment_data[1])) btn = XferCompButton("Next") btn.set_location(1, 1) btn.set_size(50, 300) btn.set_action(self.request, self.return_action(_('Traitment...'), ""), params={"RELOAD": "YES"}) btn.java_script = "parent.refresh()" dlg.params["RELOAD"] = "YES" dlg.add_component(btn) dlg.add_action(WrapAction(_("Cancel"), "images/cancel.png")) return dlg.get_post(request, *args, **kwargs)
def get_action(cls, caption=None, icon_path=None, modal=FORMTYPE_MODAL): if caption is None: caption = cls.caption if icon_path is None: icon_path = getattr(cls, 'icon', '') ret_act = WrapAction(caption, icon_path, url_text=cls.url_text, is_view_right=getattr(cls, 'is_view_right', None)) ret_act.modal = modal return ret_act
def get_post(self, request, *args, **kwargs): getLogger("lucterios.core.request").debug(">> get %s [%s]", request.path, request.user) try: self._initialize(request, *args, **kwargs) self.fillresponse(**self._get_params()) if self.custom is not None: return self.custom.get(request, *args, **kwargs) if (self.title != '') and (self.getparam("CONFIRME") != "YES"): dlg = XferContainerDialogBox() dlg.request = self.request dlg.is_view_right = self.is_view_right dlg.caption = "Confirmation" dlg.extension = self.extension dlg.action = self.action dlg.set_dialog(self.title, XFER_DBOX_CONFIRMATION) dlg.add_action(self.return_action(_("Yes"), "images/ok.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={"CONFIRME": "YES"}) dlg.add_action(WrapAction(_("No"), "images/cancel.png")) dlg.closeaction = self.closeaction return dlg.get_post(request, *args, **kwargs) elif self.msg != "": dlg = XferContainerDialogBox() dlg.request = self.request dlg.caption = self.caption dlg.set_dialog(self.msg, self.typemsg) dlg.add_action(WrapAction(_("Ok"), "images/ok.png")) dlg.closeaction = self.closeaction return dlg.get_post(request, *args, **kwargs) elif self.except_msg != "": dlg = XferContainerDialogBox() dlg.request = self.request dlg.is_view_right = self.is_view_right dlg.caption = self.caption dlg.set_dialog(self.except_msg, XFER_DBOX_WARNING) if self.except_classact is not None: except_action = self.except_classact() if self.check_action_permission( except_action.get_action()): dlg.add_action(except_action.get_action( _("Retry"), "")) dlg.closeaction = self.closeaction return dlg.get_post(request, *args, **kwargs) elif self.traitment_data is not None: return self._get_from_custom(request, *args, **kwargs) else: if "CONFIRME" in self.params.keys(): del self.params["CONFIRME"] self._finalize() return self.get_response() finally: getLogger("lucterios.core.request").debug("<< get %s [%s]", request.path, request.user)
def summary_condo(xfer): if not hasattr(xfer, 'add_component'): return WrapAction.is_permission(xfer, 'condominium.change_set') else: if WrapAction.is_permission(xfer.request, 'condominium.change_set'): 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) 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 hasattr(settings, "DIACAMMA_MAXOWNER"): lbl = XferCompLabelForm("limit_owner") lbl.set_value( _('limitation: %d owners allowed') % getattr(settings, "DIACAMMA_MAXOWNER")) lbl.set_italic() lbl.set_location(0, row + 4, 4) xfer.add_component(lbl) 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 fillresponse(self): if self.getparam('SAVE') is None: dlg = self.create_custom(self.model) dlg.item = self.item img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) dlg.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.caption) lbl.set_location(1, 0, 6) dlg.add_component(lbl) lbl = XferCompLabelForm('lbl_import_model') lbl.set_value_as_name(_("file to load")) lbl.set_location(1, 1) dlg.add_component(lbl) upload = XferCompUpLoad('import_model') upload.compress = False upload.http_file = True upload.maxsize = 128 * 1024 * 1024 # 128Mo upload.add_filter('.mdl') upload.set_location(2, 1) dlg.add_component(upload) dlg.add_action(self.get_action(TITLE_OK, "images/ok.png"), close=CLOSE_YES, params={'SAVE': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: if 'import_model' in self.request.FILES.keys(): upload_file = self.request.FILES['import_model'] if self.item.import_file(upload_file): self.message(_('Model loaded'))
def fillresponse(self): model_module = ".".join(self.item.model_associated().__module__.split('.')[:-1]) if self.getparam('SAVE') is None: dlg = self.create_custom(self.model) dlg.item = self.item img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) dlg.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.caption) lbl.set_location(1, 0, 6) dlg.add_component(lbl) lbl = XferCompLabelForm('lbl_default_model') lbl.set_value_as_name(_("Model to reload")) lbl.set_location(1, 1) dlg.add_component(lbl) sel = XferCompSelect('default_model') sel.set_select(PrintModel.get_default_model(model_module, self.item.modelname, self.item.kind)) sel.set_location(2, 1) dlg.add_component(sel) dlg.add_action(self.get_action(TITLE_OK, "images/ok.png"), close=CLOSE_YES, params={'SAVE': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: if self.item.load_model(model_module, self.getparam("default_model", ""), is_default=None): self.message(_('Model reloaded'))
def fillresponse(self): img_title = XferCompImage('img') img_title.set_location(0, 0, 1, 6) img_title.set_value(self.icon_path()) self.add_component(img_title) lab = XferCompLabelForm('title') lab.set_location(1, 0, 2) lab.set_value_as_title(_("Print models")) self.add_component(lab) self.fill_from_model(2, 1, False, ['name']) self.fill_from_model(2, 2, True, ['kind']) self.item.mode = int(self.item.mode) if self.item.kind == 1: self.fill_from_model(2, 3, False, ['mode']) self.get_components('mode').set_action(self.request, self.get_action('', ''), modal=FORMTYPE_REFRESH, close=CLOSE_NO) if (self.item.mode == 1) and (self.item.value[:6] != '<model'): self.item.value = "<model>\n<body>\n<text>%s</text></body>\n</model>" % self.item.value if self.item.kind == 0: self._fill_listing_editor() elif (self.item.kind == 1) and (self.item.mode == 0): self._fill_label_editor() elif (self.item.kind == 2) or ((self.item.kind == 1) and (self.item.mode == 1)): self._fill_report_editor() for act, opt in ActionsManage.get_actions(ActionsManage.ACTION_IDENT_EDIT, self, key=action_list_sorted): self.add_action(act, **opt) self.add_action(WrapAction(TITLE_CLOSE, 'images/close.png'))
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, owner, begin_date, end_date): currentowner = Owner.objects.get(id=owner) currentowner.set_dates(begin_date, end_date) if self.getparam('SAVE') is None: dlg = self.create_custom(model=Payoff) dlg.item.supporting = self.RefundSupporting(currentowner) dlg.item.date = currentowner.default_date() dlg.params['supportings'] = '' img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 6) dlg.add_component(img) dlg.fill_from_model(1, 0, False) dlg.add_action(self.return_action(TITLE_OK, 'images/ok.png'), params={"SAVE": "YES"}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: Payoff.multi_save([currentowner.id], -1 * self.getparam('amount', 0.0), self.getparam('mode', Payoff.MODE_CASH), '', self.getparam('reference', ''), self.getparam('bank_account', None), self.getparam('date', currentowner.default_date()), self.getparam('fee_bank', 0.0), Payoff.REPARTITION_BYDATE)
def show_third(self, xfer, right=""): xfer.params["supporting"] = self.item.id third = xfer.get_components("third") third.colspan -= 2 if WrapAction.is_permission(xfer.request, right): btn = XferCompButton("change_third") btn.set_location(third.col + third.colspan, third.row) btn.set_action( xfer.request, ActionsManage.get_action_url("payoff.Supporting", "Third", xfer), modal=FORMTYPE_MODAL, close=CLOSE_NO, params={"code_mask": self.item.get_third_mask()}, ) xfer.add_component(btn) if self.item.third is not None: btn = XferCompButton("show_third") btn.set_is_mini(True) btn.set_location(third.col + third.colspan + 1, third.row) btn.set_action( xfer.request, ActionsManage.get_action_url("accounting.Third", "Show", xfer), modal=FORMTYPE_MODAL, close=CLOSE_NO, params={"third": self.item.third.id}, ) xfer.add_component(btn) lbl = XferCompLabelForm("info") lbl.set_color("red") lbl.set_location(1, xfer.get_max_row() + 1, 4) lbl.set_value(self.item.get_info_state()) xfer.add_component(lbl)
def summary_accounting(xfer): if WrapAction.is_permission(xfer.request, 'accounting.change_chartsaccount'): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('accountingtitle') lab.set_value_as_infocenter(_("Bookkeeping")) lab.set_location(0, row, 4) xfer.add_component(lab) try: year = FiscalYear.get_current() lbl = XferCompLabelForm("accounting_year") lbl.set_value_center(six.text_type(year)) lbl.set_location(0, row + 1, 4) xfer.add_component(lbl) lbl = XferCompLabelForm("accounting_result") lbl.set_value_center(year.total_result_text) lbl.set_location(0, row + 2, 4) xfer.add_component(lbl) except LucteriosException as lerr: lbl = XferCompLabelForm("accounting_error") lbl.set_value_center(six.text_type(lerr)) lbl.set_location(0, row + 1, 4) xfer.add_component(lbl) btn = XferCompButton("accounting_conf") btn.set_action(xfer.request, Configuration.get_action(_("conf."), ""), close=CLOSE_NO) btn.set_location(0, row + 2, 4) xfer.add_component(btn) lab = XferCompLabelForm('accountingend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 3, 4) xfer.add_component(lab) return True else: return False
def fillresponse(self): current_year = FiscalYear.get_current() if self.item.type_load == 0: for year_item in FiscalYear.objects.filter( begin__gte=current_year.begin): costs = self.item.setcost_set.filter(year=year_item) if len(costs) == 0: self.item.create_new_cost(year=year_item.id) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0) self.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.item.name) lbl.set_location(1, 0) self.add_component(lbl) self.fill_grid( 0, CostAccounting, 'costaccounting', CostAccounting.objects.filter( setcost__set=self.item).order_by('-setcost__year__begin')) grid = self.get_components('costaccounting') grid.delete_header("is_default") new_actions = [] grid = self.get_components('costaccounting') for grid_action in grid.actions: if grid_action[0].icon_path.endswith('images/print.png'): new_actions.append(grid_action) grid.actions = new_actions grid.add_action(self.request, ClassCategoryBudget.get_action(), close=CLOSE_NO, unique=SELECT_SINGLE) self.add_action(WrapAction(TITLE_CLOSE, 'images/close.png'))
def fillresponse(self): if self.getparam('SAVE') is None: dlg = self.create_custom() dlg.item = self.item img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) dlg.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.caption) lbl.set_location(1, 0, 6) dlg.add_component(lbl) dlg.fill_from_model(1, 1, False, desc_fields=['parent']) parent = dlg.get_components('parent') parent.colspan = 3 self.add_components(dlg) dlg.add_action(self.get_action(TITLE_OK, "images/ok.png"), { 'close': CLOSE_YES, 'params': { 'SAVE': 'YES' } }) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png'), {}) else: if self.getparam("parent", 0) != 0: self.item = Folder.objects.get(id=self.getparam("parent", 0)) else: self.item = Folder() self.run_archive()
def fillresponse(self): if "SAVE" in self.params.keys(): del self.params["SAVE"] if self.has_changed: self.item.editor.before_save(self) try: self.item.save() self.has_changed = False if self.fill_manytomany_fields(): self.item.save() except IntegrityError as err: getLogger("lucterios.core.container").info("%s", err) six.print_(err) self.raise_except(_("This record exists yet!"), self.raise_except_class) if self.except_msg == '': self.item.editor.saving(self) if self.getparam('URL_TO_REDIRECT') is not None: url_text = self.getparam('URL_TO_REDIRECT') self.redirect_action(WrapAction('', '', url_text=url_text), params={self.field_id: self.item.id}) elif isinstance(self.redirect_to_show, six.text_type): self.redirect_action(ActionsManage.get_action_url( self.model.get_long_name(), self.redirect_to_show, self), params={self.field_id: self.item.id})
def fillresponse(self): legal = LegalEntity.objects.get(id=1) if self.getparam('CONFIRME') is None: dlg = self.create_custom() img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) dlg.add_component(img) lbl = XferCompLabelForm('lbl_title') lbl.set_location(1, 0, 2) lbl.set_value_as_header(self.caption) dlg.add_component(lbl) email = XferCompEdit('recipient') email.set_location(1, 1) email.set_value(legal.email) email.mask = r"[^@]+@[^@]+\.[^@]+" email.description = _("email") dlg.add_component(email) dlg.add_action(self.get_action(TITLE_OK, "images/ok.png"), close=CLOSE_YES, params={'CONFIRME': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: abs_url = self.request.META.get( 'HTTP_REFERER', self.request.build_absolute_uri()).split('/') self.item.http_root_address = '/'.join(abs_url[:-2]) send_email([self.getparam('recipient')], self.item.subject, self.item.email_content, files=self.item.attach_files) self.message(_("EMail send, check it."))
def fillresponse(self, show_only_failed=False): img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 6) self.add_component(img) begin = XferCompLabelForm('title') begin.set_location(1, 0, 2) begin.set_value_as_title(_('Transmission report')) self.add_component(begin) self.filltab_from_model(1, 1, True, [((_('date begin of send'), 'date_begin'), (_('date end of send'), 'date_end')), ('emailsent_set', )]) if not show_only_failed: grid = self.get_components('emailsent') grid.delete_header('error') check = XferCompCheck('show_only_failed') check.set_value(show_only_failed) check.description = _('Show only failed') check.set_location(1, 3, 2) check.set_action(self.request, self.get_action(), modal=FORMTYPE_REFRESH, close=CLOSE_NO) self.add_component(check) show_only_failed self.add_action(WrapAction(_('Close'), 'images/close.png'))
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 fillresponse(self): if not will_mail_send(): raise LucteriosException(IMPORTANT, _('Bad email parameter!')) legal = LegalEntity.objects.get(id=1) if self.getparam('CONFIRME') is None: dlg = self.create_custom() img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) dlg.add_component(img) lbl = XferCompLabelForm('lbl_title') lbl.set_location(1, 0, 2) lbl.set_value_as_header(self.caption) dlg.add_component(lbl) email = XferCompEdit('recipient') email.set_location(1, 1) email.set_value(legal.email) email.mask = r"[^@]+@[^@]+\.[^@]+" email.description = _("email") dlg.add_component(email) dlg.add_action(self.get_action(TITLE_OK, "images/ok.png"), close=CLOSE_YES, params={'CONFIRME': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: address = [] address.append("") address.append("") address.append(six.text_type(legal)) address.append(legal.address) address.append("%s %s" % (legal.postal_code, legal.city)) message = _('EMail sent to check configuration') message += "{[br/]}".join(address).replace('{[newline]}', "{[br/]}").replace("\n", '{[br/]}') bad_sended = send_email(self.getparam('recipient'), _("EMail try"), "<html><body>%s</body></html>" % message.replace('{[', '<').replace(']}', '>')) if len(bad_sended) != 0: raise EmailException(bad_sended) self.message(_("EMail send, check it."))
def show(self, xfer): LucteriosEditor.show(self, xfer) obj_addr = xfer.get_components('address') xfer.tab = obj_addr.tab new_col = obj_addr.col xfer.move(obj_addr.tab, 1, 0) img_path = get_user_path( "contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value( get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(new_col, obj_addr.row, 1, 6) xfer.add_component(img) if WrapAction.is_permission(xfer.request, 'contacts.add_abstractcontact'): if (len(self.item.__class__.get_select_contact_type(False)) > 0): btn = XferCompButton('btn_promote') btn.set_location(new_col + 1, xfer.get_max_row() + 1, 4) btn.set_action(xfer.request, ObjectPromote.get_action( _('Promote'), "images/config.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={ 'modelname': xfer.model.get_long_name(), 'field_id': xfer.field_id }) xfer.add_component(btn) signal_and_lock.Signal.call_signal("show_contact", self.item, xfer)
def fillresponse(self, ventilate=False): msg = self.item.check_close() if msg is not None: if self.getparam('CLOSE') is None: dlg = self.create_custom(self.model) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0) dlg.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.caption) lbl.set_location(1, 0, 2) dlg.add_component(lbl) lbl = XferCompLabelForm('info') lbl.set_value(_('This class load has a difference of %s between those call of funds and those expenses.') % msg) lbl.set_location(1, 1) dlg.add_component(lbl) lbl = XferCompCheck('ventilate') lbl.set_value(ventilate) lbl.set_location(1, 2) lbl.description = 'Do you want to ventilate this amount for each owner?' dlg.add_component(lbl) dlg.add_action(self.get_action(TITLE_OK, 'images/ok.png'), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={'CLOSE': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: if self.item.type_load == 0: self.item.close_current(ventilate) else: self.item.close_exceptional(ventilate) elif self.confirme(_('Do you want to close this class load?')): if self.item.type_load == 0: self.item.close_current() else: self.item.close_exceptional()
def test_connect_free(self): Params.clear() self.calljson('/CORE/authentification', {'username': '', 'password': ''}) self.assert_observer('core.auth', 'CORE', 'authentification') self.assert_json_equal('', '', 'BADAUTH') param = Parameter.objects.get(name='CORE-connectmode') param.value = '2' param.save() Params.clear() self.calljson('/CORE/authentification', {'username': '', 'password': ''}) self.assert_observer('core.auth', 'CORE', 'authentification') self.assert_json_equal('', '', 'OK') self.assertEqual(self.response_json['connexion']['LOGIN'], '') self.assertEqual(self.response_json['connexion']['REALNAME'], '') self.assertEqual(self.response_json['connexion']['MODE'], '2') self.assertTrue(WrapAction.mode_connect_notfree is not None, "mode_connect_notfree is not None") self.assertFalse(WrapAction('', '').mode_connect_notfree(), "mode_connect_notfree()") self.assertFalse(WrapAction.mode_connect_notfree is None or WrapAction('', '').mode_connect_notfree(), "mode_connect_notfree is None or mode_connect_notfree()") request = RequestFactory().post('/') request.user = AnonymousUser() act1 = WrapAction('free', 'free', is_view_right=None) self.assertEqual(act1.is_view_right, None, 'act1.is_view_right') self.assertFalse(act1.check_permission(request), 'check_permission None') act2 = WrapAction('free', 'free', is_view_right='CORE.change_parameter') act2.with_log = True self.assertEqual(act2.is_view_right, 'CORE.change_parameter', 'act2.is_view_right') self.assertTrue(act2.check_permission(request), 'check_permission CORE.change_parameter') self.calljson('/CORE/configuration', {}) self.assert_observer('core.custom', 'CORE', 'configuration') self.assert_json_equal('LABELFORM', "CORE-connectmode", "Accès libre") self.calljson('/CORE/menu', {}) self.assert_observer('core.menu', 'CORE', 'menu') self.assertEqual(len(self.response_json['menus']), 3) self.assertEqual(self.response_json['menus'][0]['id'], 'core.menu') self.assertEqual(self.response_json['menus'][1]['id'], 'dummy.foo') self.assertEqual(len(self.response_json['menus'][1]['menus']), 9) self.assertEqual(self.response_json['menus'][2]['id'], 'core.admin') self.assertEqual(self.response_json['menus'][2]['text'], 'Administration') self.assertEqual(self.response_json['menus'][2]['menus'][3]['id'], 'core.right') self.assertEqual(self.response_json['menus'][2]['menus'][3]['text'], 'Gestion des droits') self.assertEqual(self.response_json['menus'][2]['menus'][3]['menus'][0]['id'], 'CORE/groupsList') self.assertEqual(self.response_json['menus'][2]['menus'][3]['menus'][0]['text'], 'Les groupes')
def fillresponse(self, modelname, field_id): if modelname is not None: self.model = apps.get_model(modelname) self.field_id = field_id XferListEditor.fillresponse(self) if WrapAction.is_permission(self.request, 'contacts.add_abstractcontact'): self.get_components(self.field_id).add_action(self.request, ObjectMerge.get_action(_("Merge"), "images/clone.png"), close=CLOSE_NO, unique=SELECT_MULTI)
def fillresponse(self): XferSearchEditor.fillresponse(self) self.item.editor.add_email_selector(self, 0, self.get_max_row() + 1, 5) if WrapAction.is_permission(self.request, 'contacts.add_abstractcontact'): self.get_components(self.field_id).add_action(self.request, ObjectMerge.get_action(_("Merge"), "images/clone.png"), close=CLOSE_NO, unique=SELECT_MULTI, params={'modelname': self.model.get_long_name(), 'field_id': self.field_id}) self.add_action(AbstractContactFindDouble.get_action(_("duplicate"), "images/clone.png"), params={'modelname': self.model.get_long_name(), 'field_id': self.field_id}, pos_act=0)
def get_action(cls, caption=None, icon_path=None): if caption is None: caption = cls.caption if icon_path is None: icon_path = getattr(cls, 'icon', '') ret_act = WrapAction(caption, icon_path, url_text=cls.url_text, is_view_right=getattr(cls, 'is_view_right', None)) return ret_act
def fillresponse(self): 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, False, ['username']) self.add_action(IndividualUserValid.get_action(_('Ok'), 'images/ok.png')) self.add_action(WrapAction(_('Cancel'), 'images/cancel.png'))
def fill_buttons(self): self.add_action(FiscalYearReportPrint.get_action( TITLE_PRINT, "images/print.png"), close=CLOSE_NO, params={ "modulename": __name__, 'classname': self.__class__.__name__ }) self.add_action(WrapAction(TITLE_CLOSE, 'images/close.png'))
def fillresponse(self): self.caption = self.caption 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, 0, True, ['name', 'type_load']) self.fill_from_model(1, 0, False, ['set_of_lots']) self.add_action(self.get_action(TITLE_OK, 'images/ok.png'), params={"SAVE": "YES"}) self.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png'))
def fillresponse(self): if self.getparam("CONVERT") is None: dlg = self.create_custom() img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0) dlg.add_component(img) lbl = XferCompLabelForm('title') lbl.set_value_as_title(self.caption) lbl.set_location(1, 0) dlg.add_component(lbl) year_list = [ "{[i]} - %s{[/i]}" % year for year in FiscalYear.objects.filter( status__in=(FiscalYear.STATUS_BUILDING, FiscalYear.STATUS_RUNNING)) ] lab = XferCompLabelForm('info') lab.set_value( _("This conversion tool will change your account to respect French law about condominium.{[br/]}For the no-closed fiscal years:{[newline]}%s{[newline]}It will do:{[newline]} - To change accounting code for each owners.{[newline]} - To de-validate all your entity.{[br/]} - To delete all entity link to call of funds or expenses.{[br/]} - To de-archive call of funds or expenses.{[br/]} - To generate correct account for call of funds or expenses.{[br/]}{[center]}{[u]}{[b]}Warning: This action is definitive.{[/b]}{[/u]}{[center]}" ) % '{[br/]}'.join(year_list)) lab.set_location(0, 1, 4) dlg.add_component(lab) dlg.new_tab(_("Third accounts")) self.fill_third_convert(dlg) dlg.new_tab(_("Parameters")) fill_params(dlg, True, True) dlg.add_action(self.return_action(TITLE_OK, 'images/ok.png'), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={'CONVERT': 'YES'}) dlg.add_action(WrapAction(TITLE_CANCEL, 'images/cancel.png')) else: Parameter.change_value('condominium-old-accounting', False) Params.clear() try: thirds_convert = self.get_thirds_convert() for set_cost in SetCost.objects.filter( year__status=2, cost_accounting__status=0): set_cost.cost_accounting.is_protected = True set_cost.cost_accounting.save() if (set_cost.year.status == FiscalYear.STATUS_FINISHED ) and (set_cost.cost_accounting.status == CostAccounting.STATUS_OPENED): set_cost.cost_accounting.close() for owner in Owner.objects.all(): owner.check_account() for year in FiscalYear.objects.filter( status__in=(FiscalYear.STATUS_BUILDING, FiscalYear.STATUS_RUNNING)): convert_accounting(year, thirds_convert) except BaseException: Params.clear() raise self.message(_("Data converted"))
def return_action(self, caption=None, icon_path=None): if caption is None: caption = self.caption if icon_path is None: icon_path = getattr(self, 'icon', '') ret_act = WrapAction(caption, icon_path, url_text=self.url_text, is_view_right=getattr(self, 'is_view_right', None)) return ret_act
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 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_invoice(contact, xfer): if WrapAction.is_permission(xfer.request, 'invoice.change_bill'): third = Third.objects.filter(contact_id=contact.id) if len(third) == 1: third = third[0] xfer.new_tab(_("Financial")) nb_build = len(Bill.objects.filter(third=third, status=0)) nb_valid = len(Bill.objects.filter(third=third, status=1)) lab = XferCompLabelForm('invoiceinfo') lab.set_value_as_header(_("There are %(build)d bills in building and %(valid)d validated") % {'build': nb_build, 'valid': nb_valid}) lab.set_location(0, 5, 2) xfer.add_component(lab)
def fillresponse(self): if self.item.id is None: raise LucteriosException(IMPORTANT, _("This record not exist!\nRefresh your application.")) max_row = self.get_max_row() + 1 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, max_row, True) for act, opt in ActionsManage.get_actions(ActionsManage.ACTION_IDENT_SHOW, self, key=action_list_sorted): self.add_action(act, **opt) self.add_action(WrapAction(_('Close'), 'images/close.png')) add_auditlog_button(self, self.item, 0, max(6, self.get_max_row()) + 20)
def _get_from_selector(self): if not isinstance(self.selector, list) and (self.selector is not None): raise LucteriosException(GRAVE, "Error of print selector!") gui = XferContainerCustom() gui.model = self.model gui._initialize(self.request) gui.is_view_right = self.is_view_right gui.caption = self.caption gui.extension = self.extension gui.action = self.action gui.params = self.params pdfreport = self.get_persistent_pdfreport() if (pdfreport is not None) and (not isinstance(pdfreport, list) or len(pdfreport) == len(self.items)): presitent_report = XferCompCheck('PRINT_PERSITENT') presitent_report.set_value(True) presitent_report.set_location(0, 0, 2) presitent_report.description = _('Get saved report') presitent_report.java_script = """ var is_persitent=current.getValue(); parent.get('PRINT_MODE').setEnabled(!is_persitent); parent.get('print_sep').setEnabled(!is_persitent); """ if self.selector is not None: for name_selector, _selector, _selector in self.selector: presitent_report.java_script += "parent.get('%s').setEnabled(!is_persitent);\n" % name_selector gui.add_component(presitent_report) sep = XferCompLabelForm('print_sep') sep.set_value_center(self.PRINT_REGENERATE_MSG) sep.set_location(0, 1, 2) gui.add_component(sep) elif (pdfreport is not None): sep = XferCompLabelForm('print_sep') sep.set_value_center(self.PRINT_WARNING_SAVING_MSG) sep.set_location(0, 1, 2) gui.add_component(sep) print_mode = XferCompSelect('PRINT_MODE') print_mode.set_select(self.print_selector) print_mode.set_value(PRINT_PDF_FILE) print_mode.set_location(0, 2, 2) print_mode.description = _('Kind of report') gui.add_component(print_mode) if self.selector is not None: self._add_option_selectors(gui) gui.add_action(self.return_action(_("Print"), "images/print.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES) gui.add_action(WrapAction(_("Close"), "images/close.png")) return gui
def permission(self, right_admin, request): getLogger('lucterios.plugin').debug("right_admin='%s' request='%s'", right_admin, request) if WrapAction.mode_connect_notfree(): if request.user.is_authenticated: if request.user.is_superuser: return True elif not right_admin and (request.user.id is not None): plugin_permissions = PluginManager.get_param() if PluginManager.get_param is not None else {} if self.name in plugin_permissions: permsgroups = request.user.groups.filter(id__in=plugin_permissions[self.name]) return len(permsgroups) > 0 return False else: return True
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 thirdaddon_condo(item, xfer): if WrapAction.is_permission(xfer.request, 'condominium.change_set'): try: owner = Owner.objects.get(third=item) xfer.new_tab(_('Condominium')) old_item = xfer.item xfer.item = owner xfer.filltab_from_model(0, 1, True, Owner.get_show_fields_in_third()) xfer.item = old_item btn = XferCompButton('condobtn') btn.set_location(0, 5, 2) btn.set_action(xfer.request, OwnerShow.get_action(TITLE_EDIT, 'images/edit.png'), close=CLOSE_NO, modal=FORMTYPE_MODAL, params={'owner': owner.id}) xfer.add_component(btn) except ObjectDoesNotExist: pass
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 show_contact_accounting(contact, xfer): if WrapAction.is_permission(xfer.request, 'accounting.change_entryaccount'): main_third = None thirds = Third.objects.filter(contact_id=contact.id) if len(thirds) > 1: main_third = thirds[0] alias_third = [] for third in thirds: if third.id != main_third.id: alias_third.append(third) main_third.merge_objects(alias_third) elif len(thirds) == 1: main_third = thirds[0] if main_third is not None: xfer.new_tab(_("Financial")) xfer.item = main_third xfer.filltab_from_model(0, 0, True, ["status", ((_('total'), 'total'),)]) btn = XferCompButton('show_third') btn.set_location(0, 50, 2) btn.set_action(xfer.request, ActionsManage.get_action_url('accounting.Third', 'Show', xfer), modal=FORMTYPE_MODAL, close=CLOSE_NO, params={"third": six.text_type(main_third.id)}) xfer.add_component(btn) xfer.item = contact
def show(self, xfer): LucteriosEditor.show(self, xfer) obj_addr = xfer.get_components('address') xfer.tab = obj_addr.tab new_col = obj_addr.col xfer.move(obj_addr.tab, 1, 0) img_path = get_user_path("contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value(get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(new_col, obj_addr.row, 1, 6) xfer.add_component(img) if WrapAction.is_permission(xfer.request, 'contacts.add_abstractcontact'): if (len(self.item.__class__.get_select_contact_type(False)) > 0): btn = XferCompButton('btn_promote') btn.set_location(new_col + 1, xfer.get_max_row() + 1, 4) btn.set_action(xfer.request, ObjectPromote.get_action(_('Promote'), "images/config.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={'modelname': xfer.model.get_long_name(), 'field_id': xfer.field_id}) xfer.add_component(btn) signal_and_lock.Signal.call_signal("show_contact", self.item, xfer)
def summary_invoice(xfer): is_right = WrapAction.is_permission(xfer.request, 'invoice.change_bill') contacts = [] if not xfer.request.user.is_anonymous(): for contact in Individual.objects.filter(user=xfer.request.user): contacts.append(contact.id) for contact in LegalEntity.objects.filter(responsability__individual__user=xfer.request.user): contacts.append(contact.id) if is_right or (len(contacts) > 0): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('invoicetitle') lab.set_value_as_infocenter(_("Invoice")) lab.set_location(0, row, 4) xfer.add_component(lab) if len(contacts) > 0: nb_build = len(Bill.objects.filter(third__contact_id__in=contacts)) row = xfer.get_max_row() + 1 lab = XferCompLabelForm('invoicecurrent') lab.set_value_as_header(_("You are %d bills") % nb_build) lab.set_location(0, row, 4) xfer.add_component(lab) if is_right: row = xfer.get_max_row() + 1 nb_build = len(Bill.objects.filter(status=0)) nb_valid = len(Bill.objects.filter(status=1)) lab = XferCompLabelForm('invoiceinfo') lab.set_value_as_header(_("There are %(build)d bills in building and %(valid)d validated") % {'build': nb_build, 'valid': nb_valid}) lab.set_location(0, row + 1, 4) xfer.add_component(lab) if is_right or (len(contacts) > 0): lab = XferCompLabelForm('invoicesep') lab.set_value_as_infocenter("{[hr/]}") lab.set_location(0, row + 2, 4) xfer.add_component(lab) return True else: return False
def summary_member(xfer): is_right = WrapAction.is_permission(xfer.request, 'member.change_adherent') try: current_adherent = Adherent.objects.get(user=xfer.request.user) except: current_adherent = None if is_right or (current_adherent is not None): row = xfer.get_max_row() + 1 lab = XferCompLabelForm('membertitle') lab.set_value_as_infocenter(_("Adherents")) lab.set_location(0, row, 4) xfer.add_component(lab) if current_adherent is not None: ident = [] if Params.getvalue("member-numero"): ident.append("%s %s" % (_('numeros'), current_adherent.num)) if Params.getvalue("member-licence-enabled"): current_license = current_adherent.license if current_license is not None: ident.append(current_license) row = xfer.get_max_row() + 1 lab = XferCompLabelForm('membercurrent') lab.set_value_as_header("{[br/]}".join(ident)) lab.set_location(0, row, 4) xfer.add_component(lab) if is_right: row = xfer.get_max_row() + 1 try: current_season = Season.current_season() dateref = current_season.date_ref lab = XferCompLabelForm('memberseason') lab.set_value_as_headername(six.text_type(current_season)) lab.set_location(0, row + 1, 4) xfer.add_component(lab) nb_adh = len(Adherent.objects.filter(Q(subscription__begin_date__lte=dateref) & Q( subscription__end_date__gte=dateref) & Q(subscription__status=2))) lab = XferCompLabelForm('membernb') lab.set_value_as_header(_("Active adherents: %d") % nb_adh) lab.set_location(0, row + 2, 4) xfer.add_component(lab) nb_adhcreat = len(Adherent.objects.filter( Q(subscription__begin_date__lte=dateref) & Q(subscription__end_date__gte=dateref) & Q(subscription__status=1))) if nb_adhcreat > 0: lab = XferCompLabelForm('memberadhcreat') lab.set_value_as_header(_("No validated adherents: %d") % nb_adhcreat) lab.set_location(0, row + 3, 4) xfer.add_component(lab) nb_adhwait = len(Adherent.objects.filter( Q(subscription__begin_date__lte=dateref) & Q(subscription__end_date__gte=dateref) & Q(subscription__status=0))) if nb_adhwait > 0: lab = XferCompLabelForm('memberadhwait') lab.set_value_as_header(_("Adherents waiting moderation: %d") % nb_adhwait) lab.set_location(0, row + 4, 4) xfer.add_component(lab) except LucteriosException as lerr: lbl = XferCompLabelForm("member_error") lbl.set_value_center(six.text_type(lerr)) lbl.set_location(0, row + 1, 4) xfer.add_component(lbl) if is_right or (current_adherent is not None): lab = XferCompLabelForm('member') lab.set_value_as_infocenter("{[hr/]}") lab.set_location(0, row + 5, 4) xfer.add_component(lab) return True else: return False