From bf8f725b1583caf0e02698c3dea45bb36ae10dfd Mon Sep 17 00:00:00 2001 From: Dmitriy Shesterkin Date: Sat, 6 Jan 2018 18:34:06 +0300 Subject: [PATCH] add last number in doc by year --- src/docs/models/managers.py | 10 ++++++++-- src/docs/views/base_views.py | 8 ++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/docs/models/managers.py b/src/docs/models/managers.py index b2738ba..d95772e 100644 --- a/src/docs/models/managers.py +++ b/src/docs/models/managers.py @@ -18,10 +18,16 @@ class BaseModelManager(models.Manager): except IndexError: return None - def get_max_doc_num(self, user): + def get_max_doc_num(self, user, year): """Возвращает максимальный номер когда-либо сохраненного юзером документа данного типа, или None, если таких документов еще нет.""" try: - return self.filter(company=user.profile).order_by('-doc_num')[0].doc_num + if year: + return self.filter( + company=user.profile, + created_at__year=year + ).order_by('-doc_num')[0].doc_num + else: + return self.filter(company=user.profile).order_by('-doc_num')[0].doc_num except IndexError: return None diff --git a/src/docs/views/base_views.py b/src/docs/views/base_views.py index 76e0677..39715ee 100644 --- a/src/docs/views/base_views.py +++ b/src/docs/views/base_views.py @@ -250,9 +250,13 @@ class BaseViews(object): def init_form(self): """Начальные значения полей формы документа.""" - initial = {'doc_date': datetime.now(), } + current_date = datetime.now() + initial = {'doc_date': current_date, } # номер нового документа - doc_num = self.MODEL.objects.get_max_doc_num(self.request.user) or 0 + doc_num = self.MODEL.objects.get_max_doc_num( + self.request.user, + current_date.year + ) or 0 initial['doc_num'] = doc_num + 1 return initial