class IOGGAudioFile(form.Schema):
    ''' Representa um Arquivo de Audio OGG'''

    model.primary('file')
    file = NamedBlobFile(title=_(u'File'),
                         description=_(u'Please upload a audio file.'),
                         required=True,
                         constraint=validate_ogg)
Exemple #2
0
class IMPEGAudioFile(form.Schema):
    """ Representa um Arquivo de Audio MPEG"""

    model.primary('file')
    file = NamedBlobFile(title=_(u'File'),
                         description=_(u'Please upload a audio file.'),
                         required=True,
                         constraint=validate_mpeg)
Exemple #3
0
class SiteControlPanel(ControlPanelForm):

    form_fields = form.FormFields(ISiteSchema)
    form_fields['site_description'].custom_widget = MiniTextAreaWidget
    form_fields['webstats_js'].custom_widget = SmallTextAreaWidget

    label = _('Site settings')
    description = _('Site-wide settings.')
    form_name = _('Site settings')
class ISocialNetworksPair(Interface):
    site = schema.Choice(title=_(u'Site'),
                         description=_(
                             _(u'help_social_network'),
                             default=u'Escolha a rede a ser cadastrada'),
                         required=True,
                         vocabulary=networks)

    info = schema.TextLine(title=u'Identificador')
class SocialNetworksControlPanel(ControlPanelForm):
    """ Implementacao do painel de controle da Barra de Identidade """
    # Define quais serao os campos a serem exibidos (IBarraConfSchema)
    form_fields = FormFields(ISocialNetworksSchema)
    form_fields['accounts_info'].custom_widget = accounts_widget

    # Define o titulo deste painel de controle
    label = _(u'.gov.br: Social Network')
    # Define a descricao deste painel de controle
    description = _(u'Identity Bar behavior Configuration')
    # Define o titulo do formulario deste painel de controle
    form_name = _(u'Visual and functional Configuration')
Exemple #6
0
class ISettingsPortal(form.Schema):
    """Campos do formulário de configuração do Portal Padrão."""
    esconde_autor = Bool(
        title=_(u'Hides author'),
        description=_(u'Hide information about who created an item.'),
        default=False,
        required=False)

    esconde_data = Bool(
        title=_(u'Hides publication date'),
        description=_(
            u'Hide information about when an item has been published.'),
        default=False,
        required=False)
Exemple #7
0
class IPortalServicesSettings(Interface):
    """Campos dos formulários de inserção e edição do Configlet."""

    pid = schema.TextLine(
        title=_(u'id'),
        required=False,
    )

    title = schema.TextLine(
        title=_(u'Titulo do link'),
        required=True,
    )

    description = schema.Text(
        title=_(u'Description'),
        description=_(u'Informe a descrição caso seja necessário.'),
        required=False,
    )

    url_expr = schema.TextLine(
        title=_(u'URL'),
        description=_(u'Informe o caminho relativo ao portal e começando com uma barra "/" e '
                      u'para URL externa informe http:// ou https://.'),
        required=True,
    )

    visible = schema.Bool(
        title=_(u'Visível'),
        description=_(u'Desmarque para ocultar o link.'),
        default=True,
    )
class ISocialNetworksSchema(Interface):

    accounts_info = schema.List(
        title=_(u'Social Network'),
        default=[],
        value_type=schema.Object(ISocialNetworksPair, title=u'Rede'),
        required=False)
Exemple #9
0
    def __call__(self):

        form = self.request.form

        if form.get('pid', False):

            if form.get('form.button.delete', None) is not None:
                pid = form.get('pid', None)
                if self.delete_item(pid):
                    api.portal.show_message(
                        message=_(u'Item deleted.'), request=self.request)
                else:
                    api.portal.show_message(
                        message=_(u'Item not deleted.'), request=self.request)

            elif form.get('form.button.moveup', None) is not None:
                pid = form.get('pid', None)
                if self.move_item(pid, 'move_up'):
                    api.portal.show_message(
                        message=_(u'Item moved.'), request=self.request)
                else:
                    api.portal.show_message(
                        message=_(u'Item not moved.'), request=self.request)

            elif form.get('form.button.movedown', None) is not None:
                pid = form.get('pid', None)
                if self.move_item(pid, 'move_down'):
                    api.portal.show_message(
                        message=_(u'Item moved.'), request=self.request)
                else:
                    api.portal.show_message(
                        message=_(u'Item not moved.'), request=self.request)

        return self.template()
Exemple #10
0
    def handleApply(self, action):
        data, errors = self.extractData()

        if errors:
            self.status = self.formErrorsMessage
            return

        self.applyChanges(data)
        api.portal.show_message(message=_(u'Edit successfully'), request=self.request)
        nextURL = self.nextURL()
        if nextURL:
            self.request.response.redirect(self.nextURL())
        return ''
Exemple #11
0
class PortalServicesAddForm(form.AddForm):
    """Formulário de adicição de action no portal_actions."""

    label = _(u'Add a link.')
    fields = field.Fields(IPortalServicesSettings)

    def updateWidgets(self):
        super(PortalServicesAddForm, self).updateWidgets()
        self.widgets['pid'].mode = z3c.form.interfaces.HIDDEN_MODE
        self.widgets['visible'].mode = z3c.form.interfaces.HIDDEN_MODE

    def create(self, data):

        id = idnormalizer.normalize(data['title'])
        id += '-' + str(int(time.time()))

        data.pop('pid')
        data['title'] = data['title']
        if data['description']:
            data['description'] = data['description']
        else:
            data['description'] = ''
        data['i18n_domain'] = 'plone'
        data['permissions'] = ('View',)
        data['visible'] = True
        data['url_expr'] = url_expression(data.get('url_expr'))

        action = Action(id, **data)
        return action

    def add(self, action):
        category = get_category()
        category._setObject(action.id, action)
        self.status = _(u'Item added successfully.')

    def nextURL(self):
        url = self.context.absolute_url()
        url += '/@@portal-services-settings'
        return url
Exemple #12
0
# -*- coding: utf-8 -*-
from brasil.gov.portal import _
from plone.formwidget.namedfile.converter import b64decode_file
from six.moves.urllib.parse import urlparse
from zope.interface import Invalid

import mimetypes

MESSAGE = _(
    u'You must use "Title|http://example.org" format to fill each line.')


def validate_list_of_links(value):
    """Check if value is a list of strings that follow the predefined
    format: "Title|http://example.org".
    """
    if not value:
        return True

    for item in value:
        # check string format
        if '|' not in item or item.count('|') > 1:
            raise Invalid(MESSAGE)

        # check if URL is valid
        _, v = item.split('|')
        parsed = urlparse(v.strip())
        if not all([parsed.scheme, parsed.netloc]):
            raise Invalid(MESSAGE)
    return True
from Products.CMFDefault.formlib.schema import SchemaAdapterBase
from Products.CMFPlone.interfaces import IPloneSiteRoot
from zope import schema
from zope.component import adapter
from zope.formlib.form import FormFields
from zope.formlib.objectwidget import ObjectWidget
from zope.formlib.sequencewidget import ListSequenceWidget
from zope.formlib.widget import CustomWidgetFactory
from zope.interface import implementer
from zope.interface import Interface
from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary


networks = SimpleVocabulary(
    [SimpleTerm(value=rede['id'], title=_(rede['title']))
     for rede in REDES])


class ISocialNetworksPair(Interface):
    site = schema.Choice(title=_(u'Site'),
                         description=_(
                             _(u'help_social_network'),
                             default=u'Escolha a rede a ser cadastrada'),
                         required=True,
                         vocabulary=networks)

    info = schema.TextLine(title=u'Identificador')


@implementer(ISocialNetworksPair)
Exemple #14
0
class ISettingsPortal(model.Schema):
    """Campos do formulário de configuração do Portal Padrão."""

    # TODO: do we still need esconde_autor and esconde_data fields?
    esconde_autor = schema.Bool(
        title=_(u'Hides author'),
        description=_(u'Hide information about who created an item.'),
        default=False,
        required=False)

    esconde_data = schema.Bool(
        title=_(u'Hides publication date'),
        description=_(
            u'Hide information about when an item has been published.'),
        default=False,
        required=False)

    model.fieldset(
        'header',
        label=u'Header',
        fields=[
            'expandable_header',
            'background_image',
            'featured_news',
            'more_news',
            'featured_services',
            'more_services',
            'top_subjects',
        ],
    )

    expandable_header = schema.Bool(
        title=_(u'Use expandable header?'),
        description=_(
            u'help_expandable_header',
            default=
            u'If enabled, an expandable header will be used instead of the default. '  # noqa: E501
            u'A list of search sugestions and hot topics will also be shown, if available.'
        ),  # noqa: E501
        default=False,
    )

    form.widget('background_image', NamedFileFieldWidget)
    background_image = schema.ASCII(
        title=_(u'title_background_image', default=u'Background'),
        description=_(
            u'help_background_image',
            default=u'An image or video to be used as background of the header. '
            u'Should be 1440px width and 605px height.',
        ),
        required=False,
        constraint=validate_background,
    )

    form.widget('featured_news', cols=25, rows=10)
    featured_news = schema.Tuple(
        title=_(u'Notícias em destaque'),
        description=_(
            u'help_featured_news',
            default=
            _(u'You must use "Title|http://example.org" format to fill each line.'
              )),  # noqa: E501
        required=False,
        default=(),
        value_type=schema.TextLine(),
        constraint=validate_list_of_links,
    )

    more_news = schema.URI(
        title=_(u'Mais notícias'),
        required=False,
    )

    form.widget('featured_services', cols=25, rows=10)
    featured_services = schema.Tuple(
        title=_(u'Serviços em destaque'),
        description=_(
            u'help_featured_services',
            default=
            _(u'You must use "Title|http://example.org" format to fill each line.'
              )),  # noqa: E501
        required=False,
        default=(),
        value_type=schema.TextLine(),
        constraint=validate_list_of_links,
    )

    more_services = schema.URI(
        title=_(u'Mais serviços'),
        required=False,
    )

    form.widget('top_subjects', cols=25, rows=10)
    top_subjects = schema.Tuple(
        title=_(u'Assuntos em alta'),
        description=_(
            u'help_top_subjects',
            default=
            _(u'You must use "Title|http://example.org" format to fill each line.'
              )),  # noqa: E501
        required=False,
        default=(),
        value_type=schema.TextLine(),
        constraint=validate_list_of_links,
    )
Exemple #15
0
class ISiteSchema(Interface):

    site_title_1 = TextLine(title=_(u'Site title (First Line)'),
                            description=_(u'First line of site title'),
                            required=False,
                            default=u'')

    site_title_2 = TextLine(title=_(u'Site title (Second Line)'),
                            description=_(u'Second line of site title'),
                            default=u'')

    site_orgao = TextLine(title=_(u'Department'),
                          description=_(u'Name of Ministry or Department '
                                        u'to which this site is subject.'),
                          required=False,
                          default=u'')

    url_orgao = TextLine(
        title=_(u'Url ID of Department'),
        description=_(
            u'Url ID for Ministry or Department to which this site is subject.'
        ),
        required=False,
        default=u'')

    site_description = Text(
        title=_(u'Site description'),
        description=_(u'The site description is available '
                      u'in syndicated content and in search engines. '
                      u'Keep it brief.'),
        default=u'',
        required=False)

    exposeDCMetaTags = Bool(
        title=_(u'Expose Dublin Core metadata'),
        description=_(u'Exposes the Dublin Core properties as metatags.'),
        default=False,
        required=False)

    display_pub_date_in_byline = Bool(
        title=_(u'Display publication date in about information'),
        description=_(u'Displays content publication date on site pages.'),
        default=False,
        required=False)

    enable_sitemap = Bool(title=_(u'Expose sitemap.xml.gz'),
                          description=_(
                              u'Exposes your content as a file '
                              u'according to the sitemaps.org standard. You '
                              u'can submit this to compliant search engines '
                              u'like Google, Yahoo and Microsoft. It allows '
                              u'these search engines to more intelligently '
                              u'crawl your site.'),
                          default=False,
                          required=False)

    webstats_js = SourceText(
        title=_(u'JavaScript for web statistics support'),
        description=_(u'For enabling web statistics support '
                      u'from external providers (for e.g. Google '
                      u'Analytics). Paste the code snippets provided. '
                      u'It will be included in the rendered HTML as '
                      u'entered near the end of the page.'),
        default=u'',
        required=False)
# -*- coding: utf-8 -*-
from brasil.gov.portal import _
from plone.formwidget.namedfile.converter import b64decode_file
from six.moves.urllib.parse import urlparse
from zope.interface import Invalid

import mimetypes


MESSAGE = _(u'You must use "Title|http://example.org" format to fill each line.')


def validate_list_of_links(value):
    """Check if value is a list of strings that follow the predefined
    format: "Title|http://example.org".
    """
    if not value:
        return True

    for item in value:
        # check string format
        if '|' not in item or item.count('|') > 1:
            raise Invalid(MESSAGE)

        # check if URL is valid
        _, v = item.split('|')
        parsed = urlparse(v.strip())
        if not all([parsed.scheme, parsed.netloc]):
            raise Invalid(MESSAGE)
    return True
Exemple #17
0
class PortalEditForm(controlpanel.RegistryEditForm):
    """Formulário de configuração do Portal Padrão."""
    schema = ISettingsPortal
    label = _(u'e-Government Digital Identity Settings')
    description = _(u'Settings for e-Government Digital Identity.')
Exemple #18
0
 def add(self, action):
     category = get_category()
     category._setObject(action.id, action)
     self.status = _(u'Item added successfully.')
def validate_mimetype(value, audiotypes):
    if not value.contentType in audiotypes:
        raise Invalid(_(u'File format not supported'))
    return True
def validate_mimetype(value, audiotypes):
    if not value.contentType in audiotypes:
        raise Invalid(_(u"Formato de arquivo não suportado"))
    return True
from brasil.gov.portal import _ as _
from brasil.gov.portal.config import REDES
from plone.app.controlpanel.form import ControlPanelForm
from zope import schema
from zope.component import adapts
from zope.formlib.form import FormFields
from zope.formlib.objectwidget import ObjectWidget
from zope.formlib.sequencewidget import ListSequenceWidget
from zope.formlib.widget import CustomWidgetFactory
from zope.interface import Interface
from zope.interface import implements
from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary


networks = SimpleVocabulary([SimpleTerm(value=rede["id"], title=_(rede["title"])) for rede in REDES])


class ISocialNetworksPair(Interface):
    site = schema.Choice(
        title=_(u"Site"),
        description=_(_(u"help_social_network"), default=u"Escolha a rede a ser cadastrada"),
        required=True,
        vocabulary=networks,
    )

    info = schema.TextLine(title=u"Identificador")


class SocialNetworksPair:
    implements(ISocialNetworksPair)
Exemple #22
0
 def handleCancel(self, action):
     api.portal.show_message(message=_(u'Edit cancelled'), request=self.request)
     self.request.response.redirect(self.nextURL())
Exemple #23
0
class PortalServicesEditForm(form.EditForm):
    """Formulálio de edição de action no portal_actions."""

    label = _(u'Edit link')
    schema = IPortalServicesSettings
    fields = field.Fields(IPortalServicesSettings)

    def getContent(self):

        pip = self.request.get('pid', False)

        if not pip:
            self.request.response.redirect(self.nextURL())

        category = get_category()
        item = category.get(pip, None)

        if not item:
            item = dict(pid='', title='', description='', url_expr='', visible=False)
            self.request.response.redirect(self.nextURL())
        else:
            item = dict(pid=item.id and item.id or '',
                        title=item.title and item.title or '',
                        description=item.description and item.description or '',
                        url_expr=item.url_expr and item.url_expr or '',
                        visible=item.visible)
        return item

    def updateWidgets(self):
        super(PortalServicesEditForm, self).updateWidgets()
        self.widgets['pid'].mode = z3c.form.interfaces.HIDDEN_MODE

    @button.buttonAndHandler(_(u'label_save', default=u'Save'), name='save')
    def handleApply(self, action):
        data, errors = self.extractData()

        if errors:
            self.status = self.formErrorsMessage
            return

        self.applyChanges(data)
        api.portal.show_message(message=_(u'Edit successfully'), request=self.request)
        nextURL = self.nextURL()
        if nextURL:
            self.request.response.redirect(self.nextURL())
        return ''

    @button.buttonAndHandler(_(u'label_cancel', default=u'Cancel'), name='cancel')
    def handleCancel(self, action):
        api.portal.show_message(message=_(u'Edit cancelled'), request=self.request)
        self.request.response.redirect(self.nextURL())

    def applyChanges(self, data):

        pid = data.pop('pid')

        category = get_category()
        item = category.get(pid, None)

        data['url_expr'] = url_expression(data.get('url_expr'))
        for key in data.keys():
            if key in data:
                data[key] = data[key] and data[key] or ''
                item._setPropValue(key, data[key])

    def nextURL(self):
        url = self.context.absolute_url() + '/@@portal-services-settings'
        return url
from Products.CMFCore.utils import getToolByName
from Products.CMFDefault.formlib.schema import SchemaAdapterBase
from Products.CMFPlone.interfaces import IPloneSiteRoot
from zope import schema
from zope.component import adapts
from zope.formlib.form import FormFields
from zope.formlib.objectwidget import ObjectWidget
from zope.formlib.sequencewidget import ListSequenceWidget
from zope.formlib.widget import CustomWidgetFactory
from zope.interface import implements
from zope.interface import Interface
from zope.schema.vocabulary import SimpleTerm
from zope.schema.vocabulary import SimpleVocabulary

networks = SimpleVocabulary(
    [SimpleTerm(value=rede['id'], title=_(rede['title'])) for rede in REDES])


class ISocialNetworksPair(Interface):
    site = schema.Choice(title=_(u'Site'),
                         description=_(
                             _(u'help_social_network'),
                             default=u'Escolha a rede a ser cadastrada'),
                         required=True,
                         vocabulary=networks)

    info = schema.TextLine(title=u'Identificador')


class SocialNetworksPair:
    implements(ISocialNetworksPair)
def validate_mimetype(value, audiotypes):
    if value.contentType not in audiotypes:
        raise Invalid(_(u'File format not supported'))
    return True