Exemple #1
0
    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
Exemple #2
0
    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
Exemple #4
0
 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
Exemple #5
0
 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.""")
Exemple #7
0
    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
Exemple #8
0
    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",
        ),
Exemple #10
0
    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",
        ),
Exemple #13
0
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",
Exemple #14
0
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,
Exemple #15
0
#        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(),
    ),
Exemple #17
0
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",
Exemple #19
0
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(),
Exemple #20
0
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"),
Exemple #24
0
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"),
Exemple #26
0
    '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",
        ),