diff --git a/bauble/plugins/garden/acc_editor.glade b/bauble/plugins/garden/acc_editor.glade index 7ff20fd64..e45ebffd2 100644 --- a/bauble/plugins/garden/acc_editor.glade +++ b/bauble/plugins/garden/acc_editor.glade @@ -15,7 +15,10 @@ %Y.#### - ###### + %{Y-1}.#### + + + XXXX.#### SD.##### @@ -23,6 +26,9 @@ H.##### + + ###### + diff --git a/bauble/plugins/garden/accession.py b/bauble/plugins/garden/accession.py index 0df5ba3a4..8f828c6a7 100755 --- a/bauble/plugins/garden/accession.py +++ b/bauble/plugins/garden/accession.py @@ -635,7 +635,10 @@ def get_next_code(cls, code_format=None): if code_format is None: code_format = cls.code_format format = code_format.replace('%PD', Plant.get_delimiter()) - format = datetime.date.today().strftime(format) + today = datetime.date.today() + format = today.strftime(format) + if format.find('%{Y-1}') >= 0: + format = format.replace('%{Y-1}', str(today.year - 1)) start = unicode(format.rstrip('#')) if start == format: # fixed value diff --git a/bauble/plugins/garden/test.py b/bauble/plugins/garden/test.py index d08bd9531..79fb74593 100644 --- a/bauble/plugins/garden/test.py +++ b/bauble/plugins/garden/test.py @@ -1989,6 +1989,16 @@ def test_get_next_code_fixed(self): self.assertEquals(Accession.get_next_code(u'00003'), '00003') self.assertEquals(Accession.get_next_code(u'H.0003'), 'H.0003') + def test_get_next_code_previous_year_subst(self): + this_year = datetime.date.today().year + last_year = this_year - 1 + acc = Accession(species=self.species, code=u'%s.0012' % last_year) + ac2 = Accession(species=self.species, code=u'%s.0987' % this_year) + self.session.add_all([acc, ac2]) + self.session.flush() + self.assertEquals(Accession.get_next_code(u'%{Y-1}.####')[5:], '0013') + self.assertEquals(Accession.get_next_code(u'%Y.####')[5:], '0988') + class GlobalFunctionsTests(GardenTestCase):