def get_slave_summary(self, obj, ar): vtypes = set() for m in dd.models_by_base(vat.VatDocument): vtypes.add( VoucherTypes.get_by_value(dd.full_model_name(m))) elems = [] actions = [] def add_action(btn): if btn is None: return False actions.append(btn) return True for jnl in Journal.objects.filter(voucher_type__in=vtypes): sar = ar.spawn( InvoicesByJournal, master_instance=jnl, known_values=dict(partner=obj)) # logger.info( # "20140604 sar.requesting_panel %s", # sar.requesting_panel) if add_action(sar.insert_button(unicode(jnl), icon_name=None)): actions.append(' ') elems += [E.br(), _("Create voucher in journal ")] + actions return E.div(*elems)
def update_reminders_for_user(user,ar): n = 0 for model in dd.models_by_base(EventGenerator): for obj in model.objects.filter(user=user): obj.update_reminders(ar) #~ logger.info("--> %s",unicode(obj)) n += 1 return n
def get_invoiceables_for(cls, partner, max_date=None): if settings.SITE.site_config.site_company: if partner.id == settings.SITE.site_config.site_company.id: return #~ logger.info('20130711 get_invoiceables_for (%s,%s)', partner, max_date) for m in dd.models_by_base(cls): flt = m.get_partner_filter(partner) qs = m.objects.filter(flt) for obj in qs.order_by(m.invoiceable_date_field): if obj.get_invoiceable_product() is not None: yield obj
def get_data_rows(self, ar): obj = ar.master_instance rows = [] if obj is not None: for M in dd.models_by_base(vat.VatDocument): rows += list(M.objects.filter(partner=obj)) def by_date(a, b): return cmp(b.date, a.date) rows.sort(by_date) return rows
def run_from_ui(self,ar,**kw): row = ar.selected_rows[0] #~ self.client_model = dd.resolve_model(self.client_model) cmc = list(dd.models_by_base(BeIdCardHolder)) if len(cmc) != 1: raise Exception("There must be exactly one BeIdCardHolder model in your Site!") self.client_model = cmc[0] data = ar.request.POST attrs = self.used_plugin.card2client(data) #~ logger.info("20130103 BeIdReadCardAction.run_from_ui() : %s -> %s",data,attrs) #~ print 20121117, attrs #~ ssin = data['nationalNumber'] #~ ssin = attrs['national_id'] qs = self.client_model.objects.filter(national_id=attrs['national_id']) if not row.national_id and qs.count() == 0: row.national_id = attrs['national_id'] row.full_clean() row.save() #~ qs = self.client_model.objects.filter(national_id=attrs['national_id']) elif row.national_id != attrs['national_id']: if qs.count() > 1: return ar.error(self.sorry_msg % _("There is more than one client with national id %(national_id)s in our database.") % attrs) if qs.count() == 0: fkw = dict(last_name__iexact=attrs['last_name'],first_name__iexact=attrs['first_name']) """ if a client with same last_name and first_name exists, the user cannot (automatically) create a new client from eid card. """ #~ fkw.update(national_id__isnull=True) qs = self.client_model.objects.filter(**fkw) if qs.count() == 0: def yes(ar): obj = self.client_model(**attrs) obj.full_clean() obj.save() #~ changes.log_create(ar.request,obj) dd.pre_ui_create.send(obj,request=ar.request) return self.goto_client_response(ar,obj, _("New client %s has been created") % obj) return ar.confirm(yes, _("Create new client %(first_name)s %(last_name)s : Are you sure?") % attrs) elif qs.count() > 1: return ar.error(self.sorry_msg % _("There is more than one client named %(first_name)s %(last_name)s in our database.") % attrs,alert=_("Oops!")) assert qs.count() == 1 row = qs[0] return self.process_row(ar,row,attrs)
def objects(): ExcerptType = dd.resolve_model('excerpts.ExcerptType') for cls in dd.models_by_base(Certifiable): kw = dd.str2kw(cls._meta.verbose_name, 'name') if False: kw.update(backward_compat=True) yield ExcerptType( template='Default.odt', primary=True, certifying=True, content_type=ContentType.objects.get_for_model(cls), **kw)
def collect(m): for c in dd.models_by_base(m): #~ if c is not m and (m in c.__bases__): #~ if c is not m: #~ if m in c.__bases__: if c is not m: ok = True #~ for cb in c.__bases__: #~ if cb in m.mro(): #~ ok = False if ok: pairs.append( (m._meta.verbose_name, c._meta.verbose_name)) collect(c)
def site_setup(site): if site.is_installed('products'): site.modules.products.Products.add_detail_tab("sales", """ sales.InvoiceItemsByProduct """, label=MODULE_LABEL) #~ for t in (site.modules.partners.Partners, #~ site.modules.partners.Persons, #~ site.modules.partners.Organisations): for m in dd.models_by_base(site.modules.contacts.Partner): t = m.get_default_table() if not hasattr(t.detail_layout,'sales'): t.add_detail_tab("sales", """ invoicing_address vat_regime imode payment_term sales.InvoicesByPartner """, label=MODULE_LABEL)
def get_invoiceables_for(cls,partner,max_date=None): if settings.SITE.site_config.site_company: if partner.id == settings.SITE.site_config.site_company.id: return #~ logger.info('20130711 get_invoiceables_for (%s,%s)', partner, max_date) for m in dd.models_by_base(cls): flt = m.get_partner_filter(partner) #~ fkw = dict() #~ fkw[m.invoiceable_partner_field] = partner #~ fkw.update(invoice__isnull=True) #~ if max_date is not None: #~ fkw["%s__lte" % m.invoiceable_date_field] = max_date #~ logger.info('20130711 %s %s', m, fkw) qs = m.objects.filter(flt) #~ qs = qs.exclude(company=settings.SITE.site_config.site_company) for obj in qs.order_by(m.invoiceable_date_field): if obj.get_invoiceable_product() is not None: yield obj
def holder_model(): cmc = list(dd.models_by_base(BeIdCardHolder)) if len(cmc) != 1: raise Exception( "There must be exactly one BeIdCardHolder model in your Site!") return cmc[0]
def on_post_analyze(sender, **kw): for m in dd.models_by_base(VatDocument): dd.post_init.connect(set_default_item_vat, sender=m)