small fixes
[wolnelektury.git] / apps / catalogue / fields.py
1 # -*- coding: utf-8 -*-
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
4 #
5 from django.db import models
6 from django.db.models.fields.files import FieldFile
7
8
9 class OverwritingFieldFile(FieldFile):
10     """
11         Deletes the old file before saving the new one.
12     """
13
14     def save(self, name, content, *args, **kwargs):
15         leave = kwargs.pop('leave', None)
16         # delete if there's a file already and there's a new one coming
17         if not leave and self and (not hasattr(content, 'path') or
18                                    content.path != self.path):
19             self.delete(save=False)
20         return super(OverwritingFieldFile, self).save(
21                 name, content, *args, **kwargs)
22
23
24 class OverwritingFileField(models.FileField):
25     attr_class = OverwritingFieldFile
26
27
28 try:
29     # check for south
30     from south.modelsinspector import add_introspection_rules
31
32     add_introspection_rules([], ["^catalogue\.fields\.OverwritingFileField"])
33 except ImportError:
34     pass