def update_problems(self, obj, delete=True, fix=False): """Update the problems of this checker and the specified object. When `delete` is False, the caller is responsible for deleting any existing objects. """ Problem = rt.modules.plausibility.Problem if delete: gfk = Problem.owner qs = Problem.objects.filter(**gfk2lookup(gfk, obj, checker=self)) qs.delete() done = [] todo = [] for fixable, msg in self.get_plausibility_problems(obj, fix): if fixable: msg = "(\u2605) " + unicode(msg) if fixable and fix: done.append(msg) else: todo.append(msg) if len(todo): user = self.get_responsible_user(obj) if user is None: lang = dd.get_default_language() else: lang = user.language with translation.override(lang): msg = "\n".join([unicode(s) for s in todo]) prb = Problem(owner=obj, message=msg, checker=self, user=user) prb.full_clean() prb.save() return (todo, done)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_xl.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), user_type__in=accountants) if users.count() == 0: return ses = rt.login(users[0].username) Plan = rt.models.invoicing.Plan # we don't write invoices the last two months because we want to # have something in our invoicing plan. today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.start_plan(ses.get_user(), today=today) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) if obj is not None: yield obj else: msg = "create_invoice failed for {}".format(i) raise Exception(msg) # dd.logger.warning(msg) # return today = DurationUnits.months.add_duration(today, 1)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_cosi.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), profile__in=accountants) if users.count() == 0: return ses = rt.login(users[0].username) Plan = rt.modules.invoicing.Plan # we don't write invoices the last two months because we want to # have something in our invoicing plan. today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.start_plan(ses.get_user(), today=today) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) assert obj is not None yield obj today = DurationUnits.months.add_duration(today, 1)
def update_problems(self, obj, delete=True, fix=False): """Update the problems of this checker and the specified object. When `delete` is False, the caller is responsible for deleting any existing objects. """ Problem = rt.modules.plausibility.Problem if delete: gfk = Problem.owner qs = Problem.objects.filter(**gfk2lookup(gfk, obj, checker=self)) qs.delete() done = [] todo = [] for fixable, msg in self.get_plausibility_problems(obj, fix): if fixable: msg = u"(\u2605) " + str(msg) if fixable and fix: done.append(msg) else: todo.append(msg) if len(todo): user = self.get_responsible_user(obj) if user is None: lang = dd.get_default_language() else: lang = user.language with translation.override(lang): msg = '\n'.join([str(s) for s in todo]) prb = Problem(owner=obj, message=msg, checker=self, user=user) prb.full_clean() prb.save() return (todo, done)
def objects(): # vt = dd.plugins.invoicing.get_voucher_type() # jnl_list = vt.get_journals() # if len(jnl_list) == 0: # return from lino_xl.lib.ledger.roles import LedgerStaff accountants = LedgerStaff.get_user_profiles() users = rt.models.users.User.objects.filter( language=dd.get_default_language(), user_type__in=accountants) if users.count() == 0: return ses = rt.login(users.first().username) for area in Area.objects.all(): today = datetime.date(dd.plugins.ledger.start_year, 1, 1) while today < dd.demo_date(-60): plan = Plan.run_start_plan(ses.get_user(), today=today, area=area) yield plan plan.fill_plan(ses) # for i in plan.items.all()[:9]: for i in plan.items.all(): obj = i.create_invoice(ses) if obj is not None: yield obj else: msg = "create_invoice failed for {}".format(i) raise Exception(msg) # dd.logger.warning(msg) # return today = DurationUnits.months.add_duration(today, 1)
def update_problems(self, obj=None, delete=True, fix=False): Problem = rt.models.checkdata.Problem if delete: qs = Problem.objects.filter( **gfk2lookup(Problem.owner, obj, checker=self)) qs.delete() done = [] todo = [] for fixable, msg in self.get_checkdata_problems(obj, fix): if fixable: # attn: do not yet translate # msg = string_concat(u"(\u2605) ", msg) msg = format_lazy("(\u2605) {}", msg) if fixable and fix: done.append(msg) else: todo.append(msg) if len(todo): # dd.logger.info("%s : %s", obj, todo) user = self.get_responsible_user(obj) if user is None: lang = dd.get_default_language() else: lang = user.language with translation.override(lang): msg = '\n'.join([str(s) for s in todo]) prb = Problem(owner=obj, message=msg, checker=self, user=user) prb.full_clean() prb.save() return (todo, done)
def get_print_language(self): return self.language or self.partner.language or \ dd.get_default_language()