Beispiel #1
0
 def test_security_protect_generate_method(self):
     self.failIf(hasattr(SecDummy3, "__ac_permissions__"))
     self.failIf(hasattr(SecDummy3, "makeFoo"))
     generateMethods(SecDummy3, (foo_field,))
     self.failUnless(hasattr(SecDummy3, "__ac_permissions__"))
     self.failUnless(hasattr(SecDummy3, "makeFoo"))
     got = SecDummy3.__ac_permissions__
     expected = (("Modify portal content", ("makeFoo", "setFoo", "getRawFoo")),)
     self.assertEquals(got, expected)
Beispiel #2
0
 def test_security_protect_generate_method(self):
     self.assertFalse(hasattr(SecDummy3, '__ac_permissions__'))
     self.assertFalse(hasattr(SecDummy3, 'makeFoo'))
     generateMethods(SecDummy3, (foo_field,))
     self.assertTrue(hasattr(SecDummy3, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy3, 'makeFoo'))
     got = SecDummy3.__ac_permissions__
     expected = (('Modify portal content',
                  ('makeFoo', 'setFoo', 'getRawFoo')),)
     self.assertEqual(got, expected)
Beispiel #3
0
 def test_security_dont_stomp_existing_decl_perm(self):
     self.failIf(hasattr(SecDummy1, "__ac_permissions__"))
     self.failUnless(hasattr(SecDummy1, "makeFoo"))
     existing_method = getattr(SecDummy1, "makeFoo")
     generateMethods(SecDummy1, (foo_field,))
     self.failUnless(hasattr(SecDummy1, "__ac_permissions__"))
     self.failUnless(SecDummy1.makeFoo == existing_method)
     got = SecDummy1.__ac_permissions__
     expected = (("Modify portal content", ("setFoo", "getRawFoo")), ("View", ("makeFoo",)))
     self.assertEquals(got, expected)
 def test_security_protect_generate_method(self):
     self.assertFalse(hasattr(SecDummy3, '__ac_permissions__'))
     self.assertFalse(hasattr(SecDummy3, 'makeFoo'))
     generateMethods(SecDummy3, (foo_field,))
     self.assertTrue(hasattr(SecDummy3, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy3, 'makeFoo'))
     got = SecDummy3.__ac_permissions__
     expected = (('Modify portal content',
                  ('makeFoo', 'setFoo', 'getRawFoo')),)
     self.assertEquals(got, expected)
def makeTypesAutoPublishAware(types):
    """Adds enableAutopublishing field to types

    @param types: the classes to patch their schema
    @type types: list
    """
    for t in types:
        t.schema.addField(enableAutopublishingField.copy())
        t.schema.moveField('enableAutopublishing', after='expirationDate')
        generateMethods(t, t.schema.fields())
 def test_security_protect_manual_method(self):
     self.assertFalse(hasattr(SecDummy2, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy2, 'makeFoo'))
     existing_method = getattr(SecDummy2, 'makeFoo')
     generateMethods(SecDummy2, (foo_field, ))
     self.assertTrue(hasattr(SecDummy2, '__ac_permissions__'))
     self.assertTrue(SecDummy2.makeFoo == existing_method)
     got = SecDummy2.__ac_permissions__
     expected = (('Modify portal content', ('makeFoo', 'setFoo',
                                            'getRawFoo')), )
     self.assertEquals(got, expected)
 def test_security_protect_manual_method(self):
     self.assertFalse(hasattr(SecDummy2, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy2, 'makeFoo'))
     existing_method = getattr(SecDummy2, 'makeFoo')
     generateMethods(SecDummy2, (foo_field,))
     self.assertTrue(hasattr(SecDummy2, '__ac_permissions__'))
     self.assertTrue(SecDummy2.makeFoo == existing_method)
     got = SecDummy2.__ac_permissions__
     expected = (('Modify portal content',
                  ('makeFoo', 'setFoo', 'getRawFoo')),)
     self.assertEqual(got, expected)
 def test_security_dont_stomp_existing_decl_perm(self):
     self.assertFalse(hasattr(SecDummy1, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy1, 'makeFoo'))
     existing_method = getattr(SecDummy1, 'makeFoo')
     generateMethods(SecDummy1, (foo_field,))
     self.assertTrue(hasattr(SecDummy1, '__ac_permissions__'))
     self.assertTrue(SecDummy1.makeFoo == existing_method)
     got = SecDummy1.__ac_permissions__
     expected = (('Modify portal content',
                  ('setFoo', 'getRawFoo')),
                  ('View', ('makeFoo',)),)
     self.assertEquals(got, expected)
Beispiel #9
0
 def test_security_dont_stomp_existing_decl_perm(self):
     self.assertFalse(hasattr(SecDummy1, '__ac_permissions__'))
     self.assertTrue(hasattr(SecDummy1, 'makeFoo'))
     existing_method = getattr(SecDummy1, 'makeFoo')
     generateMethods(SecDummy1, (foo_field,))
     self.assertTrue(hasattr(SecDummy1, '__ac_permissions__'))
     self.assertTrue(SecDummy1.makeFoo == existing_method)
     got = SecDummy1.__ac_permissions__
     expected = (('Modify portal content',
                  ('setFoo', 'getRawFoo')),
                  ('View', ('makeFoo',)),)
     self.assertEqual(got, expected)
 def test_security_dont_stomp_existing_decl_private(self):
     self.assertFalse(hasattr(SecDummy5, '__ac_permissions__'))
     self.assertFalse(hasattr(SecDummy5, 'makeFoo__roles__'))
     self.assertTrue(hasattr(SecDummy5, 'makeFoo'))
     existing_method = getattr(SecDummy5, 'makeFoo')
     generateMethods(SecDummy5, (foo_field, ))
     self.assertTrue(hasattr(SecDummy5, '__ac_permissions__'))
     self.assertTrue(SecDummy5.makeFoo == existing_method)
     got = SecDummy5.__ac_permissions__
     expected = (('Modify portal content', ('setFoo', 'getRawFoo')), )
     self.assertEquals(got, expected)
     self.assertTrue(hasattr(SecDummy5, 'makeFoo__roles__'))
     self.assertTrue(SecDummy5.makeFoo__roles__ == ACCESS_PRIVATE)
Beispiel #11
0
 def test_security_dont_stomp_existing_decl_private(self):
     self.failIf(hasattr(SecDummy5, "__ac_permissions__"))
     self.failIf(hasattr(SecDummy5, "makeFoo__roles__"))
     self.failUnless(hasattr(SecDummy5, "makeFoo"))
     existing_method = getattr(SecDummy5, "makeFoo")
     generateMethods(SecDummy5, (foo_field,))
     self.failUnless(hasattr(SecDummy5, "__ac_permissions__"))
     self.failUnless(SecDummy5.makeFoo == existing_method)
     got = SecDummy5.__ac_permissions__
     expected = (("Modify portal content", ("setFoo", "getRawFoo")),)
     self.assertEquals(got, expected)
     self.failUnless(hasattr(SecDummy5, "makeFoo__roles__"))
     self.failUnless(SecDummy5.makeFoo__roles__ == ACCESS_PRIVATE)
Beispiel #12
0
 def __get__(self, obj, objtype=None):
     pm = getToolByName(obj.context, 'portal_metadata', None)
     if pm is None:
         return {}
     set = pm.getMetadataSet(obj.set_id)
     fields = fieldsFromSet(set, obj)
     # TODO This would *really* benefit from some
     # caching/timestamp checking.
     # Calling generateMethods and reconstructing
     # the fields each time may actually be
     # *very very* expensive.
     klass = obj.context.__class__
     generateMethods(klass, fields.values())
     return fields
 def test_security_dont_stomp_existing_decl_private(self):
     self.assertFalse(hasattr(SecDummy5, '__ac_permissions__'))
     self.assertFalse(hasattr(SecDummy5, 'makeFoo__roles__'))
     self.assertTrue(hasattr(SecDummy5, 'makeFoo'))
     existing_method = getattr(SecDummy5, 'makeFoo')
     generateMethods(SecDummy5, (foo_field,))
     self.assertTrue(hasattr(SecDummy5, '__ac_permissions__'))
     self.assertTrue(SecDummy5.makeFoo == existing_method)
     got = SecDummy5.__ac_permissions__
     expected = (('Modify portal content',
                  ('setFoo', 'getRawFoo')),)
     self.assertEqual(got, expected)
     self.assertTrue(hasattr(SecDummy5, 'makeFoo__roles__'))
     self.assertTrue(SecDummy5.makeFoo__roles__ == ACCESS_PRIVATE)
Beispiel #14
0
 def __get__(self, obj, objtype=None):
     pm = getToolByName(obj.context, 'portal_metadata', None)
     if pm is None:
         return {}
     set = pm.getMetadataSet(obj.set_id)
     fields = fieldsFromSet(set, obj)
     # TODO This would *really* benefit from some
     # caching/timestamp checking.
     # Calling generateMethods and reconstructing
     # the fields each time may actually be
     # *very very* expensive.
     klass = obj.context.__class__
     generateMethods(klass, fields.values())
     return fields
Beispiel #15
0
from Products.EEAContentTypes.content import ThemeTaggable

# monkey patch, replaces reference field of certain content types to
# an orderable reference field
from Products.EEAContentTypes.content.orderablereffield import field
from Products.EEAContentTypes.content.orderablereffield import (
    types_and_schema, )
# monkey patch, by default file is not translatable, fix this
from Products.ATContentTypes.content import file as atfile

from Products.ATContentTypes.content import image

for otype, schema in types_and_schema:
    schema.addField(field)
    schema.moveField('relatedItems', pos='bottom')
    generateMethods(otype, [field])

atfile.ATFileSchema['file'].languageIndependent = False

# #4898 Set Content-Disposition: attachment for PDF files
inlineMimetypes = atfile.ATFile.inlineMimetypes
if 'application/pdf' in inlineMimetypes:
    inlineMimetypes = set(inlineMimetypes)
    inlineMimetypes.remove('application/pdf')
    atfile.ATFile.inlineMimetypes = tuple(inlineMimetypes)

image.ATImageSchema['rights'].languageIndependent = True

__all__ = [
    ThemeTaggable.__name__, Speech.__name__, Article.__name__,
    CallForInterest.__name__, NegotiatedProcedure.__name__,
    alphabets = {}
    for x in string.uppercase:
        alphabets[x] = []

    for item in items:
        char = item.Title[0].upper()
        if not alphabets.has_key(char):
            continue
        alphabets[char].append(item)

    return [{"letter": x, "items": alphabets[x]} for x in string.uppercase]


HelpCenterGlossary.alphabetise = alphabetise.__get__(None, HelpCenterGlossary)
generateMethods(HelpCenterGlossary, HelpCenterGlossary.schema.fields())

# Patching HelpCenterDefinition
HelpCenterDefinition = Definition.HelpCenterDefinition

HelpCenterDefinition.schema = HelpCenterDefinition.schema + Schema((DefinitionField))

generateMethods(HelpCenterDefinition, HelpCenterDefinition.schema.fields())

# Patching FAQFolder
HelpCenterFAQFolder = FAQFolder.HelpCenterFAQFolder

HelpCenterFAQFolder.schema["description"].required = 0

HelpCenterFAQFolder.schema = HelpCenterFAQFolder.schema + Schema(
    (BodyField, IdentityField, IdentityPosition, ContributorsField, RelatedItemsField, RightsField)
Beispiel #17
0
    alphabets = {}
    for x in string.uppercase:
        alphabets[x] = []

    for item in items:
        char = item.Title[0].upper()
        if not alphabets.has_key(char):
            continue
        alphabets[char].append(item)

    return [{'letter': x, 'items': alphabets[x]} for x in \
            string.uppercase]


HelpCenterGlossary.alphabetise = alphabetise.__get__(None, HelpCenterGlossary)
generateMethods(HelpCenterGlossary, HelpCenterGlossary.schema.fields())

# Patching HelpCenterDefinition
HelpCenterDefinition = Definition.HelpCenterDefinition

HelpCenterDefinition.schema = HelpCenterDefinition.schema +\
    Schema((DefinitionField),)

generateMethods(HelpCenterDefinition, HelpCenterDefinition.schema.fields())

# Patching FAQFolder
HelpCenterFAQFolder = FAQFolder.HelpCenterFAQFolder

HelpCenterFAQFolder.schema['description'].required = 0

HelpCenterFAQFolder.schema = HelpCenterFAQFolder.schema +\
 def injectSchema(self):
     # inject the mixinschema
     ATFolder.schema = ATFolderSchema + PloneTemplatesMixinSchema
     generateMethods(ATFolder, ATFolder.schema.fields())
from Products.Archetypes.ClassGen import generateMethods
from Products.PloneTemplates.TemplateSchema import PloneTemplatesMixinSchema
from Products.PloneTemplates.config import typesToPatch

# patch objects, see config.py
for klass, schema in typesToPatch:
    schema.addField(PloneTemplatesMixinSchema['templates'])
    schema.addField(PloneTemplatesMixinSchema['inheritTemplates'])
    generateMethods(klass, klass.schema.fields())


# monkey patch, replaces reference field of certain content types to
# an orderable reference field
from Products.EEAContentTypes.content.orderablereffield import field
from Products.EEAContentTypes.content.orderablereffield import (
    types_and_schema,
)
# monkey patch, by default file is not translatable, fix this
from Products.ATContentTypes.content import file as atfile

from Products.ATContentTypes.content import image


for otype, schema in types_and_schema:
    schema.addField(field)
    schema.moveField('relatedItems', pos='bottom')
    generateMethods(otype, [field])


atfile.ATFileSchema['file'].languageIndependent = False

# #4898 Set Content-Disposition: attachment for PDF files
inlineMimetypes = atfile.ATFile.inlineMimetypes
if 'application/pdf' in inlineMimetypes:
    inlineMimetypes = set(inlineMimetypes)
    inlineMimetypes.remove('application/pdf')
    atfile.ATFile.inlineMimetypes = tuple(inlineMimetypes)


image.ATImageSchema['rights'].languageIndependent = True

__all__ = [
 def injectSchema(self):
     # inject the mixinschema
     ATFolder.schema = ATFolderSchema + PloneTemplatesMixinSchema
     generateMethods(ATFolder, ATFolder.schema.fields())