def _pre_save_clone(self, source): max_length = self._meta.get_field('title').max_length self.title = truncate_str(source.title, max_length, suffix=u' ({} {:08x})'.format(ugettext(u'Copy'), randint(0, MAXINT), ), ) # TODO: atomic while Folder.objects.filter(title=self.title).exists(): self._pre_save_clone(source)
def test_truncate_str_01(self): s = string.ascii_letters self.assertEqual(52, len(s)) truncated = truncate_str(s, 50) self.assertEqual(50, len(truncated)) self.assertEqual(s[:-2], truncated) expected = s[:-5] + '012' self.assertEqual(expected, truncate_str(s, 50, suffix='012')) self.assertEqual('', truncate_str('', 0, suffix='01234')) self.assertEqual('01234', truncate_str('abcdef', 5, suffix='01234')) self.assertEqual('abc', truncate_str('abcdef', 3, suffix='')) self.assertEqual('', truncate_str('abcdef', -1, suffix='')) self.assertEqual('', truncate_str('abcdef', -1, suffix='aaaaaa')) self.assertEqual('a', truncate_str('b', 1, suffix='a')) self.assertEqual('abcd', truncate_str('abcdef', 4, suffix='01234'))