def test_finalize_schema_additional_hide(self): schema = ATContentTypeSchema.copy() finalize(schema, hide=['title']) self.assertEquals(ManagePortal, schema['title'].write_permission) self.assertEquals({'view': 'invisible', 'edit': 'invisible'}, schema['title'].widget.visible)
def test_finalize_schema_do_not_hide(self): schema = ATContentTypeSchema.copy() finalize(schema, show=['subject']) self.assertNotEqual(ManagePortal, schema['subject'].write_permission) self.assertNotEquals({'view': 'invisible', 'edit': 'invisible'}, schema['subject'].widget.visible)
def test_finalize_schema(self): schema = ATContentTypeSchema.copy() finalize(schema) for name in DEFAULT_TO_HIDE: if name in schema: self.assertEquals(ManagePortal, schema[name].write_permission) self.assertEquals({'view': 'invisible', 'edit': 'invisible'}, schema[name].widget.visible) self.assertTrue(schema['excludeFromNav'].default)
class Foo(ATCTContent): """ sample content type for testing purposes """ schema = ATContentTypeSchema.copy() portal_type = 'Foo' index_counter = 0 def indexObject(self): """ overridden index method calling its super variant """ super(Foo, self).indexObject() self.index_counter += 1 assert self.index_counter < 42, 'indexing loop detected'
from Products.ZMetadata.config import * from Products.ATContentTypes.content.schemata import ATContentTypeSchema ##code-section module-header #fill in your manual code here ##/code-section module-header schema = Schema(( ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #MetadataContainer_schema = BaseFolderSchema.copy() + schema.copy() MetadataContainer_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class MetadataContainer(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder,'__implements__',()),) # This name appears in the 'add' box archetype_name = 'MetadataContainer' meta_type = 'MetadataContainer' portal_type = 'MetadataContainer'
from Products.ATContentTypes.content.image import ATImage from my315ok.watermarkImage.watermarkfield import WatermarkImageField as ImageField from my315ok.watermarkImage import watermarkImageMessageFactory as _ from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.configuration import zconf from Products.validation.config import validation from Products.validation.validators.SupplValidators import MaxSizeValidator from Products.validation import V_REQUIRED validation.register(MaxSizeValidator('checkImageMaxSize', maxsize=zconf.ATImage.max_file_size)) WatermarkImageSchema = ATContentTypeSchema.copy() + atapi.Schema(( ImageField('image', required=True, primary=True, languageIndependent=True, storage = atapi.AnnotationStorage(migrate=True), swallowResizeExceptions = zconf.swallowImageResizeExceptions.enable, pil_quality = zconf.pil_config.quality, pil_resize_algo = zconf.pil_config.resize_algo, max_size = zconf.ATImage.max_image_dimension, sizes= {'large' : (768, 768), 'preview' : (400, 400), 'mini' : (200, 200), }, validators = (('isNonEmptyFile', V_REQUIRED), ('checkImageMaxSize', V_REQUIRED)),
from AccessControl import ClassSecurityInfo from Products.Archetypes.atapi import * from zope.interface import implements from Products.FacultyStaffDirectory.interfaces.facultystaffdirectory import IFacultyStaffDirectory from Products.FacultyStaffDirectory.config import * from Products.CMFCore.permissions import View, ManageUsers from Products.CMFCore.utils import getToolByName from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema, finalizeATCTSchema from Products.membrane.at.interfaces import IPropertiesProvider from Products.membrane.utils import getFilteredValidRolesForPortal from Acquisition import aq_inner, aq_parent from Products.FacultyStaffDirectory import FSDMessageFactory as _ schema = ATContentTypeSchema.copy() + Schema(( LinesField( 'roles_', accessor='getRoles', mutator='setRoles', edit_accessor='getRawRoles', vocabulary='getRoleSet', default=['Member'], multiValued=1, write_permission=ManageUsers, widget=MultiSelectionWidget( label=_("FacultyStaffDirectory_label_FacultyStaffDirectoryRoles", default="Roles"), description=_( "FacultyStaffDirectory_description_FacultyStaffDirectoryRoles", default=
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATFile from Products.ATContentTypes import ATCTMessageFactory as _ from Products.validation.validators.SupplValidators import MaxSizeValidator from Products.validation.config import validation from Products.validation import V_REQUIRED LOG = logging.getLogger('ATCT') validation.register(MaxSizeValidator('checkFileMaxSize', maxsize=zconf.ATFile.max_file_size)) ATFileSchema = ATContentTypeSchema.copy() + Schema(( FileField('file', required=True, primary=True, searchable=True, languageIndependent=True, storage=AnnotationStorage(migrate=True), validators=(('isNonEmptyFile', V_REQUIRED), ('checkFileMaxSize', V_REQUIRED)), widget=FileWidget( description='', label=_(u'label_file', default=u'File'), show_content_type=False,)), ), marshall=PrimaryFieldMarshaller() )
from zope.event import notify from zope.interface import implements from zope.lifecycleevent import ObjectModifiedEvent def default_start(): return DT(default_start_dt()) def default_end(): return DT(default_end_dt()) def first_weekday_sun0(): return wkday_to_mon1(first_weekday()) ATEventSchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.DateTimeField('startDate', required=True, searchable=False, accessor='start', write_permission=ModifyPortalContent, default_method=default_start, languageIndependent=True, widget=DatetimeWidget( label=_( u'label_event_start', default=u'Event Starts' ), description=_( u'help_event_start',
from Products.Archetypes.Marshall import PrimaryFieldMarshaller from Products.COREBlog2.config import PROJECTNAME #Interfaces #from Products.CMFPlone.interfaces.NonStructuralFolder import \ # INonStructuralFolder from AccessControl import ClassSecurityInfo from Products.CMFCore.permissions import View,ModifyPortalContent from Products.CMFCore.utils import getToolByName from zope.interface import implements from actions_proxy import updateAliases, base_aliases COREBlogCategorySchema = ATContentTypeSchema.copy() + Schema(( IntegerField('internal_id', searchable=False, isMetadata=True, mutator="setInternal_id", widget=IntegerWidget(label='Internal ID', description='', visible={'view':'invisible','edit':'hidden'}, ), ), ImageField('category_image', widget=ImageWidget(label='Category image', description='', label_msgid='label_category_image',
import urlparse import FieldsConfig import urllib from ZipUtil import ZipUtil ##code-section module-header #fill in your manual code here from Products.CMFPlone import PloneMessageFactory as _ ##/code-section module-header schema = Schema((), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #MetadataManager_schema = BaseFolderSchema.copy() + schema.copy() MetadataManager_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class MetadataManager(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder, '__implements__', ()), ) # This name appears in the 'add' box archetype_name = 'MetadataManager'
from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATNewsItem from Products.ATContentTypes import ATCTMessageFactory as _ from Products.CMFCore.permissions import View from Products.validation.config import validation from Products.validation.validators.SupplValidators import MaxSizeValidator from Products.validation import V_REQUIRED validation.register( MaxSizeValidator('checkNewsImageMaxSize', maxsize=zconf.ATNewsItem.max_file_size)) ATNewsItemSchema = ATContentTypeSchema.copy() + Schema( ( TextField( 'text', required=False, searchable=True, primary=True, storage=AnnotationStorage(migrate=True), validators=('isTidyHtmlWithCleanup', ), #validators = ('isTidyHtml',), default_output_type='text/x-html-safe', widget=RichWidget( description='', label=_(u'label_body_text', u'Body Text'), rows=25, allow_file_upload=zconf.ATDocument.allow_document_upload)),
try: from Products.Archetypes.Widget import RelatedItemsWidget as ReferenceBrowserWidget except ImportError: try: from archetypes.referencebrowserwidget.widget import ReferenceBrowserWidget except ImportError: from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget from Products.CMFBibliographyAT.marshall import BibtexMarshaller from Products.CMFBibliographyAT.config import REFERENCE_TYPES from Products.ATExtensions.ateapi import FormattableNamesField from Products.ATExtensions.ateapi import FormattableNamesWidget from Products.ATExtensions.ateapi import CommentField, CommentWidget from Products.ATExtensions.ateapi import RecordsField, RecordsWidget HeaderSchema = BaseSchema.copy() HeaderSchema['id'].widget.macro_edit = "widgets/string" # XXX ugly hack as long as IdWidget subclasses TypesWidget HeaderSchema['id'].widget.size = 40 HeaderSchema['id'].widget.maxlength = 255 HeaderSchema[ 'id'].widget.condition = 'python: object.visibleIdsEnabled() and not object.getBibFolder().getCookIdsAfterBibRefEdit()' CookIdWarningField = StringField( 'shortname_cookid_warning', schemata="default", mode="rw", accessor="getCookIdWarning", widget=StringWidget( label="Short Name", label_msgid="label_shortname_cookid_warning",
security = ClassSecurityInfo() # isPrincipiaFolderish = True # already on Container # dsn = FieldProperty(IBioSQLRoot['dsn']) dsn = 'postgres://postgres@localhost/plone4bio' seqrecord_key = FieldProperty(IBioSQLRoot['seqrecord_key']) _v_thread_local = local() def __init__(self, *args, **kwargs): if kwargs.has_key('parent'): parent = kwargs['parent'] del(kwargs['parent']) super(BioSQLRoot, self).__init__(*args, **kwargs) """ Plone4BioSchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.StringField("dsn", required=True, widget=atapi.StringWidget(label="dsn", label_msgid="dsn_label", description="DSN " "... " "...", description_msgid="dsn_help", i18n_domain="plone4bio")), atapi.StringField( "seqrecord_key", required=True, enforceVocabulary=True, default='bioentry_id', vocabulary=[
from Products.Archetypes.public import RFC822Marshaller from Products.Archetypes.public import BaseSchema, Schema from Products.Archetypes.public import StringField, IntegerField from Products.Archetypes.public import StringWidget from Products.Archetypes.public import BaseContent, registerType from Products.Archetypes.Marshall import PrimaryFieldMarshaller from Products.CMFCore import permissions as CMFCorePermissions from Products.COREBlog2.config import PROJECTNAME from AccessControl import ClassSecurityInfo from Products.CMFCore.permissions import View from actions_proxy import updateAliases, base_aliases COREBlogTrackbackSchema = ATContentTypeSchema.copy() + Schema( ( #Comment content data StringField( 'url', searchable=1, widget=StringWidget( label='URL', description='', label_msgid="label_coreblog_trackback_url", description_msgid="help_coreblog_trackback_url", i18n_domain="plone", size=60), ), StringField(
from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import StringWidget from Products.Archetypes.atapi import LinesField from Products.Archetypes.atapi import LinesWidget from Products.Archetypes.atapi import TextField from Products.Archetypes.atapi import RichWidget from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.configuration import zconf from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.PloneGlossary.utils import PloneGlossaryMessageFactory as _ # PloneGlossary schema PloneGlossarySchema = ATContentTypeSchema.copy() PloneGlossarySchema['description'].schemata = 'default' finalizeATCTSchema(PloneGlossarySchema, folderish=True) # PloneGlossaryDefinition schema PloneGlossaryDefinitionSchema = ATContentTypeSchema.copy() + Schema(( StringField( 'title', required=True, searchable=True, default='', accessor='Title', widget=StringWidget( label=_('label_glossary_term', default="Term"), description=_('help_glossary_term',
from Products.ZMetadata.config import * from Products.ATContentTypes.content.schemata import ATContentTypeSchema ##code-section module-header #fill in your manual code here ##/code-section module-header schema = Schema(( ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Archive_schema = BaseFolderSchema.copy() + schema.copy() Archive_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Archive(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder,'__implements__',()),) # This name appears in the 'add' box archetype_name = 'Archive' meta_type = 'Archive' portal_type = 'Archive'
from Products.Archetypes.atapi import TextAreaWidget from Products.Archetypes.atapi import TextField from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.lib.constraintypes \ import ConstrainTypesMixinSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.PloneSurvey import PloneSurveyMessageFactory as _ from Products.PloneSurvey.config import NOTIFICATION_METHOD from Products.PloneSurvey.config import TEXT_INPUT_TYPE from Products.PloneSurvey.config import SELECT_INPUT_TYPE from Products.PloneSurvey.config import TEXT_LOCATION from Products.PloneSurvey.config import COMMENT_TYPE from Products.PloneSurvey.config import LIKERT_OPTIONS SurveySchema = ATContentTypeSchema.copy( ) + ConstrainTypesMixinSchema + Schema(( TextField( 'body', searchable=1, required=0, schemata="Introduction", default_content_type='text/html', default_output_type='text/html', allowable_content_types=( 'text/plain', 'text/structured', 'text/html', ), widget=RichWidget( label=_('label_introduction', default=u"Introduction"), description=_('help_introduction',
i18n_domain='ZMetadata', )), StringField(name='type', widget=SelectionWidget( label='Type', label_msgid='ZMetadata_label_type', i18n_domain='ZMetadata', ), vocabulary=Global.config.getMetadataTypes()), ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Standard_schema = BaseSchema.copy() + schema.copy() Standard_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Standard(ATCTContent): """ """ security = ClassSecurityInfo() __implements__ = (getattr(ATCTContent, '__implements__', ()), ) # This name appears in the 'add' box archetype_name = 'Standard' meta_type = 'Standard'
from zope.interface import implements from Products.Archetypes import atapi from Products.ATContentTypes.content import base from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.CMFCore.permissions import View from Products.CMFCore.permissions import ModifyPortalContent from AccessControl import ClassSecurityInfo from iservices.rssdocument import RSSDocumentMessageFactory as _ from iservices.rssdocument.interfaces import IRSSDocument from iservices.rssdocument import config RSSDocumentSchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.StringField( 'RSSLink', required=True, widget=atapi.StringWidget(label=_(u'RSS URL'), description=_(u'The URL of the RSS Feed')), ), atapi.IntegerField( 'max_entries', required=True, widget=atapi.IntegerWidget( label=_(u'Max Entries'), description=_(u'Maximum Number of entries to show')), ), )) finalizeATCTSchema(RSSDocumentSchema)
"""Definition of the ServiceComponent content type """ from zope.interface import implements from Products.Archetypes import atapi from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content import schemata # -*- Message Factory Imported Here -*- from pcp.contenttypes.interfaces import IActionItem from pcp.contenttypes.config import PROJECTNAME ActionItemSchema = ATContentTypeSchema.copy() + atapi.Schema(( # -*- Your Archetypes field definitions here ... -*- )) schemata.finalizeATCTSchema(ActionItemSchema, folderish=False, moveDiscussion=False) class ActionItem(atapi.BaseContent): """Component of an EUDAT service""" implements(IActionItem) meta_type = "ActionItem" schema = ActionItemSchema
from Products.Archetypes.public import * from Products.Archetypes.utils import shasattr from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.content.base import registerATCT from Products.TALESField import TALESString from Products.PloneFormGen import PloneFormGenMessageFactory as _ from Products.PloneFormGen.config import * from Products.PloneFormGen.interfaces import IPloneFormGenActionAdapter FormAdapterSchema = ATContentTypeSchema.copy() + Schema(( TALESString('execCondition', schemata='overrides', searchable=0, required=0, validators=('talesvalidator',), default='', write_permission=EDIT_TALES_PERMISSION, read_permission=ModifyPortalContent, isMetadata=True, # just to hide from base view widget=StringWidget(label=_(u'label_execcondition_text', default=u"Execution Condition"), description=_(u'help_execcondition_text', default=u""" A TALES expression that will be evaluated to determine whether or not to execute this action. Leave empty if unneeded, and the action will be executed. Your expression should evaluate as a boolean; return True if you wish
from Products.Archetypes.public import * from Products.Archetypes.utils import shasattr from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.content.base import registerATCT from Products.TALESField import TALESString from Products.PloneFormGen import PloneFormGenMessageFactory as _ from Products.PloneFormGen.config import * from Products.PloneFormGen.interfaces import IPloneFormGenActionAdapter FormAdapterSchema = ATContentTypeSchema.copy() + Schema(( TALESString( 'execCondition', schemata='overrides', searchable=0, required=0, validators=('talesvalidator', ), default='', write_permission=EDIT_TALES_PERMISSION, read_permission=ModifyPortalContent, isMetadata=True, # just to hide from base view widget=StringWidget( label=_('label_execcondition_text', default="Execution Condition"), description=_('help_execcondition_text', default=""" A TALES expression that will be evaluated to determine whether or not
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from ftw.book import _ from ftw.book.config import PROJECTNAME from ftw.book.interfaces import IHTMLBlock from ftw.contentpage.content import textblock from ftw.contentpage.content.schema import finalize from zope.interface import implements if HAS_LINGUA_PLONE: from Products.LinguaPlone import public as atapi else: from Products.Archetypes import atapi htmlblock_schema = ATContentTypeSchema.copy() + \ textblock.default_schema.copy() htmlblock_schema['title'].required = False htmlblock_schema['description'].widget.visible = {'view': 'invisible', 'edit': 'invisible'} htmlblock_schema['text'].validators = () htmlblock_schema['text'].default_output_type = 'text/html' htmlblock_schema['text'].widget = atapi.TextAreaWidget( label=_(u'label_html', default=u'HTML'), description='', rows=32, cols=70) finalize(htmlblock_schema)
import time from StringIO import StringIO import Global from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.CMFCore import permissions ##code-section module-header #fill in your manual code here ##/code-section module-header schema = Schema((), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Logs_schema = BaseFolderSchema.copy() + schema.copy() Logs_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Logs(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder, '__implements__', ()), ) # This name appears in the 'add' box archetype_name = 'Logs' meta_type = 'Logs'
## StringField( ## name='name', ## widget=StringWidget( ## label='Name', ## label_msgid='ZMetadata_label_name', ## i18n_domain='ZMetadata', ## ) ## ), ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Custodian_schema = BaseFolderSchema.copy() + schema.copy() Custodian_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Custodian(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder, '__implements__', ()), ) # This name appears in the 'add' box archetype_name = 'Custodian' meta_type = 'Custodian'
import plone.api from zope.interface import implements from Products.Archetypes import atapi from Products.ATContentTypes.content import schemata from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.Archetypes.atapi import ReferenceField from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget from Products.CMFCore.permissions import ModifyPortalContent from Products.ATContentTypes import ATCTMessageFactory as _ from pcp.contenttypes.interfaces import IActionList from pcp.contenttypes.config import PROJECTNAME ActionListSchema = ATContentTypeSchema.copy() + atapi.Schema( (ReferenceField('service', relationship='forService', multiValued=False, languageIndependent=True, write_permission=ModifyPortalContent, widget=ReferenceBrowserWidget( allow_search=True, allow_browse=True, show_indexes=False, show_path=1, force_close_on_insert=True, startup_directory='/catalog', base_query={'portal_type': 'Service'}, label=_(u'label_service', default=u'Related service'), description='',
from Products.CMFCore.permissions import View from Products.Reflecto.permissions import AddReflectorFolder from Products.Reflecto.config import PROJECTNAME from Products.Reflecto.interfaces import IReflector from Products.Reflecto.interfaces import ILifeProxy from Products.Reflecto.utils import makePathAbsolute from Products.Reflecto.fields import InterfaceField from Products.Reflecto.config import HAS_CACHESETUP from webdav.Collection import Collection from ZPublisher import xmlrpc from Acquisition import aq_base from directory import ReflectoDirectoryBase, ReflectoNullResource ReflectoSchema = ATContentTypeSchema.copy() + Schema(( InterfaceField("life", write_permission = AddReflectorFolder, required = False, default = False, interface = ILifeProxy, widget = BooleanWidget( label = "Show live data", label_msgid = "life_label", description = "If this flag is set the live contents of the " "filesystem will be shown. This makes Reflecto " "a lot slower and prevents indexing of files. " "Please note that due to browser caching and " "proxy servers users may still see cached older " "data.", description_msgid = "life_help",
BooleanField( name='categoryIndependent', languageIndependent=True, widget=BooleanField._properties['widget']( visible=dict(edit='invisible', view='invisible'), label=_(u'ra_categoryIndependent_label', default=u'Category independent'), description=_(u'ra_categoryIndependent_description', default=u'Tick here to limit your search to general and introductory Risk Assessment Links.'), ), ), ), ) RiskAssessmentLink_schema = BaseSchema.copy() + \ ATContentTypeSchema.copy() + \ schema.copy() finalizeATCTSchema(RiskAssessmentLink_schema) unwantedFields = ('rights', 'subject', 'contributors', 'allowDiscussion', 'location', 'creators', 'effectiveDate', 'expirationDate', 'creation_date', 'modification_date', 'relatedItems', 'excludeFromNav', 'language') for name in unwantedFields: RiskAssessmentLink_schema[name].widget.visible['edit'] = 'invisible' RiskAssessmentLink_schema.changeSchemataForField(name, 'Other') class RiskAssessmentLink(BaseContent, ATCTContent, BrowserDefaultMixin):
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.configuration import zconf from Products.PloneFormGen.config import PROJECTNAME from Products.PloneFormGen.interfaces import IPloneFormGenThanksPage from Products.PloneFormGen import PloneFormGenMessageFactory as _ from Products.PloneFormGen import HAS_PLONE30, dollarReplace from Products.PloneFormGen import implementedOrProvidedBy import zope.i18n ThanksPageSchema = ATContentTypeSchema.copy() + Schema(( BooleanField('showAll', required=0, searchable=0, default='1', widget=BooleanWidget( label="Show All Fields", description=""" Check this to display input for all fields (except label and file fields). If you check this, the choices in the pick box below will be ignored. """, label_msgid = "label_showallfields_text", description_msgid = "help_showallfields_text", i18n_domain = "ploneformgen",
default=u"Options Vocabulary"), description=_(u'help_fgtvocabulary_text', default=u""" A TALES expression that will be evaluated when the form is displayed to get the field options. Leave empty if unneeded. Your TALES expression should evaluate as a list of (key, value) tuples. PLEASE NOTE: errors in the evaluation of this expression will cause an error on form display. """), size=70, ), ) # establish a bare baseline # only label field uses this without change BareFieldSchema = ATContentTypeSchema.copy() BareFieldSchema['title'].searchable = False BareFieldSchema['title'].widget.label = _(u'label_fieldlabel_text', default=u'Field Label') BareFieldSchema['description'].searchable = False BareFieldSchema['description'].widget.label = _(u'label_fieldhelp_text', default=u'Field Help') BareFieldSchema['description'].widget.description = None ### # BaseFieldSchema -- more common baseline # Used as a base schema for several fields BaseFieldSchema = BareFieldSchema.copy() + Schema(( BooleanField( 'required',
from Products.ZMetadata.config import * from Products.ATContentTypes.content.schemata import ATContentTypeSchema ##code-section module-header #fill in your manual code here ##/code-section module-header schema = Schema(( ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #LogContainer_schema = BaseFolderSchema.copy() + schema.copy() LogContainer_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class LogContainer(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder,'__implements__',()),) # This name appears in the 'add' box archetype_name = 'LogContainer' meta_type = 'LogContainer' portal_type = 'LogContainer'
from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.content.base import translateMimetypeAlias from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATDocument from Products.ATContentTypes.lib.historyaware import HistoryAwareMixin from Products.CMFCore.permissions import ModifyPortalContent from Products.CMFCore.permissions import View from Products.CMFCore.utils import getToolByName from Products.GenericSetup.interfaces import IDAVAware from types import TupleType from zope.interface import implementer from ZPublisher.HTTPRequest import HTTPRequest ATDocumentSchema = ATContentTypeSchema.copy() + Schema( ( TextField( "text", required=False, searchable=True, primary=True, storage=AnnotationStorage(migrate=True), validators=("isTidyHtmlWithCleanup",), # validators=('isTidyHtml',), default_output_type="text/x-html-safe", widget=TinyMCEWidget( description="", label=_(u"label_body_text", default=u"Body Text"), rows=25, allow_file_upload=zconf.ATDocument.allow_document_upload,
# -*- coding: utf-8 -*- from AccessControl import ClassSecurityInfo from Products.Archetypes import atapi from zope.interface import implements from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin from vindula.streaming.config import PROJECTNAME from vindula.streaming.content.interfaces import IVindulaStreaming from Products.ATContentTypes.content.schemata import ATContentTypeSchema from vindula.content.models.content_field import ContentField StreamingSchema = ATContentTypeSchema.copy() + atapi.Schema( ( atapi.StringField( name="duracao", widget=atapi.StringField._properties["widget"]( label="Tempo de Duração", description="Informe o tempo de duração desta multimídia" ), required=True, ), atapi.StringField( name="ano", widget=atapi.StringField._properties["widget"]( label="Ano da Multimídia", description="Informe o ano desta multimídia" ), required=False, ),
""" from Products.CMFCore.permissions import View from AccessControl import ClassSecurityInfo from Acquisition import aq_parent from zope.interface import implements from Products.Archetypes import atapi from Products.ATContentTypes.content import schemata from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema from plone.app.blob.field import ImageField from jarn.kommuner.config import PROJECTNAME from jarn.kommuner.interfaces import IPerson from jarn.kommuner import kommunerMessageFactory as _ PersonSchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.TextField( 'body', required=False, searchable=True, validators=('isTidyHtmlWithCleanup', ), default_output_type='text/x-html-safe', widget=atapi.RichWidget(description='', label=_(u'label_body_text', default=u'Body Text'), rows=25), ), atapi.StringField('description', widget=atapi.StringWidget( label=_(u"Job title"), description=_(u"The position the person holds.")),
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes import ATCTMessageFactory as _ from Products.CMFCore.permissions import View from Products.validation.config import validation from Products.validation.validators.SupplValidators import MaxSizeValidator from Products.validation import V_REQUIRED validation.register(MaxSizeValidator('checkNewsImageMaxSize', maxsize=zconf.ATNewsItem.max_file_size)) ATNewsItemSchema = ATContentTypeSchema.copy() + Schema(( TextField('text', required = False, searchable = True, primary = True, storage = AnnotationStorage(migrate=True), validators = ('isTidyHtmlWithCleanup',), #validators = ('isTidyHtml',), default_output_type = 'text/x-html-safe', widget = RichWidget( description = '', label = _(u'label_body_text', u'Body Text'), rows = 25, allow_file_upload = zconf.ATDocument.allow_document_upload) ), ImageField('image',
atapi.StringField('playbackUrl', searchable=0, accessor="getPlaybackUrl", mode="r", widget=atapi.ComputedWidget(label="Url", description="Url set by Kaltura after upload (read only)", visible = { 'edit' :'visible', 'view' : 'visible' }, i18n_domain="kaltura_video") ), ), marshall=RFC822Marshaller() ) KalturaVideoSchema += KalturaBase.KalturaMetadataSchema.copy() KalturaVideoSchema += ATContentTypeSchema.copy() # Set storage on fields copied from ATContentTypeSchema, making sure # they work well with the python bridge properties. KalturaVideoSchema.get('title').storage = AnnotationStorage() KalturaVideoSchema[ 'categories'].widget.description = "Select category(ies) this video will belong to" KalturaVideoSchema[ 'categories'].widget.description_msgid = "desc_kvideo_categories" KalturaVideoSchema[ 'tags'].widget.description = "keyword tags to place on this video (one per line)" KalturaVideoSchema['tags'].widget.description_msgid = "desc_kvideo_tags" finalizeATCTSchema(KalturaVideoSchema, moveDiscussion=False)
class ECQResult(ATCTContent, HistoryAwareMixin): """A quiz result.""" """ This class contains all the candidate-specific information for an ECQuiz. They are: questionResults: A dictionary that contains all the information concerning a single question, e. g. the suggested answer, the answer given by the candidate, the grade. The keys are the UIDs of the question. questionContainerIds: A list of the IDs of the 'ECQAbstractGroup' instances that the candidate saw. questionUIDs: A list of IDs of the questions that the candidate saw in their quiz. Unfortunately 'questionResults.keys()' cannot be used since it does not preserve the order of the UIDs. timeStart: The time when the candidate first saw the quiz. timeFinish: The time when the candidate submitted their quiz. """ schema = ATContentTypeSchema.copy() + Schema(( ObjectField( 'questionResults', read_permission=PERMISSION_RESULT_READ, default={}, ), ObjectField( 'possiblePointsCache', read_permission=PERMISSION_RESULT_READ, default={}, ), ObjectField( 'candidatePointsCache', read_permission=PERMISSION_RESULT_READ, default={}, ), ObjectField( 'questionContainerIds', read_permission=PERMISSION_RESULT_READ, default=[], ), ObjectField( 'questionUIDs', read_permission=PERMISSION_RESULT_READ, default=[], ), DateTimeField( 'timeStart', read_permission=PERMISSION_RESULT_READ, ), DateTimeField( 'timeFinish', read_permission=PERMISSION_RESULT_READ, default=None, ), IntegerField( 'currentPageNum', read_permission=PERMISSION_RESULT_READ, write_permission=PERMISSION_RESULT_WRITE, default=0, ), ), ) # Don't list this type in the portal navigation. navigation_exclude = True security = ClassSecurityInfo() security.declarePrivate('getQR') def getQR(self, caller, question, dontThrow=False): questionUID = question.UID() qrs = self.getQuestionResults() retVal = qrs.get(questionUID, None) if (retVal is not None) or dontThrow: return retVal else: txt = "%s() called for questionUID not in self.questionUIDs\n" \ "questionUID: %s\n" \ "self.questionUIDs: %s" \ % (caller, repr(questionUID), repr(self.getQuestionUIDs())) log(txt) raise Exception(txt) security.declarePrivate('storeQR') def storeQR(self, question, result): qrs = self.getQuestionResults() qrs[question.UID()] = result # Instead of saving "qrs" directly, save a copy of it, # "dict(qrs)". If we don't do that, there is a chance that # Zope will return an old, cached value the next time # "self.getQuestionResults()" is called because it *thinks* # the cached dictionary is the same as the stored one because # the memory location didn't change. self.setQuestionResults(dict(qrs)) security.declarePrivate('setSuggestedAnswer') def setSuggestedAnswer(self, question, suggestedAnswer): """ Saves the suggested answer values to a question the candidate was asked. @param suggestedAnswer The value or list of values of the answer suggested to the candidate. @param question The question that the answer belongs to. @param questionContainerId The ID of the question container that contains the question. """ # The list 'questionContainerIds' is neccessary because # 'self.questionResults.keys()' does not return the # questionUIDs in the order they were added. questionContainerId = getParent(question).getId() questionUID = question.UID() questionContainerIds = self.getQuestionContainerIds() if questionContainerId not in questionContainerIds: self.setQuestionContainerIds(questionContainerIds + [questionContainerId]) questionUIDs = self.getQuestionUIDs() if questionUID not in questionUIDs: self.setQuestionUIDs(questionUIDs + [questionUID]) qr = QuestionResult(suggestedAnswer) self.storeQR(question, qr) security.declareProtected(PERMISSION_RESULT_READ, 'getSuggestedAnswer') def getSuggestedAnswer(self, question): """ Returns the suggested answer values for a question the candidate was asked. With the standard question and answer types this will be a list of IDs of answer objects. """ qr = self.getQR("getAnswer", question) return qr.getSuggestedAnswer() security.declareProtected(PERMISSION_RESULT_READ, 'getCandidateAnswer') def getCandidateAnswer(self, question): """ Returns the candidate's answer to the question. If this question was not part of their quiz, an exception will be raised. """ qr = self.getQR("getCandidateAnswer", question) return qr.getCandidateAnswer() security.declareProtected(PERMISSION_RESULT_WRITE, 'setCandidateAnswer') def setCandidateAnswer(self, question, answerValue): """ Saves the candidate's answer to a question. @param answerValue The value or list of values of the answer(s) the candidate gave. With the standard question and answer types this will be the ID (list of IDs) of the answer(s) the candidate selected. """ qr = self.getQR("setCandidateAnswer", question) qr.setCandidateAnswer(answerValue) self.storeQR(question, qr) security.declareProtected(PERMISSION_RESULT_WRITE, 'unsetCandidateAnswer') def unsetCandidateAnswer(self, question): """ Removes the candidate's answer to a question. @param answerValue The value or list of values of the belongs to. """ qr = self.getQR("unsetCandidateAnswer", question) qr.unsetCandidateAnswer() self.storeQR(question, qr) ## Points caching: start # Points for an individual question security.declareProtected(PERMISSION_RESULT_READ, 'getCachedQuestionPoints') def getCachedQuestionPoints(self, question): """ """ qr = self.getQR("getCachedQuestionPoints", question) return qr.cachedPoints security.declareProtected(PERMISSION_RESULT_WRITE, 'setCachedQuestionPoints') def setCachedQuestionPoints(self, question, value): """ """ qr = self.getQR("setCachedQuestionPoints", question) qr.cachedPoints = value self.storeQR(question, qr) # Tutor-assigned points for an individual question security.declareProtected(PERMISSION_GRADE, 'setTutorPoints') def getTutorPoints(self, question): """ """ qr = self.getQR("getTutorPoints", question) return qr.tutorPoints security.declareProtected(PERMISSION_GRADE, 'setTutorPoints') def setTutorPoints(self, question, value): """ """ qr = self.getQR("setTutorPoints", question) qr.tutorPoints = value self.storeQR(question, qr) # clear related cache info test = getParent(question) if test.portal_type == ECQGroup.portal_type: questionGroup = test test = getParent(questionGroup) else: questionGroup = None self.setCachedCandidatePoints(test, None) #log("%s: CachedCandidatePoints: %s" % (str(self), str(test))) if questionGroup: self.setCachedCandidatePoints(questionGroup, None) #log("%s: CachedCandidatePoints: %s" % (str(self), # str(questionGroup))) #log("") security.declareProtected(PERMISSION_GRADE, 'unsetTutorPoints') def unsetTutorPoints(self, question): """ """ self.setTutorPoints(question, None) # this also clears any # related caches # Retract to "pending" because the result can't be "graded" if # some grades are missing userId = self.portal_membership.getAuthenticatedMember().getId() comment = "Retracted by %s: tutor grades were deleted" % userId self.tryWorkflowAction('retract_pending', ignoreErrors=True, comment=comment) # Possible points for a question group security.declareProtected(PERMISSION_RESULT_READ, 'getCachedPossiblePoints') def getCachedPossiblePoints(self, questionGroup): """ """ cache = self.getPossiblePointsCache() return cache.get(questionGroup.UID(), None) security.declareProtected(PERMISSION_RESULT_WRITE, 'setCachedPossiblePoints') def setCachedPossiblePoints(self, questionGroup, value): """ """ cache = self.getPossiblePointsCache() cache[questionGroup.UID()] = value self.setPossiblePointsCache(dict(cache)) # Achieved points for a question group security.declareProtected(PERMISSION_RESULT_READ, 'getCachedCandidatePoints') def getCachedCandidatePoints(self, questionGroup): """ """ cache = self.getCandidatePointsCache() return cache.get(questionGroup.UID(), None) security.declareProtected(PERMISSION_RESULT_WRITE, 'setCachedCandidatePoints') def setCachedCandidatePoints(self, questionGroup, value): """ """ cache = self.getCandidatePointsCache() cache[questionGroup.UID()] = value self.setCandidatePointsCache(dict(cache)) # Delete all cached points security.declarePrivate('unsetAllCachedPoints') def unsetAllCachedPoints(self): # Delete cached points for the questions qrs = self.getQuestionResults() for qr in qrs.values(): qr.cachedPoints = None self.setQuestionResults(dict(qrs)) # Delete the caches for possible and candidate points in a # question group self.setPossiblePointsCache({}) self.setCandidatePointsCache({}) #log("%s: deleted all cached points" % (str(self))) # Clear all cached points related to the question [question], # i. e. clear cache for possible and achieved (candidate) points # for the question and the question group and the test that # contain this question security.declarePrivate('unsetCachedQuestionPoints') def unsetCachedQuestionPoints(self, question): """ """ if self.getQR("", question, dontThrow=True) is not None: test = getParent(question) if test.portal_type == ECQGroup.portal_type: questionGroup = test test = getParent(questionGroup) else: questionGroup = None self.setCachedQuestionPoints(question, None) #log("%s: CachedQuestionPoints: %s" % (str(self), str(question))) self.setCachedPossiblePoints(test, None) #log("%s: CachedPossiblePoints: %s" % (str(self), str(test))) self.setCachedCandidatePoints(test, None) #log("%s: CachedCandidatePoints: %s" % (str(self), str(test))) if questionGroup: self.setCachedPossiblePoints(questionGroup, None) #log("%s: CachedPossiblePoints: %s" % (str(self), # str(questionGroup))) self.setCachedCandidatePoints(questionGroup, None) #log("%s: CachedCandidatePoints: %s" % (str(self), # str(questionGroup))) #log("") ## Points caching: end security.declareProtected(PERMISSION_RESULT_READ, 'haveCandidateAnswer') def haveCandidateAnswer(self, question): qr = self.getQR("haveCandidateAnswer", question) return qr.haveCandidateAnswer() security.declareProtected(PERMISSION_RESULT_WRITE, 'startWatch') def startWatch(self, question): qr = self.getQR("startWatch", question) if not qr.isWatchRunning(): qr.addTimeStart(datetime.now()) #log("startWatch: %s" % str(question)) self.storeQR(question, qr) makeTransactionUnundoable() security.declareProtected(PERMISSION_RESULT_WRITE, 'stopWatch') def stopWatch(self, question): qr = self.getQR("stopWatch", question) if qr.isWatchRunning(): #log("stopWatch: %s" % str(question)) qr.addTimeFinish(datetime.now()) self.storeQR(question, qr) security.declareProtected(PERMISSION_RESULT_READ, 'isWatchRunning') def isWatchRunning(self, question): qr = self.getQR("isWatchRunning", question) return qr.isWatchRunning() security.declareProtected(PERMISSION_RESULT_READ, 'getTimeSpent') def getTimeSpent(self, question): """@return A Python timedelta object.""" qr = self.getQR("getTimeSpent", question) return qr.getTimeSpent() security.declareProtected(PERMISSION_RESULT_READ, 'getSetCount') def getSetCount(self, question): """@return The number of times the candidate changed his answer.""" qr = self.getQR("getTimeSpent", question) return qr.getSetCount() security.declarePublic('getWorkflowState') def getWorkflowState(self): """Determine the Plone workflow state.""" wtool = self.portal_workflow wf = wtool.getWorkflowsFor(self)[0] return wf.getInfoFor(self, 'review_state', '') security.declarePublic('hasState') def hasState(self, state): return self.getWorkflowState() == state security.declarePrivate('tryWorkflowAction') def tryWorkflowAction(self, action, ignoreErrors=False, comment=None): wtool = self.portal_workflow wf = wtool.getWorkflowsFor(self)[0] if wf.isActionSupported(self, action): if comment is None: userId = getSecurityManager().getUser().getId() comment = 'State changed by ' + userId wtool.doActionFor(self, action, comment=comment) elif not ignoreErrors: raise TypeError('Unsupported workflow action %s for object %s.' % (repr(action), repr(self))) security.declarePublic('isGradable') def isGradable(self): mcTest = getParent(self) return mcTest.isTutorGraded(self) and \ (self.getWorkflowState() in ("pending", "graded",)) security.declareProtected(PERMISSION_RESULT_WRITE, 'submit') def submit(self): self.setTimeFinish(DateTime()) mcTest = getParent(self) results = mcTest.contentValues(filter={ 'Creator': self.Creator(), 'portal_type': self.portal_type, }) for res in results: # determine workflow action: submit for self and supersede # for all the others if res == self: if mcTest.isTutorGraded(self): action = 'submit_pending' else: action = 'submit_graded' commentAction = 'Submitted' else: action = 'supersede' commentAction = 'Superseded' # execute the action comment = '%s by %s' % (commentAction, self.Creator()) res.tryWorkflowAction(action, ignoreErrors=True, comment=comment) security.declarePublic('isNewer') def isNewer(self, other): return self.getTimeStart() > other.getTimeStart() security.declarePublic('isMoreFinal') def isMoreFinal(self, other): STATES = [ 'unsubmitted', 'superseded', 'pending', 'graded', #'invalid', ] indexes = [STATES.index(o.getWorkflowState()) for o in self, other] return indexes[0] > indexes[1] security.declarePrivate('getViewerNames') def getViewerNames(self): """ Get the names of the users and/or groups which have the local role ROLE_RESULT_VIEWER. This allows reviewers to quickly check who may view an assignment. @return list of user and/or group names """ principalIds = self.users_with_local_role(ROLE_RESULT_VIEWER) names = [] for id in principalIds: if self.portal_groups.getGroupById(id): names.append( self.portal_groups.getGroupById(id).getGroupName()) else: names.append(self.ecq_tool.getFullNameById(id)) return names security.declarePublic('getIndicators') def getIndicators(self): """ Returns a list of dictionaries which contain information necessary to display the indicator icons. """ retVal = [] user = self.portal_membership.getAuthenticatedMember() isOwner = user.has_role(['Owner', 'Reviewer', 'Manager'], self) isGrader = self.userIsGrader(user) viewers = self.getViewerNames() if viewers: if isOwner: retVal.append({ 'src': 'ec_shared.png', 'alt': 'Released', 'alt_msgid': 'label_released', 'title': '; '.join(viewers), }) elif isGrader: retVal.append({ 'src': 'ec_shared.png', 'alt': 'Released', 'alt_msgid': 'label_released', 'title': 'These quiz results have been released for viewing.', 'title_msgid': 'tooltip_released_icon', }) # if self.feedback: # feedback = str(self.feedback) # title = re.sub('[\r\n]+', ' ', feedback)[0:76] # retVal.append({'icon':'comment.png', # 'alt':'Feedback', # 'alt_msgid':'label_feedback', # 'title':title, # }) # if isGrader and hasattr(self, 'remarks') and self.remarks: # remarks = str(self.remarks) # title = re.sub('[\r\n]+', ' ', remarks)[0:76] # retVal.append({'icon':'ecab_remarks.png', # 'alt':'Remarks', # 'alt_msgid':'label_remarks', # 'title':title, # }) return retVal security.declarePublic('translateIndicators') def translateIndicators(self, indicators): # Translate [alt] and [title] for d in indicators: for k_msgid, k_msg in (( 'alt_msgid', 'alt', ), ( 'title_msgid', 'title', )): msgid = d.get(k_msgid, None) if msgid is not None: msg = d[k_msg] d[k_msg] = self.translate(msgid=k_msg, domain=I18N_DOMAIN, default=msg) d.pop(k_msgid) return indicators
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.configuration import zconf from Products.PloneFormGen.config import PROJECTNAME from Products.PloneFormGen.interfaces import IPloneFormGenThanksPage from Products.PloneFormGen import PloneFormGenMessageFactory as _ from Products.PloneFormGen import dollarReplace from Products.PloneFormGen import implementedOrProvidedBy import zope.i18n ThanksPageSchema = ATContentTypeSchema.copy() + Schema(( BooleanField('showAll', required=0, searchable=0, default='1', widget=BooleanWidget( label=_(u'label_showallfields_text', default=u"Show All Fields"), description=_(u'help_showallfields_text', default=u""" Check this to display input for all fields (except label and file fields). If you check this, the choices in the pick box below will be ignored. """), ), ), LinesField('showFields',
from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.content.base import translateMimetypeAlias from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATDocument from Products.ATContentTypes.lib.historyaware import HistoryAwareMixin from Products.CMFCore.permissions import ModifyPortalContent from Products.CMFCore.permissions import View from Products.CMFCore.utils import getToolByName from Products.GenericSetup.interfaces import IDAVAware from types import TupleType from zope.interface import implements from ZPublisher.HTTPRequest import HTTPRequest ATDocumentSchema = ATContentTypeSchema.copy() + Schema( ( TextField( 'text', required=False, searchable=True, primary=True, storage=AnnotationStorage(migrate=True), validators=('isTidyHtmlWithCleanup', ), # validators=('isTidyHtml',), default_output_type='text/x-html-safe', widget=TinyMCEWidget( description='', label=_(u'label_body_text', default=u'Body Text'), rows=25, allow_file_upload=zconf.ATDocument.allow_document_upload),
default = 'No', widget=SelectionWidget ( label='Publish Harvested Metadata', ), vocabulary=['Yes','No'] ), ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Harvester_schema = BaseSchema.copy() + schema.copy() Harvester_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Harvester(BaseContent): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseContent,'__implements__',()),) # This name appears in the 'add' box archetype_name = 'Harvester' meta_type = 'Harvester' portal_type = 'Harvester'
from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATImage from Products.ATContentTypes.lib.imagetransform import ATCTImageTransform from Products.ATContentTypes import ATCTMessageFactory as _ from Products.validation.config import validation from Products.validation.validators.SupplValidators import MaxSizeValidator from Products.validation import V_REQUIRED validation.register(MaxSizeValidator('checkImageMaxSize', maxsize=zconf.ATImage.max_file_size)) ATImageSchema = ATContentTypeSchema.copy() + Schema(( ImageField('image', required=True, primary=True, languageIndependent=True, storage=AnnotationStorage(migrate=True), swallowResizeExceptions=zconf.swallowImageResizeExceptions.enable, pil_quality=zconf.pil_config.quality, pil_resize_algo=zconf.pil_config.resize_algo, max_size=zconf.ATImage.max_image_dimension, sizes={'large': (768, 768), 'preview': (400, 400), 'mini': (200, 200), 'thumb': (128, 128), 'tile': (64, 64), 'icon': (32, 32),
from Products.ATContentTypes import ATCTMessageFactory as _ from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.base import registerATCT from Products.Archetypes.atapi import Schema, LinesField, DisplayList from zope.interface import implements from my.test.content.interfaces import IATTestContent from abstract.widgets.multitree.widget import MultiTreeWidget from AccessControl import ClassSecurityInfo ATTestContentSchema = ATContentTypeSchema.copy() + Schema(( LinesField('myfield', widget=MultiTreeWidget( label=_(u'My Label'), description=_(u'My long description My long description My long description My long description '), singleshot_overlay=True, sources=[('my.vocabolary.source',_(u"Source1")),('my.vocabolary.source2',_(u"Source2"))])), )) finalizeATCTSchema(ATTestContentSchema) class ATTestContent(ATCTContent): """A page in the site. Can contain rich text."""
from Products.Archetypes.public import ReferenceField from Products.Archetypes.public import BooleanField from Products.Archetypes.public import BooleanWidget from Products.Archetypes.public import registerType from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget from Products.EventRegistration import config from Products.EventRegistration.utils import getPropSheet from Products.ATContentTypes.configuration import zconf from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.permission import ChangeEvents from Products.ATContentTypes.content import base from Products.ATContentTypes.lib.constraintypes import ConstrainTypesMixinSchema RegisterableEventSchema = ATContentTypeSchema.copy() + ConstrainTypesMixinSchema + Schema( ( DateTimeField('startDate', required=True, searchable=False, accessor='start', write_permission=ChangeEvents, default_method=DateTime, languageIndependent=True, widget=CalendarWidget( description="", description_msgid="help_event_start", label="Event Starts", label_msgid="label_event_start", i18n_domain="plone", ),
from Products.MimetypesRegistry.common import MimeTypeException from ZODB.POSException import ConflictError from zope.event import notify from zope.interface import implementer from zope.lifecycleevent import ObjectCreatedEvent from zope.lifecycleevent import ObjectModifiedEvent try: from Products.LinguaPlone.public import registerType registerType # make pyflakes happy... except ImportError: from Products.Archetypes.atapi import registerType ATBlobSchema = ATContentTypeSchema.copy() ATBlobSchema['title'].storage = AnnotationStorage() # titles not required for blobs, because we'll use the filename if missing ATBlobSchema['title'].required = False finalizeATCTSchema(ATBlobSchema, folderish=False, moveDiscussion=False) ATBlobSchema.registerLayer('marshall', BlobMarshaller()) try: from Products.CMFCore.CMFCatalogAware import WorkflowAware WorkflowAware # make pyflakes happy... # CMF 2.2 takes care of raising object events for old-style factories hasCMF22 = True except ImportError: hasCMF22 = False
from Products.Archetypes.atapi import TextAreaWidget from Products.Archetypes.atapi import TextField from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.lib.constraintypes \ import ConstrainTypesMixinSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.PloneSurvey import PloneSurveyMessageFactory as _ from Products.PloneSurvey.config import NOTIFICATION_METHOD from Products.PloneSurvey.config import TEXT_INPUT_TYPE from Products.PloneSurvey.config import SELECT_INPUT_TYPE from Products.PloneSurvey.config import TEXT_LOCATION from Products.PloneSurvey.config import COMMENT_TYPE from Products.PloneSurvey.config import LIKERT_OPTIONS SurveySchema = ATContentTypeSchema.copy() + ConstrainTypesMixinSchema + Schema(( TextField( 'body', searchable=1, required=0, schemata="Introduction", default_content_type='text/html', default_output_type='text/html', allowable_content_types=('text/plain', 'text/structured', 'text/html', ), widget=RichWidget( label=_('label_introduction', default=u"Introduction"), description=_(
from Products.ATContentTypes.interface import IATBTreeFolder from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import NextPreviousAwareSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.lib.constraintypes import \ ConstrainTypesMixinSchema from Products.ATContentTypes.content.base import ATCTFolderMixin from Products.ATContentTypes.content.base import registerATCT from plone.app.folder import packageName from plone.app.folder.base import BaseBTreeFolder from plone.app.folder.bbb import IArchivable, IPhotoAlbumAble from plone.app.folder.bbb import folder_implements ATFolderSchema = ATContentTypeSchema.copy() + \ ConstrainTypesMixinSchema.copy() + NextPreviousAwareSchema.copy() finalizeATCTSchema(ATFolderSchema, folderish=True, moveDiscussion=False) class IATUnifiedFolder(IATFolder): """ marker interface for the new, unified folders """ class ATFolder(ATCTFolderMixin, BaseBTreeFolder): """ a folder suitable for holding a very large number of items """ implements(IATUnifiedFolder, IATBTreeFolder, IArchivable, IPhotoAlbumAble) __implements__ = folder_implements schema = ATFolderSchema
default=u"Options Vocabulary"), description=_(u'help_fgtvocabulary_text', default=u""" A TALES expression that will be evaluated when the form is displayed to get the field options. Leave empty if unneeded. Your TALES expression should evaluate as a list of (key, value) tuples. PLEASE NOTE: errors in the evaluation of this expression will cause an error on form display. """), size=70, ), ) # establish a bare baseline # only label field uses this without change BareFieldSchema = ATContentTypeSchema.copy() BareFieldSchema['title'].searchable = False BareFieldSchema['title'].widget.label = _(u'label_fieldlabel_text', default=u'Field Label') BareFieldSchema['description'].searchable = False BareFieldSchema['description'].widget.label = _(u'label_fieldhelp_text', default=u'Field Help') BareFieldSchema['description'].widget.description = None ### # BaseFieldSchema -- more common baseline # Used as a base schema for several fields BaseFieldSchema = BareFieldSchema.copy() + Schema(( BooleanField('required', searchable=0, required=0, widget=BooleanWidget(
atapi.BooleanField('teaserblock', schemata='settings', default=0, widget=atapi.BooleanWidget(description = "teaser blocks shows their related items (ex. for frontpage)", description_msgid = "simplelayout_help_teaserblock", label = "Tick if this block is a teaser", label_msgid = "simplelayout_label_teaserblock", i18n_domain = "simplelayout", )), ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema paragraph_schema = ATContentTypeSchema.copy() + \ schema.copy() + textSchema.copy() + imageSchema.copy() paragraph_schema['excludeFromNav'].default = True paragraph_schema['title'].required = False finalize_simplelayout_schema(paragraph_schema) paragraph_schema['description'].widget.visible = {'edit': 0, 'view': 0} paragraph_schema['title'].searchable = 0 paragraph_schema.moveField('teaserblock',before="relatedItems") paragraph_schema['text'].widget.filter_buttons = ('image', ) ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Paragraph(ATDocumentBase): """
from AccessControl import ClassSecurityInfo from Products.ATContentTypes.content.schemata import ATContentTypeSchema from ftw.book.config import PROJECTNAME from ftw.book.interfaces import IRemark from ftw.contentpage.content import textblock from ftw.contentpage.content.schema import finalize from zope.interface import implements try: from Products.LinguaPlone import public as atapi except ImportError: from Products.Archetypes import atapi remark_schema = ATContentTypeSchema.copy() + \ textblock.default_schema.copy() remark_schema['title'].required = False remark_schema['title'].searchable = 0 finalize(remark_schema, hide=['description', 'showTitle']) class Remark(textblock.TextBlock): """A simplelayout block used for comments """ security = ClassSecurityInfo() implements(IRemark) schema = remark_schema
from Products.Archetypes import atapi from Products.ATContentTypes.content import base from Products.ATContentTypes.content import schemata from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema from collective.geo.geoserver import geoMessageFactory as _ from collective.geo.geoserver.config import PROJECTNAME from collective.geo.geoserver.interfaces import IGeoQuery from AccessControl import ClassSecurityInfo from Products.CMFCore import permissions from Products.CMFCore.utils import getToolByName GeoQuerySchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.StringField( 'layer', required=True, searchable=False, vocabulary_factory='layers_vocabulary', widget=atapi.SelectionWidget( label=_(u'label_layer', default='Layer'), description=_( u'help_layer', default=u'Select a layer from the list.' ), ), ), atapi.StringField( 'srid',
from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.CMFCore import permissions ##code-section module-header #fill in your manual code here ##/code-section module-header schema = Schema(( ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema #Logs_schema = BaseFolderSchema.copy() + schema.copy() Logs_schema = ATContentTypeSchema.copy() + schema.copy() ##code-section after-schema #fill in your manual code here ##/code-section after-schema class Logs(BaseFolder): """ """ security = ClassSecurityInfo() __implements__ = (getattr(BaseFolder,'__implements__',()),) # This name appears in the 'add' box archetype_name = 'Logs' meta_type = 'Logs' portal_type = 'Logs'
from archetypes.referencebrowserwidget.widget import ReferenceBrowserWidget from Products.CMFPlone import PloneMessageFactory as _ ##/code-section module-header from config import * schema = Schema(( ), ) ##code-section after-local-schema #fill in your manual code here ##/code-section after-local-schema TCContentReference_schema = ATContentTypeSchema.copy() + \ schema.copy() TCContentReference_schema['title'].required=0 TCContentReference_schema['title'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['description'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['subject'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['location'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['rights'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['contributors'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['creators'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['allowDiscussion'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['creators'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema['creation_date'].widget.visible={'edit':'invisible', 'view':'invisible'} TCContentReference_schema.changeSchemataForField('relatedItems', 'default')
from AccessControl import ClassSecurityInfo from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import StringWidget from Products.ATContentTypes.config import PROJECTNAME from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.content.base import ATCTContent from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATLink from Products.ATContentTypes import ATCTMessageFactory as _ ATLinkSchema = ATContentTypeSchema.copy() + Schema(( StringField('remoteUrl', required=True, searchable=True, primary=True, default="http://", # either mailto, absolute url or relative url validators=(), widget=StringWidget( description='', label=_(u'label_url', default=u'URL'), maxlength='511', )), )) finalizeATCTSchema(ATLinkSchema)
from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interface import IATFolder from Products.ATContentTypes.lib.constraintypes import ConstrainTypesMixinSchema from Products.ATContentTypes.permission import permissions from Products.Archetypes.atapi import BaseFolder from Products.CMFCore.utils import getToolByName from plone.app.folder.base import BaseBTreeFolder from plone.folder.interfaces import IOrderable from zope.event import notify from zope.interface import implementer from zope.lifecycleevent import ObjectCreatedEvent from zope.lifecycleevent import ObjectModifiedEvent ATFolderSchema = ATContentTypeSchema.copy() + ConstrainTypesMixinSchema finalizeATCTSchema(ATFolderSchema, folderish=True, moveDiscussion=False) class UnorderedFolder(BaseFolder): """ sample unordered (old-style) folder for testing purposes """ def SearchableText(self): return '' @implementer(IOrderable) class OrderableFolder(BaseBTreeFolder): """ sample ordered btree-based folder (needing the interface) """ @implementer(IATFolder, IOrderedContainer)
from zope.lifecycleevent import ObjectModifiedEvent def default_start(): return DT(default_start_dt()) def default_end(): return DT(default_end_dt()) def first_weekday_sun0(): return wkday_to_mon1(first_weekday()) ATEventSchema = ATContentTypeSchema.copy() + atapi.Schema(( atapi.DateTimeField( 'startDate', required=True, searchable=False, accessor='start', write_permission=ModifyPortalContent, default_method=default_start, languageIndependent=True, widget=DatetimeWidget( label=_(u'label_event_start', default=u'Event Starts'), description=_(u'help_event_start', default=u"Date and Time, when the event begins."), with_time=1, first_day=first_weekday_sun0, ),
from Products.ATContentTypes.content.base import registerATCT from Products.ATContentTypes.content.schemata import ATContentTypeSchema from Products.ATContentTypes.content.schemata import finalizeATCTSchema from Products.ATContentTypes.interfaces import IATImage from Products.ATContentTypes.lib.imagetransform import ATCTImageTransform from Products.CMFCore.permissions import ModifyPortalContent from Products.CMFCore.permissions import View from Products.validation import V_REQUIRED from Products.validation.config import validation from Products.validation.validators.SupplValidators import MaxSizeValidator from zope.interface import implementer validation.register( MaxSizeValidator('checkImageMaxSize', maxsize=zconf.ATImage.max_file_size)) ATImageSchema = ATContentTypeSchema.copy() + Schema( (ImageField( 'image', required=True, primary=True, languageIndependent=True, storage=AnnotationStorage(migrate=True), swallowResizeExceptions=zconf.swallowImageResizeExceptions.enable, pil_quality=zconf.pil_config.quality, pil_resize_algo=zconf.pil_config.resize_algo, max_size=zconf.ATImage.max_image_dimension, sizes={ 'large': (768, 768), 'preview': (400, 400), 'mini': (200, 200), 'thumb': (128, 128),