Skip to content

Commit

Permalink
Merge pull request #18 from 4teamwork/mle-use-logo
Browse files Browse the repository at this point in the history
Implement a virtual scale called get_logo.
  • Loading branch information
maethu committed Oct 17, 2018
2 parents 60df083 + cc4d861 commit b31db28
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 2 deletions.
9 changes: 9 additions & 0 deletions README.rst
Expand Up @@ -81,6 +81,7 @@ The available scales are:
- LOGO
- MOBILE_LOGO
- BASE
- get_logo (virtual)
- ICONS
- APPLE_TOUCH_ICON
- FAVICON_32X32
Expand All @@ -91,6 +92,14 @@ The available scales are:
- FAVICON
- BASE


"get_logo" scale
--------------

The get_logo virtual scale returns either the BASE (svg from ZCML) or if available the overridden
BASE or LOGO scale from the Dexterity content type.


Converter
=========

Expand Down
30 changes: 30 additions & 0 deletions ftw/logo/browser/logo_view.py
Expand Up @@ -44,12 +44,19 @@ def publishTraverse(self, request, name):
elif self.config and name in flatten_scales(SCALES):
self.scale = name
return self
elif self.config and name == 'get_logo':
self.scale = name
return self
else:
raise NotFound()

def __call__(self):
if not self.config or not self.scale:
raise BadRequest()

if self.scale == 'get_logo':
return self.handle_get_logo()

check_overrides = not self.zcml_only
return ((check_overrides and self.get_dx_overridden_image()) or
self.get_zcml_configured_image())
Expand Down Expand Up @@ -98,3 +105,26 @@ def show_config_scale(self, config):
# http://stackoverflow.com/a/3001556/880628
response.setHeader('Cache-Control', 'public, max-age=31536000')
return iterator

def handle_get_logo(self):
if self.has_dx_logo() and not self.has_dx_base():
self.scale = 'LOGO'
return self.get_dx_overridden_image()
elif self.has_dx_base():
self.scale = 'BASE'
return self.get_dx_overridden_image()
else:
self.scale = 'BASE'
return self.get_zcml_configured_image()

def has_dx_logo(self):
overridesItem = self.context.get(OVERRIDES_FIXED_ID)
if not overridesItem:
return False
return bool(overridesItem.logo_LOGO)

def has_dx_base(self):
overridesItem = self.context.get(OVERRIDES_FIXED_ID)
if not overridesItem:
return False
return bool(overridesItem.logo_BASE)
2 changes: 1 addition & 1 deletion ftw/logo/browser/logo_viewlet.pt
Expand Up @@ -5,7 +5,7 @@

<a tal:attributes="href view/navigation_root_url"
id="portal-logo">
<img tal:attributes="src string:${view/navigation_root_url}/@@logo/logo/BASE?r=${view/cachekey}" />
<img tal:attributes="src string:${view/navigation_root_url}/@@logo/logo/get_logo?r=${view/cachekey}" />
</a>

<a tal:attributes="href view/navigation_root_url"
Expand Down
31 changes: 31 additions & 0 deletions ftw/logo/tests/test_logo_view.py
Expand Up @@ -7,6 +7,7 @@

source_path = os.path.join(os.path.dirname(__file__), 'fixtures')
custom = os.path.join(source_path, 'custom.svg')
png = os.path.join(source_path, 'green.png')


class TestLogoView(FunctionalTestCase):
Expand Down Expand Up @@ -62,3 +63,33 @@ def test_etag_value_invalidates(self):
self.assertNotEqual(
before,
after)

@browsing
def test_special_get_logo_scale_name_returns_svg_by_default(self, browser):
self.verify_image_format(browser, '@@logo/logo/get_logo', 'svg')
self.grant('Site Administrator')
browser.login().visit(self.portal, view='@@logo-and-icon-overrides')

with open(png) as green_png:
browser.fill({'Standard (desktop) logo (PNG)': green_png}).submit()
self.verify_image_format(browser, '@@logo/logo/get_logo', 'png')

@browsing
def test_special_get_logo_scale_name_returns_uploaded_png(self, browser):
self.verify_image_format(browser, '@@logo/logo/get_logo', 'svg')
self.grant('Site Administrator')
browser.login().visit(self.portal, view='@@logo-and-icon-overrides')

with open(png) as green_png:
browser.fill({'Standard (desktop) logo (PNG)': green_png}).submit()
self.verify_image_format(browser, '@@logo/logo/get_logo', 'png')

@browsing
def test_special_get_logo_scale_name_returns_uploaded_svg(self, browser):
self.verify_image_format(browser, '@@logo/logo/get_logo', 'svg')
self.grant('Site Administrator')
browser.login().visit(self.portal, view='@@logo-and-icon-overrides')

with open(png) as green_png:
browser.fill({'Standard (desktop) logo (PNG)': green_png}).submit()
self.verify_image_format(browser, '@@logo/logo/get_logo', 'png')
2 changes: 1 addition & 1 deletion ftw/logo/tests/test_logo_viewlet.py
Expand Up @@ -17,7 +17,7 @@ def test_logo_tag(self, browser):

self.assertEqual(
map(lambda x: x.attrib['src'], browser.css('#portal-logo > img')),
['http://nohost/plone/@@logo/logo/BASE?r={}'.format(etag)],
['http://nohost/plone/@@logo/logo/get_logo?r={}'.format(etag)],
)

@browsing
Expand Down

0 comments on commit b31db28

Please sign in to comment.