Skip to content

Commit

Permalink
Merge 0d9c71b into c8de60c
Browse files Browse the repository at this point in the history
  • Loading branch information
richardbarran committed Jun 17, 2019
2 parents c8de60c + 0d9c71b commit e2e81f1
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 19 deletions.
1 change: 0 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ sudo: false
# coveralls.
python:
- "2.7"
- "3.4"
- "3.5"
- "3.6"
- "3.7"
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Changelog for Django-Fiber
1.6 (unreleased)
----------------

- Django 2.1 support.
- Fix for #261: Fiber admin crashes if non-Fiber models use non-integer primary keys.
- Removed context processor that had been deprecated for several years.

Expand Down
6 changes: 5 additions & 1 deletion fiber/fiber_admin/options.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@


class ModelAdmin(DjangoModelAdmin):
pass

def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
# Set is_multipart() to return True to fix fiber_admin requests
context['adminform'].form.is_multipart = lambda: True
return super(ModelAdmin, self).render_change_form(request, context, add, change, form_url, obj)


class MPTTModelAdmin(DjangoMPTTModelAdmin):
Expand Down
6 changes: 4 additions & 2 deletions fiber/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.utils.encoding import force_text
from django.utils.html import escape
from django.utils.six.moves.urllib_parse import unquote

try:
from django.urls import reverse
except ImportError:
Expand All @@ -21,7 +22,6 @@
except ImportError:
MiddlewareMixin = object


perms = load_class(PERMISSION_CLASS)


Expand Down Expand Up @@ -162,10 +162,12 @@ class ObfuscateEmailAddressMiddleware(MiddlewareMixin):
"""
Replaces plain email addresses with escaped addresses in (non streaming) HTML responses
"""

def process_response(self, request, response):
if is_html(response) and hasattr(response, 'content'): # Do not obfuscate non-html and streaming responses.
# http://www.lampdocs.com/blog/2008/10/regular-expression-to-extract-all-e-mail-addresses-from-a-file-with-php/
email_pattern = re.compile(r'\b(?P<email>(mailto:)?[\w-]+(\.[\w-]+)*(\+[\w-]+)?@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]+)))\b')
email_pattern = re.compile(
r'\b(?P<email>(mailto:)?[\w-]+(\.[\w-]+)*(\+[\w-]+)?@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]+)))\b')
response.content = email_pattern.sub(self.replace_email, force_text(response.content))
return response

Expand Down
20 changes: 11 additions & 9 deletions fiber/utils/widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,16 @@

class FiberTextarea(forms.Textarea):

def render(self, name, value, attrs=None):
def render(self, name, value, attrs=None, renderer=None):
attrs['class'] = 'fiber-editor'
return super(FiberTextarea, self).render(name, value, attrs)
return super(FiberTextarea, self).render(name, value, attrs, renderer)


class FiberCombobox(forms.Select):

def render(self, name, value, attrs=None):
def render(self, name, value, attrs=None, renderer=None):
attrs['class'] = 'fiber-combobox'
return super(FiberCombobox, self).render(name, value, attrs)
return super(FiberCombobox, self).render(name, value, attrs, renderer)


class JSONWidget(forms.Textarea):
Expand All @@ -42,7 +42,7 @@ def __init__(self, **kwargs):

super(JSONWidget, self).__init__(**kwargs)

def render(self, name, value, attrs=None):
def render(self, name, value, attrs=None, renderer=None):
attrs['class'] = 'fiber-jsonwidget'
if isinstance(value, dict):
value = json.dumps(value)
Expand Down Expand Up @@ -81,23 +81,25 @@ def render(self, name, value, attrs=None):
'name': name,
'json': json.dumps(schema),
}
output = super(JSONWidget, self).render(name, value, attrs)
output = super(JSONWidget, self).render(name, value, attrs, renderer)
return output + mark_safe(jquery)


class AdminImageWidgetWithPreview(AdminFileWidget):
"""
A Widget for an ImageField with a preview of the current image.
"""
def render(self, name, value, attrs=None):

def render(self, name, value, attrs=None, renderer=None):
output = []
if value and isinstance(value, ImageFieldFile):
file_name = str(value)
try:
thumbnail = get_thumbnail(file_name, thumbnail_options=DETAIL_THUMBNAIL_OPTIONS)
if thumbnail:
output.append('<img src="{0}" width="{1}" height="{2}" />'.format(thumbnail.url, thumbnail.width, thumbnail.height))
output.append('<img src="{0}" width="{1}" height="{2}" />'.format(thumbnail.url, thumbnail.width,
thumbnail.height))
except ThumbnailException as e:
output.append('<p>{0}</p>'.format(str(e)))
output.append(super(AdminImageWidgetWithPreview, self).render(name, value, attrs))
output.append(super(AdminImageWidgetWithPreview, self).render(name, value, attrs, renderer))
return mark_safe(u''.join(output))
8 changes: 4 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Pillow>=2.2.1
django-mptt>=0.9.0
Pillow>=6.0.0
django-mptt>=0.9.1
django_compressor>=2.2
djangorestframework>=3.7.7
easy-thumbnails>=2.5.0
djangorestframework>=3.9.3
easy-thumbnails>=2.6.0
6 changes: 4 additions & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
[tox]
envlist =
minversion = 3.9.0
py{27,34,35,36,37}-django111
py{34,35,36,37}-django20
py{27,35,36,37}-django111
py{35,36,37}-django20
py{35,36,37}-django21

[testenv]
deps =
django111: django>=1.11,<2.0
django20: django>=2.0,<2.1
django21: Django>=2.1,<2.2
commands =
python -W module testproject/manage.py test fiber_test

0 comments on commit e2e81f1

Please sign in to comment.