#-*- mode: python; mode: fold -*- from Globals import InitializeClass from AccessControl import ClassSecurityInfo from Products.CMFCore.utils import UniqueObject, getToolByName from Products.CMFCore.permissions import View from Products.CMFCore.permissions import ModifyPortalContent from Products.CPSCore.CPSBase import CPSBase_adder, CPSBaseFolder from Products.CPSDocument.CPSDocument import CPSDocument import DateTime import csv,re import logging import Globals p_home = Globals.package_home(globals()) i_home = Globals.INSTANCE_HOME class DocumentsFolder(CPSDocument): ###( """ WAeUP DocumentsFolder containing StudyCourses """ meta_type = 'DocumentsFolder' portal_type = meta_type security = ClassSecurityInfo() use_catalog_for_folder_contents = True security.declareProtected(View,"Title") def Title(self): """compose title""" return "Documents Section" def exportLocalRoles(self,portal_type): ###( name = '%sLocalRoles' % portal_type logger = logging.getLogger('Documents.DocumentsFolder.exportLocalRoles') current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S") logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars()) objects = [f.getObject() for f in self.portal_catalog({'meta_type': portal_type})] export = [] export.append('"code","users"') #import pdb;pdb.set_trace() for obj in objects: lr = {} for (username, roles) in obj.get_local_roles(): lr[ 'user:' + username ] = [x for x in roles] for (groupname, roles) in obj.get_local_group_roles(): lr[ 'group:' + group ] = [x for x in roles] logger.info('Exporting %s %s ' % (obj.id, lr)) export.append('"%s","%s"' % (obj.getId(),lr)) open("%s/import/%s-%s.csv" % (i_home,name,current),"w+").write('\n'.join(export)) ###) InitializeClass(DocumentsFolder) def addDocumentsFolder(container, id, REQUEST=None, **kw): """Add a DocumentsFolder.""" ob = DocumentsFolder(id, **kw) return CPSBase_adder(container, ob, REQUEST=REQUEST) ###) class WAeUPDocument(CPSDocument): ###( """ WAeUP Document """ meta_type = 'WAeUP Document' portal_type = meta_type security = ClassSecurityInfo() def __init__(self, id, **kw): CPSDocument.__init__(self, id, **kw) InitializeClass(WAeUPDocument) def addWAeUPDocument(container, id, REQUEST=None, **kw): """Add a WAeUP Document.""" ob = WAeUPDocument(id, **kw) return CPSBase_adder(container, ob, REQUEST=REQUEST) ###)