Skip to content

Commit

Permalink
Merge 43837f5 into b8c0861
Browse files Browse the repository at this point in the history
  • Loading branch information
rodfersou committed Oct 19, 2018
2 parents b8c0861 + 43837f5 commit df2f6c4
Show file tree
Hide file tree
Showing 38 changed files with 246 additions and 183 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ htmlcov/
.DS_Store
/.settings/*

src/brasil/gov/agenda/static/*
src/brasil/gov/agenda/browser/static/*
7 changes: 7 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ Changelog
2.0a8 (unreleased)
^^^^^^^^^^^^^^^^^^

- Remove registro de recursos estaticos dos resource registries;
agora utilizamos um viewlet para incluir eles simplificando a manutenção do complemento.
[rodfersou]

- Atualiza configuração do webpack.
[rodfersou]

- Corrige o tile de Agenda quando a lingua é diferente de Português Brasileiro (fecha `#149 <https://github.com/plonegovbr/brasil.gov.agenda/issues/149>`_).
[rodfersou]

Expand Down
5 changes: 1 addition & 4 deletions buildout.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ parts +=
[code-analysis]
recipe = plone.recipe.codeanalysis[recommended]
directory = ${buildout:directory}/src/brasil/gov/agenda
clean-lines-exclude = ${:directory}/static
clean-lines-exclude = ${:directory}/browser/static
clean-lines = True
multiprocessing = True
pre-commit-hook = True
Expand Down Expand Up @@ -57,9 +57,6 @@ short_name = brasilgovagenda
# mais novo do extends não sobrescreva o próprio pacote.
brasil.gov.agenda =

# XXX: remove after new release
plone.protect = 3.0.27

# É necessário ter o precompile para gerar os '*.mo' para os testes. Os '*.mo'
# só são gerados quando a instância sobe e para executar os testes a instância
# não é levantada.
Expand Down
5 changes: 5 additions & 0 deletions src/brasil/gov/agenda/browser/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@
from brasil.gov.agenda.browser.compromisso import CompromissoView # noqa: E501,F401
from brasil.gov.agenda.browser.ics import ICSView # noqa: F401
from brasil.gov.agenda.browser.vcs import VCSView # noqa: F401
from plone.app.layout.viewlets import ViewletBase


class ResourcesViewlet(ViewletBase):
"""This viewlet inserts static resources on page header."""
14 changes: 14 additions & 0 deletions src/brasil/gov/agenda/browser/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,18 @@
layer="brasil.gov.agenda.interfaces.IBrowserLayer"
/>

<browser:resourceDirectory
name="brasil.gov.agenda"
directory="static"
/>

<browser:viewlet
name="brasil.gov.agenda.resources"
manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
class=".ResourcesViewlet"
template="static/resources.pt"
permission="zope2.Public"
layer="brasil.gov.agenda.interfaces.IBrowserLayer"
/>

</configure>
File renamed without changes.
3 changes: 0 additions & 3 deletions src/brasil/gov/agenda/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,4 @@
<include package=".portlets" />
<include package=".subscribers" />

<!-- Suporte a arquivos estaticos -->
<browser:resourceDirectory name="brasil.gov.agenda" directory="static" />

</configure>
28 changes: 0 additions & 28 deletions src/brasil/gov/agenda/profiles/default/cssregistry.xml

This file was deleted.

23 changes: 0 additions & 23 deletions src/brasil/gov/agenda/profiles/default/jsregistry.xml

This file was deleted.

2 changes: 1 addition & 1 deletion src/brasil/gov/agenda/profiles/default/metadata.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<metadata>
<version>4103</version>
<version>4104</version>
<dependencies>
<dependency>profile-collective.cover:default</dependency>
<dependency>profile-plone.app.dexterity:default</dependency>
Expand Down
2 changes: 1 addition & 1 deletion src/brasil/gov/agenda/profiles/default/types/Agenda.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<!-- Basic metadata -->
<property name="title" i18n:translate="">Agenda</property>
<property name="description" i18n:translate="">Agenda de membro do governo brasileiro.</property>
<property name="content_icon">++resource++brasil.gov.agenda/agenda_icon.png</property>
<property name="content_icon">++resource++brasil.gov.agenda/img/agenda_icon.png</property>
<property name="allow_discussion">False</property>
<property name="global_allow">True</property>
<property name="filter_content_types">True</property>
Expand Down
4 changes: 2 additions & 2 deletions src/brasil/gov/agenda/profiles/default/types/AgendaDiaria.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<!-- Basic metadata -->
<property name="title" i18n:translate="">Agenda Diaria</property>
<property name="description" i18n:translate="">Agenda de membro do governo brasileiro.</property>
<property name="content_icon">++resource++brasil.gov.agenda/agenda_icon.png</property>
<property name="content_icon">++resource++brasil.gov.agenda/img/agenda_icon.png</property>
<property name="allow_discussion">False</property>
<property name="global_allow">False</property>
<property name="filter_content_types">True</property>
Expand Down Expand Up @@ -51,4 +51,4 @@
url_expr="string:${object_url}/edit" visible="True">
<permission value="Modify portal content"/>
</action>
</object>
</object>
4 changes: 2 additions & 2 deletions src/brasil/gov/agenda/profiles/default/types/Compromisso.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<!-- Basic metadata -->
<property name="title" i18n:translate="">Compromisso</property>
<property name="description" i18n:translate="">Compromisso de membro do governo brasileiro.</property>
<property name="content_icon">++resource++brasil.gov.agenda/compromisso_icon.png</property>
<property name="content_icon">++resource++brasil.gov.agenda/img/compromisso_icon.png</property>
<property name="allow_discussion">False</property>
<property name="global_allow">False</property>
<property name="filter_content_types">True</property>
Expand Down Expand Up @@ -53,4 +53,4 @@
url_expr="string:${object_url}/edit" visible="True">
<permission value="Modify portal content"/>
</action>
</object>
</object>
2 changes: 2 additions & 0 deletions src/brasil/gov/agenda/setuphandlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ def getNonInstallableProducts():
return [
u'brasil.gov.agenda.upgrades.v4101',
u'brasil.gov.agenda.upgrades.v4102',
u'brasil.gov.agenda.upgrades.v4104',
# BBB: https://github.com/plonegovbr/brasil.gov.agenda/issues/137
u'collective.portlet.calendar',
]
Expand All @@ -25,6 +26,7 @@ def getNonInstallableProfiles():
return [
u'brasil.gov.agenda:uninstall',
u'brasil.gov.agenda.upgrades.v4101:default',
u'brasil.gov.agenda.upgrades.v4104:default',
# BBB: https://github.com/plonegovbr/brasil.gov.agenda/issues/137
u'collective.portlet.calendar:default',
u'collective.portlet.calendar:uninstall',
Expand Down
4 changes: 2 additions & 2 deletions src/brasil/gov/agenda/tests/test_agenda.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,6 @@ def test_agenda_icon(self):
browser = Browser(app)
portal_url = portal.absolute_url()

browser.open('%s/++resource++brasil.gov.agenda/agenda_icon.png' %
portal_url)
browser.open(
portal_url + '/++resource++brasil.gov.agenda/img/agenda_icon.png')
self.assertEqual(browser.headers['status'], '200 Ok')
3 changes: 2 additions & 1 deletion src/brasil/gov/agenda/tests/test_agendadiaria.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,8 @@ def test_agendadiaria_icon(self):
browser = Browser(app)
portal_url = portal.absolute_url()

browser.open('%s/++resource++brasil.gov.agenda/agenda_icon.png' % portal_url)
browser.open(
portal_url + '/++resource++brasil.gov.agenda/img/agenda_icon.png')
self.assertEqual(browser.headers['status'], '200 Ok')

def test_agendadiaria_view_imagem(self):
Expand Down
3 changes: 2 additions & 1 deletion src/brasil/gov/agenda/tests/test_compromisso.py
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,8 @@ def test_compromisso_icon(self):
browser = Browser(app)
portal_url = portal.absolute_url()

browser.open('%s/++resource++brasil.gov.agenda/compromisso_icon.png' % portal_url)
browser.open(
portal_url + '/++resource++brasil.gov.agenda/img/compromisso_icon.png')
self.assertEqual(browser.headers['status'], '200 Ok')

def test_compromisso_view(self):
Expand Down
44 changes: 44 additions & 0 deletions src/brasil/gov/agenda/tests/test_resources_viewlet.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
from brasil.gov.agenda.testing import INTEGRATION_TESTING
from lxml import etree # nosec
from Products.Five.browser import BrowserView
from zope.component import getMultiAdapter
from zope.viewlet.interfaces import IViewletManager

import unittest


class ResourcesViewletTestCase(unittest.TestCase):

layer = INTEGRATION_TESTING

def setUp(self):
self.portal = self.layer['portal']
self.request = self.layer['request']

self.viewlet = self.get_viewlet(self.portal)

def get_viewlet_manager(self, context, name='plone.htmlhead'):
request = self.request
view = BrowserView(context, request)
manager = getMultiAdapter(
(context, request, view), IViewletManager, name)
return manager

def get_viewlet(self, context, name='brasil.gov.agenda.resources'):
manager = self.get_viewlet_manager(context)
manager.update()
viewlet = [v for v in manager.viewlets if v.__name__ == name]
assert len(viewlet) == 1 # nosec
return viewlet[0]

def test_viewlet(self):
html = etree.HTML(self.viewlet())
self.assertIn('defer', html.xpath('//script')[0].attrib)
# script name must include the hash of latest git commit
regexp = r'brasilgovagenda-[\da-f]{7}\.js$'
self.assertRegexpMatches(
html.xpath('//script')[0].attrib['src'], regexp)
regexp = r'brasilgovagenda-[\da-f]{7}\.css$'
self.assertRegexpMatches(
html.xpath('//link')[0].attrib['href'], regexp)
14 changes: 1 addition & 13 deletions src/brasil/gov/agenda/tests/test_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,7 @@ def test_installed(self):

def test_version(self):
self.assertEqual(
self.st.getLastVersionForProfile(self.profile), (u'4103',))

def test_css_registered(self):
cssreg = getattr(self.portal, 'portal_css')
stylesheets_ids = cssreg.getResourceIds()
self.assertIn(
'++resource++brasil.gov.agenda/brasilgovagenda.css', stylesheets_ids)

def test_js_registered(self):
jsreg = getattr(self.portal, 'portal_javascripts')
scripts_ids = jsreg.getResourceIds()
self.assertIn(
'++resource++brasil.gov.agenda/brasilgovagenda.js', scripts_ids)
self.st.getLastVersionForProfile(self.profile), (u'4104',))

def test_agenda_not_searched(self):
pp = getattr(self.portal, 'portal_properties')
Expand Down
51 changes: 37 additions & 14 deletions src/brasil/gov/agenda/tests/test_upgrades.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,41 +58,27 @@ def test_fix_resources_references(self):
# simulate state on previous version
from brasil.gov.agenda.upgrades.v4100 import SWIPER_CSS
from brasil.gov.agenda.upgrades.v4100 import SWIPER_JS
from brasil.gov.agenda.upgrades.v4100 import NEW_CSS
from brasil.gov.agenda.upgrades.v4100 import OLD_CSS
from brasil.gov.agenda.upgrades.v4100 import NEW_JS

css_tool = api.portal.get_tool('portal_css')
css_tool.unregisterResource(SWIPER_CSS)
css_tool.getResource(NEW_CSS).setCompression('safe')
css_tool.renameResource(NEW_CSS, OLD_CSS)

ids = css_tool.getResourceIds()
self.assertNotIn(SWIPER_CSS, ids)
self.assertNotIn(NEW_CSS, ids)
self.assertIn(OLD_CSS, ids)
self.assertEqual(css_tool.getResource(OLD_CSS).getCompression(), 'safe')

js_tool = api.portal.get_tool('portal_javascripts')
js_tool.unregisterResource(SWIPER_JS)
js_tool.unregisterResource(NEW_JS)

ids = js_tool.getResourceIds()
self.assertNotIn(SWIPER_JS, ids)
self.assertNotIn(NEW_JS, ids)

# run the upgrade step to validate the update
self.execute_upgrade_step(step)

ids = css_tool.getResourceIds()
self.assertEqual(SWIPER_CSS, ids[0])
self.assertNotIn(OLD_CSS, ids)
self.assertIn(NEW_CSS, ids)
self.assertEqual(css_tool.getResource(NEW_CSS).getCompression(), 'none')

ids = js_tool.getResourceIds()
self.assertEqual(SWIPER_JS, ids[0])
self.assertIn(NEW_JS, ids)


class to4101TestCase(UpgradeTestCaseBase):
Expand Down Expand Up @@ -140,3 +126,40 @@ def test_registrations(self):
version = self.setup.getLastVersionForProfile(self.profile_id)[0]
self.assertGreaterEqual(int(version), int(self.to_version))
self.assertEqual(self.total_steps, 2)


class to4104TestCase(UpgradeTestCaseBase):

def setUp(self):
UpgradeTestCaseBase.setUp(self, u'4103', u'4104')

def test_registrations(self):
version = self.setup.getLastVersionForProfile(self.profile_id)[0]
self.assertGreaterEqual(int(version), int(self.to_version))
self.assertEqual(self.total_steps, 4)

def test_deprecate_resource_registries(self):
title = u'Deprecate resource registries'
step = self.get_upgrade_step(title)
self.assertIsNotNone(step)

# simulate state on previous version
from brasil.gov.agenda.upgrades.v4104 import SCRIPTS
from brasil.gov.agenda.upgrades.v4104 import STYLES

js_tool = api.portal.get_tool('portal_javascripts')
for js in SCRIPTS:
js_tool.registerResource(id=js)
self.assertIn(js, js_tool.getResourceIds())

css_tool = api.portal.get_tool('portal_css')
for css in STYLES:
css_tool.registerResource(id=css)
self.assertIn(css, css_tool.getResourceIds())

# run the upgrade step to validate the update
self.execute_upgrade_step(step)
for js in SCRIPTS:
self.assertNotIn(js, js_tool.getResourceIds())
for css in STYLES:
self.assertNotIn(css, css_tool.getResourceIds())
1 change: 1 addition & 0 deletions src/brasil/gov/agenda/upgrades/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
<include package=".v4101" />
<include package=".v4102" />
<include package=".v4103" />
<include package=".v4104" />
</configure>

0 comments on commit df2f6c4

Please sign in to comment.