add last number in doc by year

prod
Dmitriy Shesterkin 8 years ago
parent 6fd0c7983d
commit bf8f725b15
  1. 10
      src/docs/models/managers.py
  2. 8
      src/docs/views/base_views.py

@ -18,10 +18,16 @@ class BaseModelManager(models.Manager):
except IndexError: except IndexError:
return None return None
def get_max_doc_num(self, user): def get_max_doc_num(self, user, year):
"""Возвращает максимальный номер когда-либо сохраненного юзером документа данного типа, """Возвращает максимальный номер когда-либо сохраненного юзером документа данного типа,
или None, если таких документов еще нет.""" или None, если таких документов еще нет."""
try: 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: except IndexError:
return None return None

@ -250,9 +250,13 @@ class BaseViews(object):
def init_form(self): 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 initial['doc_num'] = doc_num + 1
return initial return initial

Loading…
Cancel
Save