X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/b2541b6c5da10e4fbcd8e4975973b539af3fec21..22f9e2afd2c1c82a804c183cbce4e6d0a00d829e:/apps/catalogue/fields.py diff --git a/apps/catalogue/fields.py b/apps/catalogue/fields.py index ded6f0e93..4de2e7cb6 100644 --- a/apps/catalogue/fields.py +++ b/apps/catalogue/fields.py @@ -3,18 +3,19 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # import datetime +from functools import wraps from django.conf import settings from django.db import models +from django.db.models.fields.files import FieldFile from django.db.models import signals from django import forms from django.forms.widgets import flatatt -from django.forms.util import smart_unicode +from django.utils.encoding import smart_unicode from django.utils import simplejson as json from django.utils.html import escape from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ -from south.modelsinspector import add_introspection_rules class JSONEncoder(json.JSONEncoder): @@ -53,7 +54,7 @@ class JSONField(models.TextField): defaults.update(kwargs) return super(JSONField, self).formfield(**defaults) - def db_type(self): + def db_type(self, connection): return 'text' def get_internal_type(self): @@ -70,8 +71,6 @@ class JSONField(models.TextField): return setattr(model_instance, self.attname, dumps(json)) setattr(cls, 'set_%s_value' % self.name, set_value) -add_introspection_rules([], ["^catalogue\.fields\.JSONField"]) - class JQueryAutoCompleteWidget(forms.TextInput): def __init__(self, source, options=None, *args, **kwargs): @@ -123,7 +122,24 @@ try: ( [JSONField], # Class(es) these apply to [], # Positional arguments (not used) - {}, # Keyword argument + {}, # Keyword argument ), ], ["^catalogue\.fields\.JSONField"]) except ImportError: pass + + +class OverwritingFieldFile(FieldFile): + """ + Deletes the old file before saving the new one. + """ + + def save(self, *args, **kwargs): + leave = kwargs.pop('leave', None) + if not leave and self: + self.delete(save=False) + return super(OverwritingFieldFile, self).save(*args, **kwargs) + + +class OverwritingFileField(models.FileField): + attr_class = OverwritingFieldFile +