def __call__(self, request): """ Validate that the fields for egg name registrations do not conflict with existing names """ main = request.get("distutilsMainId", None) secondary = request.get("distutilsSecondaryIds", None) if (not main) and secondary: return {"distutilsMainId":_("You must set the primary package before you can select secondary packages.")} main = (main, ) if isinstance(secondary, str): secondary = (secondary, ) elif isinstance(secondary, list) or isinstance(secondary, tuple): secondary = tuple(secondary) else: return {"distutilsSecondaryIds":_("You must provide a list of package names")} errors = {} if not self.context._distUtilsNameAvailable(main): errors['distutilsMainId'] = _("This package is already claimed by another project.") if not self.context._distUtilsNameAvailable(secondary): errors['distutilsSecondaryIds'] = _("This contains packages already claimed by another project.") if not errors: return None else: return errors
def __call__(self, request): """ Validate that the fields for egg name registrations do not conflict with existing names """ main = request.get("distutilsMainId", None) secondary = request.get("distutilsSecondaryIds", None) if (not main) and secondary: return {"distutilsMainId":_("You must set the primary package before you can select secondary packages.")} main = (main, ) if isinstance(secondary, str): secondary = (secondary, ) elif isinstance(secondary, list) or isinstance(secondary, tuple): secondary = tuple(secondary) else: return {"distutilsSecondaryIds":_("You must provide a list of package names")} errors = {} if not self.context._distUtilsNameAvailable(main): errors['distutilsMainId'] = _("This package is already claimed by another project.") if not self.context._distUtilsNameAvailable(secondary): errors['distutilsSecondaryIds'] = _("This contains packages already claimed by another project.") if not errors: return None else: return errors
def validate_id(self, value): """Validate the id field, ensuring a valid web address was entered. """ if not value: return _(u"Please provide a version number") if re.search (r'[^\w.-]', value): return _(u'Please only use numbers, letters, underscores (_), ' 'dashes (-) and periods (.) in the version string, no ' 'other punctuation characters or whitespace') else: return None
def validate_id(self, value): """Validate the id field, ensuring a valid web address was entered. """ if not value: return _(u"Please provide a version number") if re.search(r'[^\w.-]', value): return _(u'Please only use numbers, letters, underscores (_), ' 'dashes (-) and periods (.) in the version string, no ' 'other punctuation characters or whitespace') else: return None
def __call__(self, value, *args, **kwargs): # if not is_valid_contact(value): # return """Not a valid contact.""" #print value #print is_valid_contact(value) #return 1 return _(u"""Not a valid contact.""")
def __call__(self, value, *args, **kwargs): # if not is_valid_contact(value): # return """Not a valid contact.""" #print value #print is_valid_contact(value) #return 1 return _("""Not a valid contact.""")
def __call__(self, value, *args, **kwargs): instance = kwargs['instance'] if value in instance.getAvailableCategoriesAsDisplayList().keys(): # return "Short name %s is invalid - " \ # "it is the same as the name of a project category" % (value,) return _(u"Short name %s is invalid - it is the same as the name of a project category") % (value,) else: return 1
def __call__(self, value, *args, **kwargs): instance = kwargs['instance'] if value in instance.getAvailableCategoriesAsDisplayList().keys(): # return "Short name %s is invalid - " \ # "it is the same as the name of a project category" % (value,) return _(u"Short name %s is invalid - it is the same as the name of a project category") % (value,) else: return 1
from zope.interface import implements import transaction from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME, IMPROVEMENTS_ID from Products.PloneSoftwareCenter.interfaces import IImprovementProposalFolderContent PSCImprovementProposalFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget ( label=_(u"label_proposalfolder_short_name", default=u"Short name"), description=_(u"help_proposalfolder_short_name", default=u"Short name of the container - this should be 'roadmap' to comply with the standards."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Roadmap', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_proposalfolder_title", default=u"Title"), description=_(u"help_proposalfolder_title", default=u"Enter a title for the container"), i18n_domain="plonesoftwarecenter", ),
from Products.Archetypes import transaction from Products.ATContentTypes.content.base import ATCTMixin from Products.PloneSoftwareCenter import config from Products.PloneSoftwareCenter import PSCMessageFactory as _ PSCReleaseFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget ( label=_(u"label_releasefolder_short_name", default=u"Short name"), description=_(u"help_releasefolder_short_name", default=u"Short name of the container - this should be 'release' to comply with the standards."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Releases', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_releasefolder_title", default=u"Title"), description=_(u"help_releasefolder_title", default=u"Enter a title for the container"), i18n_domain="plonesoftwarecenter", ),
from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter import config from Products.PloneSoftwareCenter.interfaces import IReleaseContent PSCReleaseSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField('id', required=1, searchable=1, mode="rw", accessor="getId", mutator="setId", default=None, widget=StringWidget( label=_(u"label_release_version", default=u"Version"), description=_(u"help_release_version", default=u"This field is also used in the URL of the item, so please don't use spaces and special characters. Also, please do NOT include the alpha, beta, or release candidate state as this is handled by the workflow. Example: '0.1'."), i18n_domain='plonesoftwarecenter', ), ), ComputedField('title', accessor='Title', expression="context.generateTitle()", mode='r', widget=ComputedWidget( label=_(u"label_release_title", default=u"Release title"), description=_(u"help_release_title", default=u"The title of the release, computed from the title of the project and the version number."), i18n_domain='plonesoftwarecenter', modes=('view',), visible={
from Products.CMFCore import permissions from zope.interface import implements from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME from Products.PloneSoftwareCenter.interfaces import IFileLinkContent PSCFileLinkSchema = BaseSchema.copy() + Schema(( TextField( name='title', default='', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_file_title", default=u"File Description"), description=_(u"help_file_title_filelink", default=u"File description. Normally something like 'Product Package', 'Product Installer', or 'Product Bundle' - if you have several packages in one archive. The uploaded filename will not be changed."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='platform', required=1, searchable=0, vocabulary='getPlatformVocab', widget=SelectionWidget( label=_(u"label_file_platform", default=u"Platform"), description=_(u"help_file_platform", default=u"List of platforms available for selection"), i18n_domain="plonesoftwarecenter", ),
TEXT_TYPES = ( 'text/structured', 'text/x-rst', 'text/html', 'text/plain', ) PSCImprovementProposalSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget( label=_(u"label_proposal_number", default=u"Proposal number"), description=_(u"help_proposal_number", default=u"The number of the Improvement Proposal."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='proposer', required=1, searchable=1, index=":schema", widget=StringWidget( label=_(u"label_proposal_proposer", default=u"Proposer"), description=_(u"help_proposal_proposer", default=u"The person proposing this improvement."), i18n_domain="plonesoftwarecenter",
from Products.ArchAddOn.Widgets import SimpleDataGridWidget from archetypes.referencebrowserwidget.widget import ReferenceBrowserWidget from Products.PloneSoftwareCenter.config import PROJECTNAME from Products.PloneSoftwareCenter.config import trove from Products.PloneSoftwareCenter import PSCMessageFactory as _ PloneSoftwareCenterSchema = OrderedBaseFolder.schema.copy() + Schema(( TextField('description', searchable=1, accessor='Description', storage=MetadataStorage(), widget=TextAreaWidget( label=_(u"label_package_area", default=u"Description"), description=_(u"help_package_area", default=u"Description for the software center."), i18n_domain='plonesoftwarecenter', rows=6, ), ), SimpleDataGridField('availableClassifiers', columns=3, column_names=('id', 'title', 'trove-id'), default=trove.get_datagrid(), widget=SimpleDataGridWidget( label=_(u"label_classifiers", default=u"Classifiers"), description=_(u"help_classifiers_vocab", default=u"Define the Trove classifiers. The format is 'Id | Title | Trove id'. The Id must be unique, and Trove id corresponds to the Trove value"), i18n_domain='plonesoftwarecenter', rows=6,
# prefix=config.EXTERNAL_STORAGE_PATH, # archive=False, # rename=False, # ) #else: # downloadableFileStorage = AttributeStorage() PSCFileSchema = BaseSchema.copy() + Schema( ( TextField( 'title', default='', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_file_title", default=u"File Description"), description=_( u"help_file_title", default= u"File description. Normally something like 'Product Package', 'Windows Installer', - or 'Events subsystem' if you have several separate modules. The actual file name will be the same as the file you upload." ), i18n_domain="plonesoftwarecenter", ), ), FileField( 'downloadableFile', primary=1, required=1, widget=FileWidget( label=_(u"label_file_description", default=u"File"), description=_(
# downloadableFileStorage = ExternalStorage( # prefix=config.EXTERNAL_STORAGE_PATH, # archive=False, # rename=False, # ) #else: # downloadableFileStorage = AttributeStorage() PSCFileSchema = BaseSchema.copy() + Schema(( TextField('title', default='', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_file_title", default=u"File Description"), description=_(u"help_file_title", default=u"File description. Normally something like 'Product Package', 'Windows Installer', - or 'Events subsystem' if you have several separate modules. The actual file name will be the same as the file you upload."), i18n_domain="plonesoftwarecenter", ), ), FileField('downloadableFile', primary=1, required=1, widget=FileWidget( label=_(u"label_file_description", default=u"File"), description=_(u"help_file_description", default=u"Click 'Browse' to upload a release file."), i18n_domain="plonesoftwarecenter", ), storage=DynamicStorage(), ),
from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME, DOCUMENTATION_ID try: from Products.PloneHelpCenter.interfaces import IHelpCenterContent except ImportError: IHelpCenterContent = None PSCDocumentationFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget ( label=_(u"label_doc_short_name", default=u"Short name"), description=_(u"help_doc_short_name", default=u"Short name of the container - this should be 'documentation' to comply with the standards."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Documentation', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_doc_title", default=u"Title"), description=_(u"help_doc_title", default=u"Enter a title for the container"), i18n_domain="plonesoftwarecenter", ),
# downloadableFileStorage = ExternalStorage( # prefix=config.EXTERNAL_STORAGE_PATH, # archive=False, # rename=False, # ) #else: # downloadableFileStorage = AttributeStorage() PSCFileSchema = BaseSchema.copy() + Schema(( TextField('title', default='', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_file_title", default=u"File Description"), description=_(u"help_file_title", default=u"File description. Normally something like 'Product Package', 'Windows Installer', - or 'Events subsystem' if you have several separate modules. The actual file name will be the same as the file you upload."), i18n_domain="plonesoftwarecenter", visible = {'edit' : 'hidden', 'view' : 'visible'}, ), ), FileField('downloadableFile', primary=1, required=1, validators = (('isNonEmptyFile', V_REQUIRED), ('isVirusFree', V_REQUIRED),), widget=FileWidget( label=_(u"label_file_description", default=u"File"), description=_(u"help_file_description", default=u"Click 'Browse' to upload a release file."), i18n_domain="plonesoftwarecenter",
from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.permissions import ApproveProject, \ AddReviewComment from Products.PloneSoftwareCenter.utils import get_projects_by_distutils_ids from zExceptions import Unauthorized import DateTime PSCProjectSchema = OrderedBaseFolder.schema.copy() + Schema(( StringField( 'id', required=0, searchable=1, validators=('isNonConflictingProjectId', ), widget=IdWidget( label=_(u"label_project_short_name", default=u"Short name"), description=_( u"help_project_short_name", default= u"Should not contain spaces, underscores or mixed case. Short Name is part of the item's web address." ), i18n_domain="plonesoftwarecenter", ), ), TextField( 'description', default='', required=1, searchable=1, accessor="Description", storage=MetadataStorage(),
from Products.PloneSoftwareCenter import config from zope.annotation.interfaces import IAnnotations PSCReleaseSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField('id', required=1, searchable=1, mode="rw", accessor="getId", mutator="setId", default=None, widget=StringWidget( label=_(u"label_release_version", default=u"Version"), description=_(u"help_release_version", default=u"This field is also used in the URL of the item, so please don't use spaces and special characters. Also, please do NOT include the alpha, beta, or release candidate state as this is handled by the workflow. Example: '0.1'."), i18n_domain='plonesoftwarecenter', ), ), ComputedField('title', accessor='Title', expression="context.generateTitle()", mode='r', widget=ComputedWidget( label=_(u"label_release_title", default=u"Release title"), description=_(u"help_release_title", default=u"The title of the release, computed from the title of the project and the version number."), i18n_domain='plonesoftwarecenter', modes=('view',), visible={
from Products.Archetypes.atapi import * from zope.interface import implements import transaction from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME, IMPROVEMENTS_ID from Products.PloneSoftwareCenter.interfaces import IImprovementProposalFolderContent PSCImprovementProposalFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget( label=_("label_proposalfolder_short_name", default="Short name"), description=_( "help_proposalfolder_short_name", default= "Short name of the container - this should be 'roadmap' to comply with the standards." ), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Roadmap', searchable=1, accessor="Title", widget=StringWidget( label=_("label_proposalfolder_title", default="Title"),
from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME, DOCUMENTATION_ID try: from Products.PloneHelpCenter.interfaces import IHelpCenterContent except ImportError: IHelpCenterContent = None PSCDocumentationFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget( label=_(u"label_doc_short_name", default=u"Short name"), description=_( u"help_doc_short_name", default= u"Short name of the container - this should be 'documentation' to comply with the standards." ), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Documentation', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_doc_title", default=u"Title"),
from Products.CMFCore import permissions from zope.interface import implements import transaction from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter import config from Products.PloneSoftwareCenter.interfaces import IReleaseFolderContent PSCReleaseFolderSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget( label=_(u"label_releasefolder_short_name", default=u"Short name"), description=_( u"help_releasefolder_short_name", default= u"Short name of the container - this should be 'release' to comply with the standards." ), i18n_domain="plonesoftwarecenter", ), ), StringField( name='title', default='Releases', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_releasefolder_title", default=u"Title"),
from Products.PloneSoftwareCenter.permissions import ApproveProject, \ AddReviewComment from Products.PloneSoftwareCenter.utils import get_projects_by_distutils_ids from zExceptions import Unauthorized import DateTime PSCProjectSchema = OrderedBaseFolder.schema.copy() + Schema(( StringField('id', required=0, searchable=1, validators=('isNonConflictingProjectId',), widget=IdWidget ( label=_(u"label_project_short_name", default=u"Short name"), description=_(u"help_project_short_name", default=u"Should not contain spaces, underscores or mixed case. Short Name is part of the item's web address."), i18n_domain="plonesoftwarecenter", ), ), TextField('description', default='', required=1, searchable=1, accessor="Description", storage=MetadataStorage(), widget=TextAreaWidget( label=_(u"label_project_summary", default=u"Project Summary"), description=_(u"help_description", default=u"A short summary of the project."), i18n_domain="plonesoftwarecenter",
from Products.Archetypes.atapi import * from Products.CMFCore import permissions from zope.interface import implements from Products.PloneSoftwareCenter import PSCMessageFactory as _ from Products.PloneSoftwareCenter.config import PROJECTNAME from Products.PloneSoftwareCenter.interfaces import IFileLinkContent PSCFileLinkSchema = BaseSchema.copy() + Schema(( TextField( name='title', default='', searchable=1, accessor="Title", widget=StringWidget( label=_(u"label_file_title", default=u"File Description"), description=_( u"help_file_title_filelink", default= u"File description. Normally something like 'Product Package', 'Product Installer', or 'Product Bundle' - if you have several packages in one archive. The uploaded filename will not be changed." ), i18n_domain="plonesoftwarecenter", ), ), StringField( name='platform', required=1, searchable=0, vocabulary='getPlatformVocab', widget=SelectionWidget( label=_(u"label_file_platform", default=u"Platform"),
'text/structured', 'text/x-rst', 'text/html', 'text/plain', ) PSCImprovementProposalSchema = OrderedBaseFolderSchema.copy() + Schema(( StringField( name='id', required=0, searchable=1, mode='r', # Leave the custom auto-generated ID widget=StringWidget( label=_(u"label_proposal_number", default=u"Proposal number"), description=_(u"help_proposal_number", default=u"The number of the Improvement Proposal."), i18n_domain="plonesoftwarecenter", ), ), StringField( name='proposer', required=1, searchable=1, index=":schema", widget=StringWidget( label=_(u"label_proposal_proposer", default=u"Proposer"), description=_(u"help_proposal_proposer", default=u"The person proposing this improvement."), i18n_domain="plonesoftwarecenter", ),