1 | #-*- mode: python; mode: fold -*- |
---|
2 | from Globals import InitializeClass |
---|
3 | from AccessControl import ClassSecurityInfo |
---|
4 | |
---|
5 | from Products.CMFCore.utils import UniqueObject, getToolByName |
---|
6 | from Products.CMFCore.permissions import View |
---|
7 | from Products.CMFCore.permissions import ModifyPortalContent |
---|
8 | from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder |
---|
9 | from Products.CPSDocument.CPSDocument import CPSDocument |
---|
10 | |
---|
11 | |
---|
12 | import DateTime |
---|
13 | import csv,re |
---|
14 | import logging |
---|
15 | import Globals |
---|
16 | p_home = Globals.package_home(globals()) |
---|
17 | i_home = Globals.INSTANCE_HOME |
---|
18 | |
---|
19 | |
---|
20 | class DocumentsFolder(CPSDocument): ###( |
---|
21 | """ |
---|
22 | WAeUP DocumentsFolder containing StudyCourses |
---|
23 | """ |
---|
24 | meta_type = 'DocumentsFolder' |
---|
25 | portal_type = meta_type |
---|
26 | security = ClassSecurityInfo() |
---|
27 | use_catalog_for_folder_contents = True |
---|
28 | |
---|
29 | security.declareProtected(View,"Title") |
---|
30 | def Title(self): |
---|
31 | """compose title""" |
---|
32 | return "Documents Section" |
---|
33 | |
---|
34 | def exportLocalRoles(self,portal_type): ###( |
---|
35 | name = '%sLocalRoles' % portal_type |
---|
36 | logger = logging.getLogger('Documents.DocumentsFolder.exportLocalRoles') |
---|
37 | current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S") |
---|
38 | logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars()) |
---|
39 | objects = [f.getObject() for f in self.portal_catalog({'meta_type': portal_type})] |
---|
40 | export = [] |
---|
41 | export.append('"code","users"') |
---|
42 | #import pdb;pdb.set_trace() |
---|
43 | for obj in objects: |
---|
44 | lr = {} |
---|
45 | for (username, roles) in obj.get_local_roles(): |
---|
46 | lr[ 'user:' + username ] = [x for x in roles] |
---|
47 | for (groupname, roles) in obj.get_local_group_roles(): |
---|
48 | lr[ 'group:' + group ] = [x for x in roles] |
---|
49 | logger.info('Exporting %s %s ' % (obj.id, lr)) |
---|
50 | export.append('"%s","%s"' % (obj.getId(),lr)) |
---|
51 | open("%s/import/%s-%s.csv" % (i_home,name,current),"w+").write('\n'.join(export)) |
---|
52 | ###) |
---|
53 | |
---|
54 | |
---|
55 | InitializeClass(DocumentsFolder) |
---|
56 | |
---|
57 | def addDocumentsFolder(container, id, REQUEST=None, **kw): |
---|
58 | """Add a DocumentsFolder.""" |
---|
59 | ob = DocumentsFolder(id, **kw) |
---|
60 | return CPSBase_adder(container, ob, REQUEST=REQUEST) |
---|
61 | |
---|
62 | ###) |
---|
63 | |
---|
64 | class WAeUPDocument(CPSDocument): ###( |
---|
65 | """ |
---|
66 | WAeUP Document |
---|
67 | """ |
---|
68 | meta_type = 'WAeUP Document' |
---|
69 | portal_type = meta_type |
---|
70 | security = ClassSecurityInfo() |
---|
71 | |
---|
72 | def __init__(self, id, **kw): |
---|
73 | CPSDocument.__init__(self, id, **kw) |
---|
74 | |
---|
75 | InitializeClass(WAeUPDocument) |
---|
76 | |
---|
77 | def addWAeUPDocument(container, id, REQUEST=None, **kw): |
---|
78 | """Add a WAeUP Document.""" |
---|
79 | ob = WAeUPDocument(id, **kw) |
---|
80 | return CPSBase_adder(container, ob, REQUEST=REQUEST) |
---|
81 | |
---|
82 | ###) |
---|
83 | |
---|
84 | |
---|