Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Altera reg javascript do c.upload / c.p.calendar. #474

Merged

Conversation

idgserpro
Copy link
Member

Altera ordem de registro de javascript do collective.upload e
collective.portlet.calendar para corrigir alinhamento do título
(refs. plonegovbr/brasil.gov.agenda#82)

Boas práticas para o PR: Checklist

Foi aberta uma issue relativa a esse PR;

  • Sim
  • Não
  • Não se aplica

Foram adicionados testes unitários;

  • Sim
  • Não
  • Não se aplica

Foram adicionados testes robots;

  • Sim
  • Não
  • Não se aplica

Foram adicionados upgradeSteps;

  • Sim
  • Não
  • Não se aplica

Foi adicionada a modificação no CHANGES.rst do pacote, sempre no topo do arquivo (ou seja, na primeira linha do release ainda não lançado), contendo o seu nome de usuário do github e a referência ao issue que você está tratando (não esqueça de colocar no fim do arquivo a url para a issue, use o padrão do próprio arquivo);

  • Sim
  • Não
  • Não se aplica

PR não contém assuntos diferentes. PR's devem ter um objetivo claro para facilitar o review. Ex: não junte, num mesmo PR, alterações de code-analysis e de implementação. Faça um PR de code-analysis e depois o da implementação em si;

  • Sim
  • Não
  • Não se aplica

Evite muitos commits pequenos de um mesmo assunto no PR, sempre que possível efetue rebase;

  • Sim
  • Não
  • Não se aplica

Altera ordem de registro de javascript do collective.upload e
collective.portlet.calendar para corrigir alinhamento do título
(refs. plonegovbr/brasil.gov.agenda#82)
Copy link
Member

@hvelarde hvelarde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

na minha opinião acho melhor e mais limpo implementar isso aqui usando código Python ao invés de registrando mais um profile; o código só tem que se preocupar por colocar os estilos do calendário como último item. temos que deixar bem indicado que cada vez que se atualize a versão do collective.upload vai ser necessário chamar esse código antes de cozinhar novamente os recursos para ficar na ordem certa sempre.

@idgserpro
Copy link
Member Author

No primeiro ponto (usar profile ou não) teremos um impasse pois já acho esse fato mais uma questão de preferência e não como "erro" a ser corrigido, rs. Eu não concordo em fazer código Python se já existe código Python pronto e testado do Plone que processa o xml. Mas entendi uma motivação maior nesse caso, devido a esse fato mencionado por você:

temos que deixar bem indicado que cada vez que se atualize a versão do collective.upload vai ser necessário chamar esse código antes de cozinhar novamente os recursos para ficar na ordem certa sempre.

Ou seja, se eu fizesse esse upgrade via código Python, facilitaria chamar esse código toda vez que uma versão do collective.upload fosse atualizada (colocaríamos em https://github.com/plonegovbr/portal.buildout/blob/master/buildout.d/versions.cfg o aviso # ATENÇÃO: Sempre chamar método XPTO via upgradeStep em brasil.gov.portal se for alterar a versão. Ver https://github.com/plonegovbr/brasil.gov.agenda/issues/82#issuecomment-383599037.

Acontece que nesse caso também acho a preocupação exagerada. Depois que a ordem é consertada tanto em novas instalações > 1.5.1 do zero quanto em atualizações de versões antigas, dificilmente ela será alterada. Acredito que a única situação em que isso poderia de fato acontecer seria alterações no cssregistry tanto de collective.upload quando do collective.portlet.calendar.

Nesse contexto, prefiro adicionar um teste a mais, garantindo que não tem nenhum insert-after ou insert-before no cssregistry.xml de collective.portlet.calendar e collective.upload, ao invés de refazer o profile via código e ainda por cima ter de ficar lembrando de chamar esse método toda vez que atualizar essa dependência do collective.upload. Se um dia tiver alteração de ordem no registro de css desses componentes, nosso teste quebra cobrando uma intervenção humana que verá essa discussão.

Copy link
Member

@hvelarde hvelarde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sugiro colocar isso para revisão de alguém mais para chegar a um acordo sobre como implementar.

@@ -6,4 +6,11 @@
<stylesheet title="" cacheable="True" compression="safe" cookable="True"
enabled="1" expression="" id="++resource++brasil.gov.portal/css/main-print.css" media="print"
rel="stylesheet" rendering="link" insert-after="++resource++brasil.gov.portal/css/main.css"/>
<stylesheet title="" cacheable="True" compression="none" cookable="True"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

um desses itens é redundante e desnecessário: ao colocar o primeiro antes do segundo, já está garantido que o segundo ficou depois do primeiro.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isso é pra garantir ao máximo não só que esteja atrás, mas imediatamente atrás do do collective.portlet.calendar pois foi assim que foi testado. Parece redundante mas foi pensado assim.

As demais considerações serão implementadas e adicionadas aqui no PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mas isso exatamente o que faz o insert-after: ele coloca imediatamente atrás; não precisam do outro.

portlet_calendar_css_id = '++resource++calendar_styles/calendar.css'
upload_pos = portal_css.getResourcePosition(upload_css_id)
calendar_pos = portal_css.getResourcePosition(portlet_calendar_css_id)
self.assertTrue(upload_pos < calendar_pos)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usar self.assertLess()

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<object name="portal_css" meta_type="Stylesheets Registry" purge="False">
<stylesheet title="" cacheable="True" compression="none" cookable="True"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

um desses itens é redundante e desnecessário: ao colocar o primeiro antes do segundo, já está garantido que o segundo ficou depois do primeiro.

self._do_upgrade(step)
upload_pos = portal_css.getResourcePosition(upload_css_id)
calendar_pos = portal_css.getResourcePosition(portlet_calendar_css_id)
self.assertTrue(upload_pos < calendar_pos)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usar self.assertLess()

portal_css.moveResourceToBottom(upload_css_id)
upload_pos = portal_css.getResourcePosition(upload_css_id)
calendar_pos = portal_css.getResourcePosition(portlet_calendar_css_id)
self.assertTrue(upload_pos > calendar_pos)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

usar self.assertGreater()

@idgserpro
Copy link
Member Author

@agnogueira @claytonc e @rodfersou, estamos num impasse sobre esse pull request, com relação a usar ou não profile no upgradeStep levantada pelo @hvelarde em #474 (review) e respondida por mim em #474 (comment). Poderiam nos dar suas opiniões?

@claytonc
Copy link
Contributor

@idgserpro @hvelarde

AS ordens de css e js já me deu muito dor de cabeça e demorei para descobri o problema.

Se erro no estilo só ocorre sempre que é atualizado o collective.upload, seria bom ter isso documentado, poderia até criar uma sessão na documentação de erros mais comuns e como corrigi-los.

Mas se tive alguma forma automatizar para evitar é melhor.

Mas eu deixaria redundante só se existisse alguma possibilidade de não ficar na ordem certa os css.

@idgserpro
Copy link
Member Author

Se erro no estilo só ocorre sempre que é atualizado o collective.upload, seria bom ter isso documentado, poderia até criar uma sessão na documentação de erros mais comuns e como corrigi-los.

É imprevisível caso uma pessoa clique em "reinstall". Mas isso já é documentado como não recomendado em http://identidade-digital-de-governo-plone.readthedocs.io/en/latest/atualizacao/#execucao-de-reinstall-em-portal-quickinstaller

A redundância é uma tentativa de automatização para impedir que as ordens incorretas ocorram, mesmo com reinstall. Não consigo imaginar outra automatização.

@hvelarde
Copy link
Member

hvelarde commented May 18, 2018

não é só redundância, é simplesmente desnecessário :)

@idgserpro
Copy link
Member Author

@hvelarde muita da discussão aqui é preferência, o único ponto divergente acabou sendo o uso de "insert-before" e "insert-after" ao mesmo tempo, vou remover então por mais de um ter achado redundante pra você aprovar o PR, precisamos disso aqui mesclado para dar prosseguimento em outros PRs.

Ficar atento às várias opções disponibilizadas em

https://docs.python.org/2/library/unittest.html#assert-methods

A principal vantagem é a legibilidade: só de ler o assert você já
entende a lógica ao invés de tentar interpretar a lógica interna que
voltaria True para assertTrue anteriormente.

Registros de css também não necessitam de 'insert-after' E
'insert-before' por ser redundante.
@idgserpro idgserpro force-pushed the issue-82-brasil-gov-agenda-erro-portlet-calendario-idgserpro branch from 7fd8f94 to a2f22dd Compare May 24, 2018 10:53
@hvelarde hvelarde merged commit 1d6a254 into 1.x May 24, 2018
@hvelarde hvelarde deleted the issue-82-brasil-gov-agenda-erro-portlet-calendario-idgserpro branch May 24, 2018 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants