Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
respondcreate committed Mar 4, 2016
2 parents 07e2300 + 07424a3 commit e644ab1
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
12 changes: 5 additions & 7 deletions tests/urls.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
from django.conf import settings
from django.conf.urls import patterns, include, url
from django.conf.urls import include, url
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns(
'',
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
)
]

if settings.DEBUG:
urlpatterns = patterns(
'',
urlpatterns = [
url(
r'^media/(?P<path>.*)$',
'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}
),
url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns
] + urlpatterns
33 changes: 29 additions & 4 deletions versatileimagefield/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import os

from django import VERSION as DJANGO_VERSION
from django.conf import settings
from django.contrib.admin.widgets import AdminFileWidget
from django.db.models import SubfieldBase
from django.db.models.fields import CharField
from django.db.models.fields.files import ImageField
from django.utils.six import add_metaclass
from django.utils.translation import ugettext_lazy as _

from .files import VersatileImageFieldFile, VersatileImageFileDescriptor
Expand All @@ -26,6 +25,26 @@
]
)

if DJANGO_VERSION < (1, 8):
from django.db.models import SubfieldBase
BasePPOIField = SubfieldBase(str('BasePPOIField'), (CharField,), {})
else:
BasePPOIField = CharField


class Creator(object):
"""
A placeholder class that provides a way to set the attribute on the model.
"""
def __init__(self, field):
self.field = field

def __get__(self, obj, objtype=None):
return obj.__dict__[self.field.name]

def __set__(self, obj, value):
obj.__dict__[self.field.name] = self.field.to_python(value)


class VersatileImageField(ImageField):
attr_class = VersatileImageFieldFile
Expand Down Expand Up @@ -174,8 +193,7 @@ def formfield(self, **kwargs):
return super(VersatileImageField, self).formfield(**defaults)


@add_metaclass(SubfieldBase)
class PPOIField(CharField):
class PPOIField(BasePPOIField):

def __init__(self, *args, **kwargs):
if 'default' not in kwargs:
Expand All @@ -194,6 +212,13 @@ def __init__(self, *args, **kwargs):
super(PPOIField, self).__init__(*args, **kwargs)
self.validators.append(validate_ppoi)

def contribute_to_class(self, cls, name, **kwargs):
super(PPOIField, self).contribute_to_class(cls, name, **kwargs)
setattr(cls, self.name, Creator(self))

def from_db_value(self, value, expression, connection, context):
return self.to_python(value)

def to_python(self, value):
if value is None:
value = '0.5x0.5'
Expand Down

0 comments on commit e644ab1

Please sign in to comment.