Exemple #1
0
    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)
Exemple #2
0
    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'))