#-*- 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 "Document 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)
    
    


###)


