-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Behavior para informações da secretaria e tipo de conteúdo secretaria
- Loading branch information
1 parent
c5b771d
commit 68ce179
Showing
11 changed files
with
235 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -42,6 +42,8 @@ var/ | |
.installed.txt | ||
.lock | ||
|
||
*.mo | ||
|
||
## | ||
# Add extra configuration options in .meta.toml: | ||
# [gitignore] | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<configure | ||
xmlns="http://namespaces.zope.org/zope" | ||
xmlns:plone="http://namespaces.plone.org/plone" | ||
> | ||
|
||
|
||
|
||
<plone:behavior | ||
name="procergs.sitedemo.behavior.informacoes_secretaria" | ||
title="Informações da Secretaria" | ||
description="Adiciona campos de informações de secretaria." | ||
provides=".informacoes_secretaria.IInformacoesSecretaria" | ||
/> | ||
|
||
|
||
</configure> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
from plone.autoform.interfaces import IFormFieldProvider | ||
from plone.supermodel import model | ||
from procergs.sitedemo import _ | ||
from zope import schema | ||
from zope.interface import provider | ||
|
||
|
||
@provider(IFormFieldProvider) | ||
class IInformacoesSecretaria(model.Schema): | ||
"""Provê campos de endereço.""" | ||
|
||
model.fieldset( | ||
"secretaria", | ||
_("Informações Secretaria"), | ||
fields=[ | ||
"nome_secretaria_vinculada", | ||
"url_secretaria_vinculada", | ||
], | ||
) | ||
|
||
nome_secretaria_vinculada = schema.TextLine( | ||
title=_("Gnome da Secretaria Vinculada"), | ||
description=_("Informe o gnome da secretaria vinculada"), | ||
required=False, | ||
) | ||
|
||
url_secretaria_vinculada = schema.TextLine( | ||
title=_("URL da Secretaria Vinculada"), | ||
description=_("Informe a URL da secretaria vinculada"), | ||
required=False, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
from plone.dexterity.content import Container | ||
from plone.supermodel import model | ||
from zope.interface import implementer | ||
|
||
|
||
class ISecretaria(model.Schema): | ||
"""Dados da secretaria""" | ||
|
||
|
||
@implementer(ISecretaria) | ||
class Secretaria(Container): | ||
"""Uma secretaria de governo.""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<configure | ||
xmlns="http://namespaces.zope.org/zope" | ||
xmlns:zcml="http://namespaces.zope.org/zcml" | ||
i18n_domain="procergs.sitedemo" | ||
> | ||
|
||
<configure zcml:condition="installed AccessControl.security"> | ||
|
||
<permission | ||
id="procergs.sitedemo.secretaria.add" | ||
title="procergs.sitedemo: Add Secretaria" | ||
/> | ||
|
||
</configure> | ||
|
||
</configure> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,11 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<rolemap> | ||
<permissions> | ||
|
||
<permission acquire="False" | ||
name="procergs.sitedemo: Add Secretaria" | ||
> | ||
<role name="Manager" /> | ||
<role name="Site Administrator" /> | ||
</permission> | ||
</permissions> | ||
</rolemap> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
44 changes: 44 additions & 0 deletions
44
src/procergs/sitedemo/profiles/default/types/Secretaria.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<object xmlns:i18n="http://xml.zope.org/namespaces/i18n" | ||
meta_type="Dexterity FTI" | ||
name="Secretaria" | ||
i18n:domain="procergs.sitedemo" | ||
> | ||
|
||
<!-- Basic properties --> | ||
<property name="title" | ||
i18n:translate="" | ||
>Secretaria</property> | ||
<property name="description" | ||
i18n:translate="" | ||
>Uma Secretaria dentro da estrutura de governo</property> | ||
|
||
<property name="allow_discussion">False</property> | ||
<property name="factory">Secretaria</property> | ||
|
||
<!-- Hierarchy control --> | ||
<property name="filter_content_types">False</property> | ||
<property name="allowed_content_types" /> | ||
<property name="global_allow">True</property> | ||
|
||
<!-- Schema, class and security --> | ||
<property name="add_permission">procergs.sitedemo.secretaria.add</property> | ||
<property name="klass">procergs.sitedemo.content.secretaria.Secretaria</property> | ||
<property name="schema">procergs.sitedemo.content.secretaria.ISecretaria</property> | ||
|
||
<!-- Enabled behaviors --> | ||
<property name="behaviors" | ||
purge="false" | ||
> | ||
<element value="plone.basic" /> | ||
<element value="plone.namefromtitle" /> | ||
<element value="plone.shortname" /> | ||
<element value="plone.excludefromnavigation" /> | ||
<element value="procergs.sitedemo.behavior.informacoes_secretaria" /> | ||
<element value="volto.preview_image" /> | ||
<element value="plone.leadimage" /> | ||
<element value="plone.constraintypes" /> | ||
<element value="plone.versioning" /> | ||
</property> | ||
|
||
</object> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
from AccessControl import Unauthorized | ||
from plone import api | ||
from plone.dexterity.fti import DexterityFTI | ||
from procergs.sitedemo.content.secretaria import Secretaria | ||
from zope.component import createObject | ||
|
||
import pytest | ||
|
||
|
||
CONTENT_TYPE = "Secretaria" | ||
|
||
|
||
@pytest.fixture | ||
def secretaria_payload() -> dict: | ||
"""Return a payload to create a new secretaria.""" | ||
return { | ||
"type": "Secretaria", | ||
"id": "casacivil", | ||
"title": "Casa Civil", | ||
"description": ( | ||
"A Casa Civil do Governo do Estado foi criada em janeiro de 1954," | ||
"pelo então governador Ernesto Dornelles" | ||
), | ||
"nome_secretaria_vinculada": "Governo", | ||
"url_secretaria_vinculada": "rs.gov.br", | ||
} | ||
|
||
|
||
@pytest.fixture() | ||
def content(portal, secretaria_payload) -> Secretaria: | ||
with api.env.adopt_roles(["Manager"]): | ||
content = api.content.create(container=portal, **secretaria_payload) | ||
return content | ||
|
||
|
||
class TestSecretaria: | ||
@pytest.fixture(autouse=True) | ||
def _setup(self, get_fti, portal): | ||
self.fti = get_fti(CONTENT_TYPE) | ||
self.portal = portal | ||
|
||
def test_fti(self): | ||
assert isinstance(self.fti, DexterityFTI) | ||
|
||
def test_factory(self): | ||
factory = self.fti.factory | ||
obj = createObject(factory) | ||
assert obj is not None | ||
assert isinstance(obj, Secretaria) | ||
|
||
@pytest.mark.parametrize( | ||
"behavior", | ||
[ | ||
"plone.basic", | ||
"plone.namefromtitle", | ||
"plone.shortname", | ||
"plone.excludefromnavigation", | ||
"plone.versioning", | ||
"plone.constraintypes", | ||
"volto.preview_image", | ||
], | ||
) | ||
def test_has_behavior(self, get_behaviors, behavior): | ||
assert behavior in get_behaviors(CONTENT_TYPE) | ||
|
||
@pytest.mark.parametrize( | ||
"role,allowed", | ||
[ | ||
["Manager", True], | ||
["Site Administrator", True], | ||
["Editor", False], | ||
["Contributor", False], | ||
], | ||
) | ||
def test_create(self, secretaria_payload, role, allowed): | ||
with api.env.adopt_roles([role]): | ||
if allowed: | ||
content = api.content.create( | ||
container=self.portal, **secretaria_payload | ||
) | ||
assert content.portal_type == CONTENT_TYPE | ||
assert isinstance(content, Secretaria) | ||
else: | ||
with pytest.raises(Unauthorized): | ||
api.content.create(container=self.portal, **secretaria_payload) | ||
|
||
@pytest.mark.parametrize( | ||
"role,allowed", | ||
[ | ||
["Manager", False], | ||
["Site Administrator", False], | ||
["Editor", False], | ||
["Contributor", False], | ||
], | ||
) | ||
def test_permission_inside_content(self, content, role, allowed): | ||
current_user = api.user.get_current() | ||
with api.env.adopt_roles([role]): | ||
can_add = api.user.has_permission( | ||
"procergs.sitedemo: Add Secretaria", user=current_user, obj=content | ||
) | ||
assert can_add is allowed |