source: publico/ILPortal/trunk/Extensions/AppInstall.py @ 1052

Última Alteração nesse arquivo desde 1052 foi 1052, incluída por paulovieira, 14 anos atrás

alterações dos portlets

File size: 28.8 KB
Linha 
1from Products.CMFCore.utils import getToolByName
2from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod
3from StringIO import StringIO
4from Products.ILPortal.vocabularies import VOCABULARIOS
5from Products.ILPortal.config import *
6from Products.CMFPlone.migrations.migration_util import safeEditProperty
7from Acquisition import aq_base
8
9
10INDEX_HTML = '''<html metal:use-macro="here/main_template/macros/master">
11
12<div metal:fill-slot="portlets_one_slot">
13   <div metal:use-macro="here/portlet_chamadas/macros/portlet"></div>
14   <div metal:use-macro="here/portlet_events/macros/portlet"></div>
15</div>
16
17<div metal:fill-slot="main">
18   <div metal:use-macro="here/portlet_destaques/macros/portlet"></div>
19   <div metal:use-macro="here/portlet_noticias/macros/portlet"></div>
20   <div metal:use-macro="here/portlet_melhores_praticas/macros/portlet"></div>
21</div>
22
23<div metal:fill-slot="portlets_two_slot">
24   <div metal:use-macro="here/portlet_review/macros/portlet"></div>
25   <div metal:use-macro="here/global_personalbar/macros/portlet"></div>
26   <div metal:use-macro="here/portlet_produtos/macros/portlet"></div>
27   <div metal:use-macro="here/portlet_opiniao/macros/portlet"></div>
28</div>
29
30</html>
31
32'''
33
34
35def install(self):
36    out = StringIO()
37    portal = getToolByName(self, 'portal_url').getPortalObject()
38
39    setupPortal(portal)
40    setupSlots(portal)
41    deleteAction(portal)
42    replaceIndex(portal)
43    deletePastas(portal)
44    extMethodSetupPastas(portal)
45#    addPastas(portal)
46#    addNewsletters(portal)
47#    addForuns(portal)
48#    addEnquetes(portal)
49#    addImagens(portal)
50#    addChats(portal)
51#    setupPublicatorDestaques(portal)
52#    setupPublicatorProdutos(portal)
53#    setupPublicatorChamadas(portal)
54#    setupPublicatorOpiniao(portal)
55#    setupPublicatorMelhoresPraticas(portal)
56    addJavaScript(portal)
57    addCSS(portal)
58    setupActions(portal)
59    setupTipo(portal)
60    setupMemberdata(portal)
61    setupMailHost(portal)
62    setILPortalProperties(portal)
63    setupSkin(portal)
64    setupMetadata(portal)
65    setupTextIndexNG3(portal)
66    addRoles(portal)
67    setupWorkflow(portal)
68    setupBusca(portal)
69    setupConfiguracao(portal)
70    setPloneProperties(self, portal, out)
71
72    return 'Feito!'
73
74
75def setupPortal(portal):
76    portal.manage_changeProperties(title='Portal Interlegis',
77                                   email_from_address='paulovieira@interlegis.gov.br',
78                                   email_from_name= 'Administrador')
79def setupSlots(portal):
80    left_slots =  ('here/portlet_navigation/macros/portlet', )
81    portal._setPropValue('left_slots', left_slots)
82
83    right_slots = ('here/portlet_review/macros/portlet', \
84                   'here/global_personalbar/macros/portlet', )
85    portal._setPropValue('right_slots', right_slots)
86
87def deleteAction(portal):
88    portal_actions = getToolByName(portal, 'portal_actions')
89    idx = 0
90    for action in portal_actions.listActions():
91        if action.getId() == 'index_html':
92            portal_actions.deleteActions((idx,))
93            break
94        idx += 1
95
96def replaceIndex(portal):
97     
98    if 'front-page' in portal.objectIds():
99       portal.manage_delObjects('front-page')
100    portal.manage_addProduct['PageTemplates'].manage_addPageTemplate('index_html', '', INDEX_HTML)
101
102
103def deletePastas(portal):
104    if 'news' in portal.objectIds():
105       portal.manage_delObjects('news')
106    if 'events' in portal.objectIds():
107       portal.manage_delObjects('events')
108
109
110def extMethodSetupPastas(portal):
111    manage_addExternalMethod(portal, 'Setup_pastas', 'Cria e configura as pastas do Portal', 'ILPortal.setup_pastas', 'setup_pastas')
112
113def addPastas(portal):
114    if 'chamadas' not in portal.objectIds():
115        portal.invokeFactory('Folder', id='chamadas', title='Chamadas', excludeFromNav=0)
116    if 'opiniao' not in portal.objectIds():
117        portal.invokeFactory('Folder', id='opiniao', title='Opinião', excludeFromNav=0)
118    if 'melhores_praticas' not in portal.objectIds():
119        portal.invokeFactory('Folder', id='melhores_praticas', title='Melhores Práticas', excludeFromNav=0)
120    if 'produtos' not in portal.objectIds():
121        portal.invokeFactory('Folder', id='produtos', title='Produtos', excludeFromNav=0)
122
123def addNewsletters(portal):
124    if 'boletins' not in portal.objectIds():
125        portal.invokeFactory('Folder', id='boletins', title='Boletins', excludeFromNav=0)
126
127        newsletters = getattr(aq_base(portal), 'boletins')
128        addable_types = ['Subscriber','NewsletterTheme']
129        if getattr(newsletters.aq_base, 'setConstrainTypesMode', None) is not None:
130            newsletters.setConstrainTypesMode(1)
131            newsletters.setImmediatelyAddableTypes(addable_types)
132            newsletters.setLocallyAllowedTypes(addable_types)
133
134def addForuns(portal):
135    if 'foruns' not in portal.objectIds():
136        portal.invokeFactory('Ploneboard', id='foruns', title='Fóruns')
137
138def addChats(portal):
139    if 'chats' not in portal.objectIds():
140        portal.invokeFactory('Folder', id='chats', title='Chats', excludeFromNav=0)
141
142        chat = getattr(aq_base(portal), 'chats')
143        addable_types = ['PloneChat']
144        if getattr(chat.aq_base, 'setConstrainTypesMode', None) is not None:
145            chat.setConstrainTypesMode(1)
146            chat.setImmediatelyAddableTypes(addable_types)
147            chat.setLocallyAllowedTypes(addable_types)
148
149def addEnquetes(portal):
150    if 'enquetes' not in portal.objectIds():
151        portal.invokeFactory('Folder', id='enquetes', title='Enquetes', excludeFromNav=0)
152
153        enquete = getattr(aq_base(portal), 'enquetes')
154        addable_types = ['PlonePopoll']
155        if getattr(enquete.aq_base, 'setConstrainTypesMode', None) is not None:
156            enquete.setConstrainTypesMode(1)
157            enquete.setImmediatelyAddableTypes(addable_types)
158            enquete.setLocallyAllowedTypes(addable_types)
159
160def addImagens(portal):
161    if 'imagens' not in portal.objectIds():
162        portal.invokeFactory('Folder', id='imagens', title='Imagens', excludeFromNav=0)
163
164        imagem = getattr(aq_base(portal), 'imagens')
165        addable_types = ['Image','Folder']
166        if getattr(imagem.aq_base, 'setConstrainTypesMode', None) is not None:
167            imagem.setConstrainTypesMode(1)
168            imagem.setImmediatelyAddableTypes(addable_types)
169            imagem.setLocallyAllowedTypes(addable_types)
170
171def setupPublicatorDestaques(portal):
172    portal_publicator = getToolByName(portal,'portal_publicator')
173    if not portal_publicator.listPublicationBoxes():
174        portal_publicator.addPublicationBox(id='destaques',
175                                            name='Destaques',
176                                            content_type=['Document','News Item'],
177                                            n_items=2,
178                                            with_image=1,
179                                            image_states=['published'],)
180
181    for actions in portal_publicator.listActions():
182        portal_publicator.deleteActions((0,))
183
184    portal_publicator.addAction(id='edit_publications_global',
185                             name='Publications',
186                             action='string:${portal_url}/portal_publicator/publicator_edit_form',
187                             condition='member',
188                             permission='Review portal content',
189                             category='user',
190                             visible=0)
191
192    portal_publicator.addAction(id='edit_publications_global',
193                             name='Publications',
194                             action='python:object.portal_publicator.absolute_url()+"/publicator_edit_form"',
195                             condition='python:member and folder.portal_publicator.absolute_url()==folder.absolute_url()+"/portal_publicator"',
196                             permission='Review portal content',
197                             category='folder',
198                             visible=1)
199   
200
201def setupPublicatorProdutos(portal):
202
203    portal.produtos.manage_addProduct['CMFPublicator'].manage_addTool('CMF Publicator', None)
204    portal_publicator = getattr(portal.produtos,'portal_publicator')
205    if not portal_publicator.listPublicationBoxes():
206        portal_publicator.addPublicationBox(id='produtos',
207                                            name='Produtos',
208                                            content_type=['File'],
209                                            n_items=2,
210                                            with_image=1,
211                                            image_states=['published'],)
212def setupPublicatorChamadas(portal):
213    portal.chamadas.manage_addProduct['CMFPublicator'].manage_addTool('CMF Publicator', None)
214    portal_publicator = getattr(portal.chamadas,'portal_publicator')
215    if not portal_publicator.listPublicationBoxes():
216        portal_publicator.addPublicationBox(id='chamadas',
217                                            name='Chamadas',
218                                            content_type=['Document'],
219                                            n_items=1,
220                                            with_image=0,
221                                            image_states=['published'],)
222
223def setupPublicatorOpiniao(portal):
224    portal.opiniao.manage_addProduct['CMFPublicator'].manage_addTool('CMF Publicator', None)
225    portal_publicator = getattr(portal.opiniao,'portal_publicator')
226    if not portal_publicator.listPublicationBoxes():
227        portal_publicator.addPublicationBox(id='opiniao',
228                                            name='Opinião',
229                                            content_type=['Document','News Item'],
230                                            n_items=2,
231                                            with_image=1,
232                                            image_states=['published'],)
233
234def setupPublicatorMelhoresPraticas(portal):
235    portal.melhores_praticas.manage_addProduct['CMFPublicator'].manage_addTool('CMF Publicator', None)
236    portal_publicator = getattr(portal.melhores_praticas,'portal_publicator')
237    if not portal_publicator.listPublicationBoxes():
238        portal_publicator.addPublicationBox(id='melhores_praticas',
239                                            name='Melhores Práticas',
240                                            content_type=['Document','News Item'],
241                                            n_items=5,
242                                            with_image=0,
243                                            image_states=['published'],)
244
245
246def setPloneProperties(self, portal, out):
247    print >>out, 'Customizando o Plone para o ILPortal...'
248    portal_properties = getToolByName(portal, 'portal_properties')
249    site_properties = getattr(portal_properties, 'site_properties')
250    safeEditProperty(site_properties, 'localTimeFormat', '%d/%m/%Y', 'string')
251    safeEditProperty(site_properties, 'localLongTimeFormat', '%d/%m/%Y %H:%M', 'string')
252    safeEditProperty(site_properties, 'default_language', 'pt-br', 'string')
253    safeEditProperty(site_properties, 'calendar_starting_year', 1900, 'int')
254    portal_properties.site_properties.disable_folder_sections = (True)
255    portal_properties.navtree_properties.includeTop = (False)
256    portal_properties.navtree_properties.idsNotToList = ('Members',)
257    portal_properties.navtree_properties.enable_wf_state_filtering = (True)
258    portal_properties.navtree_properties.wf_states_to_show = ('published',)
259
260    print >>out, 'Plone para ILPortal customizado!\n'
261
262
263def setILPortalProperties(portal):
264    portal_properties = getToolByName(portal, 'portal_properties')
265    if not hasattr(portal_properties,'ilportal_properties'):
266       portal_properties.manage_addPropertySheet('ilportal_properties','Propriedades do Portal Interlegis')
267
268    for vocab in VOCABULARIOS.keys():
269        if not portal_properties.ilportal_properties.hasProperty(vocab):
270           portal_properties.ilportal_properties._setProperty(vocab, VOCABULARIOS[vocab], 'lines')
271
272
273
274def setILPortalProperties2(portal):
275    portal_properties = getToolByName(portal, 'portal_properties')
276    if not hasattr(portal_properties,'ilportal_properties'):
277       portal_properties.manage_addPropertySheet('ilportal_properties','Propriedades do Portal Interlegis')
278
279    if not portal_properties.ilportal_properties.hasProperty('sexo'):
280        sexos = ['M;Masculino', 'F;Feminino']
281        portal_properties.ilportal_properties._setProperty('sexo', sexos, 'lines')
282
283    if not portal_properties.ilportal_properties.hasProperty('tip_casa_interlegis'):
284        tipos = ['AL;Assembléia Legislativa',
285                 'CD;Câmara dos Deputados',
286                 'CM;Câmara Municipal',
287                 'CT;Câmara Legislativa',
288                 'OI;Outras Instituições',
289                 'SF;Senado Federal',]
290        portal_properties.ilportal_properties._setProperty('tip_casa_interlegis', tipos, 'lines')
291
292    if not portal_properties.ilportal_properties.hasProperty('status'):
293        status = ['1;Ativo', '2;Afastado']
294        portal_properties.ilportal_properties._setProperty('status', status, 'lines')
295
296    if not portal_properties.ilportal_properties.hasProperty('suplencia'):
297        suplencia = ['1;Suplente', '2;Titular']
298        portal_properties.ilportal_properties._setProperty('suplencia', status, 'lines')
299
300    if not portal_properties.ilportal_properties.hasProperty('estado'):
301        estados = ['AC;Acre',
302                   'AL;Alagoas',
303                   'AP;Amapá',
304                   'AM;Amazonas',
305                   'BA;Bahia',
306                   'CE;Ceará',
307                   'DF;Distrito Federal',
308                   'ES;Espírito Santo',
309                   'GO;Goiás',
310                   'MA;Maranhão',
311                   'MT;Mato Grosso',
312                   'MS;Mato Grosso do Sul',
313                   'MG;Minas Gerais',
314                   'PA;Pará',
315                   'PB;Paraíba',
316                   'PR;Paraná',
317                   'PE;Pernambuco',
318                   'PI;Piauí',
319                   'RJ;Rio de Janeiro',
320                   'RN;Rio Grande do Norte',
321                   'RS;Rio Grande do Sul',
322                   'RO;Rondônia',
323                   'RR;Roraima',
324                   'SC;Santa Catarina',
325                   'SP;São Paulo',
326                   'SE;Sergipe',
327                   'TO;Tocantins']
328
329        portal_properties.ilportal_properties._setProperty('estado', estados, 'lines')
330
331    if not portal_properties.ilportal_properties.hasProperty('escolaridade'):
332        escolaridades = ['1;1º Grau Incompleto',
333                        '2;1º Grau Completo',
334                        '3;2º Grau Incompleto',
335                        '4;2º Grau Completo',
336                        '5;3º Grau Incompleto',
337                        '6;3º Grau Completo',
338                        '7;Especialização',
339                        '8;Mestrado',
340                        '9;Doutorado']
341        portal_properties.ilportal_properties._setProperty('escolaridade', escolaridades, 'lines')
342
343    if not portal_properties.ilportal_properties.hasProperty('cargo_mesa_diretora'):
344        cargos_mesa_diretora = ['P;Presidente',
345                                'VP;Vice-Presidente',
346                                '1VP;1º Vice-Presidente',
347                                '2VP;2º Vice-Presidente',
348                                '1SE;1º Secretário',
349                                '2SE;2º Secretário',
350                                '3SE;3º Secretário',
351                                '4SE;4º Secretário',
352                                '1SU;1º Suplente',
353                                '2SU;2º Suplente',
354                                '3SU;3º Suplente',
355                                'SS;Suplente de Secretário',
356                                '1SS;1º Suplente de Secretário',
357                                '2SS;2º Suplente de Secretário',
358                                '3SS;3º Suplente de Secretário',
359                                '4SS;4º Suplente de Secretário']
360
361        portal_properties.ilportal_properties._setProperty('cargo_mesa_diretora', cargos_mesa_diretora, 'lines')
362
363    if not portal_properties.ilportal_properties.hasProperty('partido'):
364        partidos = ['PAN;PAN - Partido dos Aposentados da Nação',
365                    'PCO;PCO - Partido da Causa Operaria',
366                    'PCB;PCB - Partido Comunista Brasileiro',
367                    'PCdoB;PC do B - Partido Comunista do Brasil',
368                    'PDT;PDT - Partido Democrático Trabalhista',
369                    'PFL;PFL - Partido da Frente Liberal',
370                    'PHS;PHS - Partido Humanista da Solidariedade',
371                    'PL;PL - Partido Liberal',
372                    'PMN;PMN - Partido da Mobilização Nacional',
373                    'PMDB;PMDB - Partido do Movimento Democrático Brasileiro',
374                    'PP;PP - Partido Progressista',
375                    'PPS;PPS - Partido Popular Socialista',
376                    'PRONA;PRONA - Partido da Reedificação da Ordem Nacional',
377                    'PRTB;PRTB - Partido Renovador Trabalhista Brasileiro',
378                    'PSB;PSB - Partido Socialista Brasileiro',
379                    'PSC;PSC - Partido Socialista Cristão',
380                    'PSDB;PSDB - Partido da Social Democracia Brasileira',
381                    'PSDC;PSDC - Partido Social Democrata Cristão',
382                    'PSL;PSL - Partido Social Liberal',
383                    'PSTU;PSTU - Partido Socialista dos Trabalhadores Unificado',
384                    'PT;PT - Partido dos Trabalhadores',
385                    'PTdoB;PT do B - Partido Trabalhista do Brasil',
386                    'PTB;PTB - Partido Trabalhista Brasileiro',
387                    'PTN;PTN - Partido Trabalhista Nacional',
388                    'PV;PV - Partido Verde']
389        portal_properties.ilportal_properties._setProperty('partido', partidos, 'lines')
390
391
392def setupActions(portal):
393    portal_actions = getToolByName(portal, 'portal_actions')
394    idx = 0
395    for actions in portal_actions.listActions():
396        if actions.getCategory() == 'site_actions':
397            portal_actions.deleteActions((idx,))
398            idx-=1
399        idx += 1
400
401    portal_actions.addAction(id='login',
402                             name='Log in',
403                             action='string:${portal_url}/login_form',
404                             condition='not: member',
405                             permission='View',
406                             category='site_actions',
407                             visible=1)
408
409    portal_actions.addAction(id='join',
410                             name='Join',
411                             action='string:${portal_url}/join_form',
412                             condition='not: member',
413                             permission='Add portal member',
414                             category='site_actions',
415                             visible=1)
416
417    portal_actions.addAction(id='contact',
418                             name='Contact',
419                             action='string: ${portal_url}/contact-info',
420                             condition='',
421                             permission='View',
422                             category='site_actions',
423                             visible=1)
424
425    portal_actions.addAction(id='sitemap',
426                             name='Site Map',
427                             action='string:$portal_url/sitemap',
428                             condition='',
429                             permission='View',
430                             category='site_actions',
431                             visible=1)
432
433    portal_actions.addAction(id='plone_setup',
434                             name='Site Setup',
435                             action='string: ${portal_url}/plone_control_panel',
436                             condition='',
437                             permission='Manage portal',
438                             category='site_actions',
439                             visible=1)
440
441
442def setupTipo(portal):
443    portal_types = getToolByName(portal, 'portal_types')
444    portal_types['Plone Site'].global_allow = False
445    addable_types=['Folder']
446    portal_types['Plone Site'].filter_content_types = True
447    portal_types['Plone Site'].allowed_content_types = addable_types
448    for action in portal_types['MesaDiretora'].listActions():
449        if action.getId()=='view':
450           action.setActionExpression('string:${object_url}/mesa_view')
451           break
452    for action in portal_types['CasaLegislativa'].listActions():
453        if action.getId()=='view':
454           action.setActionExpression('string:${object_url}/casa_view')
455           break
456
457def addJavaScript(portal):
458    portal.portal_javascripts.manage_addScript(id='menu_superior.js',
459                                               expression='',
460                                               inline=False,
461                                               enabled=True,
462                                               cookable=True,
463                                               REQUEST=None,)
464
465
466def addCSS(portal):
467    portal.portal_css.manage_addStylesheet(id='menu_superior.css',
468                                               expression='',
469                                               media='screen',
470                                               rel='sylesheet',
471                                               title='',
472                                               rendering='import',
473                                               enabled=True,
474                                               cookable=True,
475                                               REQUEST=None,)
476
477
478def setupMemberdata(portal):
479    portal_memberdata = getToolByName(portal, 'portal_memberdata')
480
481    if not portal_memberdata.hasProperty('sexo'):
482        portal_memberdata._setProperty('sexo', '', 'string')
483    if not portal_memberdata.hasProperty('endereco'):
484        portal_memberdata._setProperty('endereco', '', 'string')
485    if not portal_memberdata.hasProperty('cidade'):
486        portal_memberdata._setProperty('cidade', '', 'string')
487    if not portal_memberdata.hasProperty('estado'):
488        portal_memberdata._setProperty('estado', '', 'string')
489    if not portal_memberdata.hasProperty('cep'):
490        portal_memberdata._setProperty('cep', '', 'string')
491    if not portal_memberdata.hasProperty('ddd'):
492        portal_memberdata._setProperty('ddd', '', 'string')
493    if not portal_memberdata.hasProperty('telefone'):
494        portal_memberdata._setProperty('telefone', '', 'string')
495    if not portal_memberdata.hasProperty('empresa'):
496        portal_memberdata._setProperty('empresa', '', 'string')
497    if not portal_memberdata.hasProperty('cargo'):
498        portal_memberdata._setProperty('cargo', '', 'string')
499    if not portal_memberdata.hasProperty('escolaridade'):
500        portal_memberdata._setProperty('escolaridade', '', 'string')
501
502def setupMailHost(portal):
503    MailHost = getToolByName(portal, 'MailHost')
504    MailHost.manage_makeChanges(title='Interlegis',
505                                smtp_host='smtp.interlegis.gov.br',
506                                smtp_port=25,
507                                smtp_userid='',
508                                smtp_pass='')
509
510def setupSkin(portal):
511    portal_skins = getToolByName(portal, 'portal_skins')
512    path = portal_skins.getSkinPath('Plone Default')
513    path = [elem.strip() for elem in path.split(',') if elem != '.svn']
514    path = ','.join(path)
515    portal_skins.addSkinSelection('Portal Interlegis', path)
516    portal_skins.manage_properties(default_skin = 'Portal Interlegis',
517                                   request_varname = 'plone_skin',
518                                   del_skin = 0,
519                                   chosen = [])
520
521def setupMetadata(portal):
522    portal_metadata = getToolByName(portal, 'portal_metadata')
523    portal_metadata.updateElementPolicy(
524            element='Subject',
525            content_type='Event',
526            is_required=0,
527            supply_default=0,
528            default_value='',
529            enforce_vocabulary=0,
530            allowed_vocabulary=('Encontro', 'Convenção', 'Reunião', 'Evento Social', 'Trabalho'))
531
532def setupTextIndexNG3(portal):
533    catalog = getToolByName(portal,'portal_catalog')
534
535    for idx in ('SearchableText', 'Title', 'Description'):
536        catalog._removeIndex(idx)
537
538    catalog.manage_addIndex('SearchableText',
539                            'TextIndexNG3',
540                            extra={'default_encoding':'utf-8',
541                                   'languages':('pt-br','en',),
542                                   'splitter_casefolding':1,
543                                   'dedicated_storage':0,
544                                   'index_unknown_languages':1,
545                                   'use_stemmer':0,
546                                   'use_normalizer':0,
547                                  }
548                           )
549    catalog.manage_addIndex('Title',
550                            'TextIndexNG3',
551                            extra={'default_encoding':'utf-8',
552                                   'languages':('pt-br','en'),
553                                   'splitter_casefolding':1,
554                                   'dedicated_storage':0,
555                                   'index_unknown_languages':1,
556                                   'use_stemmer':0,
557                                   'use_normalizer':0,
558                                  }
559                           )
560    catalog.manage_addIndex('Description',
561                            'TextIndexNG3',
562                            extra={'default_encoding':'utf-8',
563                                   'languages':('pt-br','en'),
564                                   'splitter_casefolding':1,
565                                   'dedicated_storage':0,
566                                   'index_unknown_languages':1,
567                                   'use_stemmer':0,
568                                   'use_normalizer':0,
569                                  }
570                           )
571    catalog.manage_reindexIndex(['Title','Description','SearchableText'])
572
573def addRoles(portal):
574    portal._addRole(role='Autor')
575    portal._addRole(role='Editor')
576
577#    permissions = []
578#    for perm in portal.aq_parent.permissionsOfRole('Owner'):
579#       if perm.get('selected') != '':
580#           permissions.append(perm.get('name'))
581
582#    for perm in portal.permissionsOfRole('Owner'):
583#       if perm.get('selected') != '' and perm.get('name') not in permissions:
584#           permissions.append(perm.get('name'))
585#    print permissions
586
587    permissions = ['ATContentTypes: Add Document',
588                   'ATContentTypes: Add Event',
589                   'ATContentTypes: Add Favorite',
590                   'ATContentTypes: Add File',
591                   'ATContentTypes: Add Folder',
592                   'ATContentTypes: Add Image',
593                   'ATContentTypes: Add Large Plone Folder',
594                   'ATContentTypes: Add Link',
595                   'ATContentTypes: Add News Item',
596                   'Add CasaLegislativa Content',
597                   'Add MembroMesaDiretora Content',
598                   'Add MesaDiretora Content',
599                   'Add Parlamentar Content',
600                   'Add PlonePopolls',
601                   'Add Telefone Content',
602                   'Add portal content',
603                   'Add portal events',
604                   'Add portal folders',
605                   'Change local roles',
606                   'Change portal events',
607                   'Change portal topics',
608                   'Edit PlonePopoll',
609                   'List folder contents',
610                   'Modify constrain types',
611                   'Modify view template',
612                   'PNL Add Subscriber',
613                   'PNL Change Newsletter',
614                   'PNL Change Newsletter Theme',
615                   'PNL Change Subscriber',
616                   'Ploneboard: Add Ploneboard',
617                   'Ploneboard: Notify Retracted',
618                   'PortalTransport: Allow Subscription',
619                   'Request review',
620                   'Set Group Ownership',
621                   'Take ownership',
622                   'View Groups',
623                   'Vote for a PlonePopoll',
624                   'WebDAV Lock items',
625                   'WebDAV Unlock items',
626                   'Access inactive portal content',
627                   'Add PloneChat objects',
628                   'Chat moderatedly',
629                   'Chat unmoderatedly',
630                   'Delete objects',
631                   'Edit PloneChats',
632                   'FTP access',
633                   'Manage properties',
634                   'Undo changes',
635                   'View management screens']
636
637    portal.manage_role(role_to_manage='Autor', permissions=permissions)
638
639#    permissions = []
640#    for perm in portal.permissionsOfRole('Reviewer'):
641#       if perm.get('selected') != '':
642#           permissions.append(perm.get('name'))
643    permissions += ['Access future portal content', 'Moderate PloneChats', 'Review portal content']
644    portal.manage_role(role_to_manage='Editor', permissions=permissions)
645
646    portal._delRoles(roles=['Reviewer'])
647
648def setupWorkflow(portal):
649    portal_workflow = getToolByName(portal, 'portal_workflow')
650    portal_workflow.setDefaultChain('ilportal_workflow')
651
652def setupBusca(portal):
653    portal_properties=getToolByName(portal, 'portal_properties')
654    portaltypes = ['CasaLegislativa','Event','PloneChat','PlonePopoll','File','Folder','Image','Link','News Item', 'Document', 'Parlamentar']
655    allTypes = portal.getPortalTypes()
656    blacklistedTypes = [t for t in allTypes if t not in portaltypes]
657
658    portal_properties.site_properties.manage_changeProperties(types_not_searched=blacklistedTypes)
659
660def setupConfiguracao(portal):
661    portal.portal_controlpanel.registerConfiglet(**prefs_portal_configlet)
662   
663
664def uninstall(self):
665
666    try:
667        self.portal_controlpanel.unregisterApplication(PROJECTNAME)
668    except:
669        pass
670
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.