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): 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 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 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 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 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 fillresponse(self): img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) self.add_component(img) lbl = XferCompLabelForm('lbl_title') lbl.set_location(1, 0, 2) lbl.set_value_as_header(_("To receive by email your login and a new password.")) self.add_component(lbl) email = XferCompEdit('email') email.set_location(1, 1) email.mask = r"[^@]+@[^@]+\.[^@]+" email.description = _("email") self.add_component(email) self.add_action(AskPasswordAct.get_action(_('Ok'), 'images/ok.png')) self.add_action(WrapAction(_('Cancel'), 'images/cancel.png'))
def fill_current_folder(self, new_col, new_row): lbl = XferCompLabelForm('title_folder') if self.current_folder > 0: folder_obj = FolderContainer.objects.get(id=self.current_folder) lbl.set_value(folder_obj.get_title()) folder_description = folder_obj.description else: folder_obj = None lbl.set_value('>') folder_description = "" lbl.set_location(new_col, new_row) lbl.description = _("current folder:") self.add_component(lbl) lbl = XferCompLabelForm('desc_folder') lbl.set_value_as_header(folder_description) lbl.set_location(new_col, new_row + 1) self.add_component(lbl) if self.current_folder > 0: btn_return = XferCompButton('return') btn_return.set_location(new_col + 1, new_row) btn_return.set_is_mini(True) btn_return.set_action(self.request, self.get_action('', 'images/left.png'), params={ 'current_folder': self.item.parent_id if self.item.parent_id is not None else 0 }, modal=FORMTYPE_REFRESH, close=CLOSE_NO) self.add_component(btn_return) btn_edit = XferCompButton('edit') btn_edit.set_location(new_col + 1, new_row + 1) btn_edit.set_is_mini(True) btn_edit.set_action(self.request, FolderAddModify.get_action( '', 'images/edit.png'), params={'folder': self.current_folder}, close=CLOSE_NO) self.add_component(btn_edit) return folder_obj
def fill_current_folder(self, new_col, new_row): lbl = XferCompLabelForm('lblcat') lbl.set_value_as_name(_("current folder:")) lbl.set_location(new_col, new_row) self.add_component(lbl) lbl = XferCompLabelForm('lbltitlecat') if self.current_folder > 0: folder_obj = Folder.objects.get(id=self.current_folder) lbl.set_value(folder_obj.get_title()) folder_description = folder_obj.description else: folder_obj = None lbl.set_value('>') folder_description = "" lbl.set_location(new_col + 1, new_row) self.add_component(lbl) lbl = XferCompLabelForm('lbldesc') lbl.set_value_as_header(folder_description) lbl.set_location(new_col + 2, new_row, 2) self.add_component(lbl) return folder_obj
def fill_current_folder(self, new_col, new_row): lbl = XferCompLabelForm('lblcat') lbl.set_value_as_name(_("current folder:")) lbl.set_location(new_col, new_row) self.add_component(lbl) lbl = XferCompLabelForm('lbltitlecat') if self.current_folder > 0: folder_obj = Folder.objects.get(id=self.current_folder) lbl.set_value(folder_obj.get_title()) folder_description = folder_obj.description else: folder_obj = None lbl.set_value('>') folder_description = "" lbl.set_location(new_col + 1, new_row) self.add_component(lbl) lbl = XferCompLabelForm('lbldesc') lbl.set_value_as_header(folder_description) lbl.set_location(new_col + 2, new_row, 2) self.add_component(lbl) return folder_obj
def situation_condo(xfer): if not hasattr(xfer, 'add_component'): return len(get_owners(xfer)) == 1 else: owners = get_owners(xfer.request) if 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) lab = XferCompLabelForm('condoowner') lab.set_value(_('You are a owner')) lab.set_location(0, row + 1, 2) xfer.add_component(lab) part_description = [] for part in owners[0].partition_set.filter(set__is_active=True): part_description.append("{[b]}%s{[/b]} %d (%s)" % (part.set, part.value, part.ratio)) lab = XferCompLabelForm('part') lab.set_value("{[br/]}".join(part_description)) lab.set_location(0, row + 2, 4) xfer.add_component(lab) lab = XferCompLabelForm('balancetitle') lab.set_value_as_header(_("Your owner's balance")) lab.set_location(0, row + 3) xfer.add_component(lab) lab = XferCompLabelForm('balance') lab.set_value(owners[0].third.total) lab.set_location(1, row + 3, 3) xfer.add_component(lab) lab = XferCompLabelForm('condosep') lab.set_value_as_infocenter("{[hr/]}") lab.set_location(0, row + 5, 4) xfer.add_component(lab) return True else: return False
def summary_contacts(xfer): is_right = WrapAction.is_permission(xfer.request, 'contacts.change_abstractcontact') current_individual = None if not xfer.request.user.is_anonymous(): try: current_individual = Individual.objects.get(user=xfer.request.user) row = xfer.get_max_row() + 1 lab = XferCompLabelForm('contactsidentity') lab.set_value_as_header(six.text_type(current_individual)) lab.set_location(0, row, 4) xfer.add_component(lab) except: current_individual = None if is_right: 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) if is_right or (current_individual is not None): 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 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 fillresponse(self): img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 3) self.add_component(img) lbl = XferCompLabelForm('lbl_title') lbl.set_location(1, 0, 2) lbl.set_value_as_header( _("To receive by email your login and a new password.")) self.add_component(lbl) lbl = XferCompLabelForm('lbl_email') lbl.set_location(1, 1) lbl.set_value_as_name(_("email")) self.add_component(lbl) pwd = XferCompEdit('email') pwd.set_location(2, 1) self.add_component(pwd) self.add_action( AskPasswordAct.get_action(_('Ok'), 'images/ok.png'), {}) self.add_action(WrapAction(_('Cancel'), 'images/cancel.png'), {})
def situation_contacts(xfer): if not hasattr(xfer, 'add_component'): try: Individual.objects.get(user=xfer.user) return True except Exception: return False else: if not xfer.request.user.is_anonymous: try: current_individual = Individual.objects.get(user=xfer.request.user) row = xfer.get_max_row() + 1 lab = XferCompLabelForm('contactsidentity') lab.set_value_as_header(six.text_type(current_individual)) lab.set_location(0, row, 4) xfer.add_component(lab) lab = XferCompLabelForm('contactsend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 1, 4) xfer.add_component(lab) return True except Exception: return False
def situation_contacts(xfer): if not hasattr(xfer, 'add_component'): try: Individual.objects.get(user=xfer.user) return True except Exception: return False else: if not xfer.request.user.is_anonymous: try: current_individual = Individual.objects.get(user=xfer.request.user) row = xfer.get_max_row() + 1 lab = XferCompLabelForm('contactsidentity') lab.set_value_as_header(six.text_type(current_individual)) lab.set_location(0, row, 4) xfer.add_component(lab) lab = XferCompLabelForm('contactsend') lab.set_value_center('{[hr/]}') lab.set_location(0, row + 1, 4) xfer.add_component(lab) return True except Exception: return False
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
def fillresponse(self, season): if season is None: working_season = Season.current_season() else: working_season = Season.objects.get(id=season) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0) self.add_component(img) sel = XferCompSelect('season') sel.set_needed(True) sel.set_select_query(Season.objects.all()) sel.set_value(working_season.id) sel.set_location(1, 0) sel.description = _('season') sel.set_action(self.request, self.get_action('', ''), modal=FORMTYPE_REFRESH, close=CLOSE_NO) self.add_component(sel) stat_result = Degree.get_statistic(working_season) if len(stat_result) == 0: lab = XferCompLabelForm('lbl_season') lab.set_color('red') lab.set_value_as_infocenter(_('no degree!')) lab.set_location(1, 1, 2) self.add_component(lab) else: total = 0 pos_y = 2 for activity, sublist in stat_result: subtotal = 0 if activity is not None: lab = XferCompLabelForm("lblactivite_%d" % activity.id) lab.set_italic() lab.set_value(six.text_type(activity)) lab.set_location(0, pos_y, 3) self.add_component(lab) pos_y += 1 for degree_name, val in sublist: lab = XferCompLabelForm("title_%d" % pos_y) lab.set_value(degree_name) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("val_%d" % pos_y) lab.set_value(six.text_type(val)) lab.set_location(2, pos_y) self.add_component(lab) subtotal += val total += val pos_y += 1 if activity is not None: lab = XferCompLabelForm("lblsubtotal_%d" % activity.id) lab.set_value_as_header(_("Total")) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("subtotal_%d" % activity.id) lab.set_italic() lab.set_value(six.text_type(subtotal)) lab.set_location(2, pos_y) self.add_component(lab) pos_y += 1 lab = XferCompLabelForm("lbltotal") lab.set_value_as_headername(_("Total")) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("total") lab.set_value_as_name(six.text_type(total)) lab.set_location(2, pos_y) self.add_component(lab) self.add_action(DegreeStatisticPrint.get_action( TITLE_PRINT, "images/print.png"), close=CLOSE_NO, params={'classname': self.__class__.__name__}) self.add_action(WrapAction(TITLE_CLOSE, 'images/close.png'))
def selector_from_model(self, col, row, field_name): dep_field = self.item._meta.get_field( field_name) if (not dep_field.auto_created or dep_field.concrete) and (dep_field.is_relation and dep_field.many_to_many): if hasattr(self.item, field_name + "__titles"): title_available, title_chosen = getattr( self.item, field_name + "__titles") else: title_available, title_chosen = _("Available"), _("Chosen") availables = get_corrected_setquery( dep_field.remote_field.model.objects.all()) java_script_init, java_script_treat = self._get_scripts_for_selectors( field_name, availables) lbl = XferCompLabelForm('hd_' + field_name + '_available') lbl.set_location(col + 1, row, 1, 1) lbl.set_value_as_header(title_available) self.add_component(lbl) lista = XferCompCheckList(field_name + '_available') lista.set_location(col + 1, row + 1, 1, 5) lista.set_size(200, 250) self.add_component(lista) lbl = XferCompLabelForm('hd_' + field_name + '_chosen') lbl.set_location(col + 3, row, 1, 1) lbl.set_value_as_header(title_chosen) self.add_component(lbl) listc = XferCompCheckList(field_name + '_chosen') listc.set_location(col + 3, row + 1, 1, 5) listc.set_size(200, 250) self.add_component(listc) btn_idx = 0 for (button_name, button_title, button_script) in [("addall", ">>", """ if (%(comp)s_current !== null) { %(comp)s_valid =''; for (var key in %(comp)s_dico) { if (%(comp)s_valid !== '') %(comp)s_valid +=';'; %(comp)s_valid +=key; } parent.mContext.put('%(comp)s',%(comp)s_valid); } """), ("add", ">", """ if (%(comp)s_current !== null) { var value = parent.get('%(comp)s_available').getValue(); if (%(comp)s_valid !== '') %(comp)s_valid +=';'; %(comp)s_valid +=value; parent.mContext.put('%(comp)s',%(comp)s_valid); } """), ("del", "<", """ if (%(comp)s_current !== null) { var values = parent.get('%(comp)s_chosen').getValue().split(';'); var valid_list = %(comp)s_valid.split(';'); %(comp)s_valid =''; for (var key in valid_list) { selected_val = valid_list[key]; if (values.indexOf(selected_val) === -1) { if (%(comp)s_valid !== '') %(comp)s_valid +=';'; %(comp)s_valid +=selected_val; } } parent.mContext.put('%(comp)s',%(comp)s_valid); } """), ("delall", "<<", """ if (%(comp)s_current !== null) { %(comp)s_valid =''; parent.mContext.put('%(comp)s',%(comp)s_valid); } """)]: btn = XferCompButton(field_name + '_' + button_name) btn.set_action( self.request, WrapAction(button_title, ""), {'close': CLOSE_NO}) btn.set_location(col + 2, row + 1 + btn_idx, 1, 1) btn.set_is_mini(True) btn.java_script = java_script_init + \ button_script % {'comp': field_name} + java_script_treat self.add_component(btn) btn_idx += 1
def fillresponse(self, modelname, quotechar="'", delimiter=";", encoding="utf-8", dateformat="%d/%m/%Y", step=0): def add_item_if_not_null(new_item): if new_item is not None: self.items_imported[new_item.id] = new_item if modelname is not None: self.model = apps.get_model(modelname) self.quotechar = quotechar self.delimiter = delimiter self.encoding = encoding self.dateformat = dateformat img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0, 1, 6) self.add_component(img) if step == 0: lbl = self._select_csv_parameters() step = 1 elif step == 1: lbl = XferCompLabelForm('modelname') lbl.set_value(self.model._meta.verbose_name.title()) lbl.set_location(1, 0) lbl.description = _('model') self.add_component(lbl) self._read_csv() self.new_tab(_("Fields")) self._select_fields() self.new_tab(_("Current content")) self._show_initial_csv() step = 2 elif step == 2: lbl = XferCompLabelForm('modelname') lbl.set_value(self.model._meta.verbose_name.title()) lbl.set_location(1, 0) lbl.description = _('model') self.add_component(lbl) fields_description, csv_readed = self._read_csv_and_convert() tbl = XferCompGrid('CSV') for field_description in fields_description: tbl.add_header(field_description[0], field_description[1], field_description[2], formatstr=field_description[3]) row_idx = 1 for row in csv_readed: for field_description in fields_description: tbl.set_value(row_idx, field_description[0], row[field_description[0]]) row_idx += 1 tbl.set_location(1, 1, 2) self.add_component(tbl) lbl = XferCompLabelForm('nb_line') lbl.set_value(_("Total number of items: %d") % (row_idx - 1)) lbl.set_location(1, 2, 2) self.add_component(lbl) step = 3 elif step == 3: fields_description, csv_readed = self._read_csv_and_convert() self.model.initialize_import() self.items_imported = {} for rowdata in csv_readed: add_item_if_not_null(self.model.import_data(rowdata, dateformat)) add_item_if_not_null(self.model.finalize_import()) lbl = XferCompLabelForm('result') lbl.set_value_as_header(_("%d items are been imported") % len(self.items_imported)) lbl.set_location(1, 2, 2) self.add_component(lbl) step = 4 if step < 4: if step > 1: self.add_action(self.get_action(_('Back'), "images/left.png"), close=CLOSE_NO, modal=FORMTYPE_REFRESH, params={'step': step - 2}) self.add_action(self.get_action(_('Ok'), "images/ok.png"), close=CLOSE_NO, modal=FORMTYPE_REFRESH, params={'step': step}) self.add_action(WrapAction(_("Cancel"), "images/cancel.png")) else: self.add_action(WrapAction(_("Close"), "images/close.png"))
def fillresponse(self, season): if season is None: working_season = Season.current_season() else: working_season = Season.objects.get(id=season) img = XferCompImage('img') img.set_value(self.icon_path()) img.set_location(0, 0) self.add_component(img) lab = XferCompLabelForm('lbl_season') lab.set_value_as_name(_('season')) lab.set_location(1, 0) self.add_component(lab) sel = XferCompSelect('season') sel.set_needed(True) sel.set_select_query(Season.objects.all()) sel.set_value(working_season.id) sel.set_location(2, 0) sel.set_action(self.request, self.get_action('', ''), modal=FORMTYPE_REFRESH, close=CLOSE_NO) self.add_component(sel) stat_result = Degree.get_statistic(working_season) if len(stat_result) == 0: lab = XferCompLabelForm('lbl_season') lab.set_color('red') lab.set_value_as_infocenter(_('no degree!')) lab.set_location(1, 1, 2) self.add_component(lab) else: total = 0 pos_y = 2 for activity, sublist in stat_result: subtotal = 0 if activity is not None: lab = XferCompLabelForm("lblactivite_%d" % activity.id) lab.set_italic() lab.set_value(six.text_type(activity)) lab.set_location(0, pos_y, 3) self.add_component(lab) pos_y += 1 for degree_name, val in sublist: lab = XferCompLabelForm("title_%d" % pos_y) lab.set_value(degree_name) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("val_%d" % pos_y) lab.set_value(six.text_type(val)) lab.set_location(2, pos_y) self.add_component(lab) subtotal += val total += val pos_y += 1 if activity is not None: lab = XferCompLabelForm("lblsubtotal_%d" % activity.id) lab.set_value_as_header(_("Total")) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("subtotal_%d" % activity.id) lab.set_italic() lab.set_value(six.text_type(subtotal)) lab.set_location(2, pos_y) self.add_component(lab) pos_y += 1 lab = XferCompLabelForm("lbltotal") lab.set_value_as_headername(_("Total")) lab.set_location(1, pos_y) self.add_component(lab) lab = XferCompLabelForm("total") lab.set_value_as_name(six.text_type(total)) lab.set_location(2, pos_y) self.add_component(lab) self.add_action(DegreeStatisticPrint.get_action(TITLE_PRINT, "images/print.png"), close=CLOSE_NO, params={'classname': self.__class__.__name__}) self.add_action(WrapAction(TITLE_CLOSE, 'images/close.png'))