def getRaw(self, instance, aslist=False, **kwargs): """Return the list of UIDs referenced under this fields relationship. During creation look for a default value. This will only work for user edited forms, not programmatically generated content. """ if instance._at_creation_flag: return self.getDefault(instance) else: return ReferenceField.getRaw(self, instance, aslist, **kwargs)
def update_item_schema(baseSchema): specificSchema = Schema(( TextField( name='internalCommunication', widget=RichWidget( condition="python: here.portal_plonemeeting.isManager(here)", description="InternalCommunication", description_msgid="item_internalCommunication_descr", label='InternalCommunication', label_msgid='PloneMeeting_label_internalCommunication', i18n_domain='PloneMeeting', ), optional=True, default_content_type="text/html", allowable_content_types=('text/html', ), default_output_type="text/x-html-safe", ), ReferenceField( name='strategicAxis', keepReferencesOnCopy=True, widget=ReferenceBrowserWidget( description="StrategicAxis", description_msgid="item_strategicAxis_descr", condition="python: here.attributeIsUsed('strategicAxis')", allow_search=True, allow_browse=False, startup_directory_method="classifierStartupDirectory", force_close_on_insert=False, restrict_browsing_to_startup_directory=True, base_query="classifierBaseQuery", show_results_without_query=True, label='StrategicAxis', label_msgid='PloneMeeting_label_strategicAxis', i18n_domain='PloneMeeting', ), multiValued=True, relationship="ItemStrategicAxis", allowed_types=('MeetingCategory', ), optional=True, ), )) baseSchema[ 'detailedDescription'].widget.description = "DetailedDescriptionMethode" baseSchema[ 'detailedDescription'].widget.description_msgid = "detailedDescription_item_descr" completeItemSchema = baseSchema + specificSchema.copy() completeItemSchema.moveField('strategicAxis', after='detailedDescription') return completeItemSchema
class ATRefnode(BaseContent): """A simple archetype for testing references. It can point to itself""" schema = BaseSchema.copy() + Schema(( ReferenceField('relatedItems', relationship='relatesTo', multiValued=True, isMetadata=True, languageIndependent=False, index='KeywordIndex', referencesSortable=True, keepReferencesOnCopy=True, write_permission=ModifyPortalContent, widget=ReferenceWidget(label=u'label_related_items', description='', visible={ 'edit': 'visible', 'view': 'invisible' })), # make it a list ))
from bika.lims.browser.widgets import DateTimeWidget schema = BikaSchema.copy() + Schema(( ComputedField( 'RequestID', expression='here.getRequestID()', widget=ComputedWidget(visible=True, ), ), FileField( 'AttachmentFile', widget=FileWidget(label=_("Attachment"), ), ), ReferenceField( 'AttachmentType', required=0, allowed_types=('AttachmentType', ), relationship='AttachmentAttachmentType', widget=ReferenceWidget(label=_("Attachment Type"), ), ), StringField( 'ReportOption', searchable=True, vocabulary="ATTACHMENT_REPORT_OPTIONS", widget=SelectionWidget( label=_("Report Options"), checkbox_bound=0, format='select', visible=True, default='a', ), ),
from bika.lims import logger from bika.lims.config import PROJECTNAME from bika.lims.content.bikaschema import BikaSchema from bika.lims.interfaces import IInstrumentCertification from plone.app.blob.field import FileField as BlobFileField from zope.interface import implements schema = BikaSchema.copy() + Schema(( StringField( 'TaskID', widget=StringWidget( label=_("Task ID"), description=_("The instrument's ID in the lab's asset register"), )), ReferenceField('Instrument', allowed_types=('Instrument', ), relationship='InstrumentCertificationInstrument', widget=StringWidget(visible=False, )), ComputedField( 'InstrumentUID', expression= 'context.getInstrument() and context.getInstrument().UID() or None', widget=ComputedWidget(visible=False, ), ), # Set the Certificate as Internal # When selected, the 'Agency' field is hidden BooleanField('Internal', default=False, widget=BooleanWidget( label=_("Internal Certificate"), description=_(
from bika.lims.utils import to_utf8 from bika.lims.config import PROJECTNAME from bika.lims.interfaces import IInstrument from bika.lims.config import QCANALYSIS_TYPES from bika.lims.content.bikaschema import BikaSchema from bika.lims.content.bikaschema import BikaFolderSchema from bika.lims import bikaMessageFactory as _ schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'InstrumentType', vocabulary='getInstrumentTypes', allowed_types=('InstrumentType', ), relationship='InstrumentInstrumentType', required=1, widget=SelectionWidget(format='select', label=_("Instrument type"), visible={ 'view': 'invisible', 'edit': 'visible' }), ), ReferenceField( 'Manufacturer', vocabulary='getManufacturers', allowed_types=('Manufacturer', ), relationship='InstrumentManufacturer', required=1, widget=SelectionWidget(format='select', label=_("Manufacturer"), visible={
default=True, widget=BooleanWidget( label=_("Use Dashboard as default front page"), description=_("Select this to activate the dashboard as a default front page.") ), ), ReferenceField( 'LandingPage', schemata="Appearance", multiValued=0, allowed_types=('Document', ), relationship='SetupLandingPage', widget=ReferenceBrowserWidget( label=_("Landing Page"), description=_("The selected landing page is displayed for non-authenticated users " "and if the Dashboard is not selected as the default front page. " "If no landing page is selected, the default Bika frontpage is displayed."), allow_search=1, allow_browse=1, startup_directory='/', force_close_on_insert=1, default_search_index='SearchableText', base_query={'review_state': 'published'}, ), ), BooleanField( 'PrintingWorkflowEnabled', schemata="Sampling and COC", default=False, widget=BooleanWidget( label=_("Enable the Results Report Printing workflow"),
def test_multiple_widgets(self): from zope.event import notify from Products.Archetypes.Widget import RelatedItemsWidget from zope.interface import implementer from zope.lifecycleevent import ObjectCreatedEvent from plone.uuid.interfaces import IUUID from plone.uuid.interfaces import IAttributeUUID @implementer(IAttributeUUID) class ExampleContent(object): pass obj1 = ExampleContent() obj2 = ExampleContent() notify(ObjectCreatedEvent(obj1)) notify(ObjectCreatedEvent(obj2)) self.context.fieldvalue = lambda: obj1 field1 = ReferenceField( 'fieldname1', relationship="A", multiValued=False, widget=RelatedItemsWidget(), ) field1.accessor = "fieldvalue" base_args1 = field1.widget._base_args(self.context, field1, self.request) # noqa self.assertDictContainsSubset( { 'name': 'fieldname1', 'value': '{}'.format(IUUID(obj1)), 'pattern': 'relateditems', }, base_args1) self.assertDictContainsSubset( { 'separator': ';', 'orderable': True, 'maximumSelectionSize': 1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname1', 'basePath': '/Plone/doc', 'contextPath': '/Plone/doc', 'rootPath': '/', 'rootUrl': '', }, base_args1.get('pattern_options', {})) field2 = ReferenceField( 'fieldname2', relationship="A", multiValued=True, widget=RelatedItemsWidget(), ) field2.accessor = "fieldvalue" self.context.fieldvalue = lambda: [obj1, obj2] base_args2 = field2.widget._base_args(self.context, field2, self.request) # noqa self.assertDictContainsSubset( { 'name': 'fieldname2', 'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)), 'pattern': 'relateditems', }, base_args2) self.assertDictContainsSubset( { 'separator': ';', 'orderable': True, 'maximumSelectionSize': -1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname2', 'basePath': '/Plone/doc', 'contextPath': '/Plone/doc', 'rootPath': '/', 'rootUrl': '', }, base_args2.get('pattern_options', {}))
ATContentTypeSchema['description'].schemata = 'default' # BBB ATContentTypeBaseSchema = ATContentTypeSchema relatedItemsField = ReferenceField('relatedItems', relationship = 'relatesTo', multiValued = True, isMetadata = True, languageIndependent = False, index = 'KeywordIndex', referencesSortable = True, write_permission = ModifyPortalContent, widget = ReferenceBrowserWidget( allow_search = True, allow_browse = True, allow_sorting = True, show_indexes = False, force_close_on_insert = True, label = _(u'label_related_items', default=u'Related Items'), description = '', visible = {'edit' : 'visible', 'view' : 'invisible' } ) ) ATContentTypeSchema.addField(relatedItemsField.copy()) #Enabling next / previous navigation NextPreviousAwareSchema = MetadataSchema(( BooleanField('nextPreviousEnabled',
# #description = "Select the file to be added by clicking the 'Browse' button.", # #description_msgid = "help_file", # description = "", # label= "PDF File", # label_msgid = "label_pdf_file", # i18n_domain = "plone", # show_content_type = False, # ), # ), ReferenceField('bibref', relationship = "isBibReference", multiValued = False, allowed_types = REFERENCE_TYPES, searchable = False, widget = ReferenceBrowserWidget(label="Bibliography Reference", label_msgid="label_bibreference", description_msgid="help__bibreference", description="Select the corresponding bibliography reference.", i18n_domain="plone", startup_directory='/litterature/', ), ), )) finalizeATCTSchema(PDFFileSchema) PDFFileSchema['file'].label= "Mars PDF File", PDFFileSchema['file'].label_msgid = "label_pdf_file", class MarsPDFFile(ATFile): security = ClassSecurityInfo() #__implements__ = (getattr(ATFile,'__implements__',()),)
label_msgid='Poi_label_issueType', description_msgid='Poi_help_issueType', i18n_domain='Poi', ), enforceVocabulary=True, default_method='getDefaultIssueType', vocabulary='getIssueTypesVocab', required=True ), ReferenceField( name='references', index="FieldIndex:schema", relationship='preceedes', allowed_types='PoiIssue', multiValued=True, widget=ReferenceBrowserWidget( label="subsequent issues", allow_browse=False, allow_search=True, ) ), StringField( name='severity', index="FieldIndex:schema", widget=SelectionWidget( label="Severity", description="Select the severity of this issue.", format="radio", label_msgid='Poi_label_severity', description_msgid='Poi_help_severity',
ATContentTypeSchema['description'].schemata = 'default' # BBB ATContentTypeBaseSchema = ATContentTypeSchema relatedItemsField = ReferenceField('relatedItems', relationship='relatesTo', multiValued=True, isMetadata=True, languageIndependent=False, index='KeywordIndex', referencesSortable=True, write_permission=ModifyPortalContent, widget=ReferenceBrowserWidget( allow_search=True, allow_browse=True, allow_sorting=True, show_indexes=False, force_close_on_insert=True, label=_(u'label_related_items', default=u'Related Items'), description='', visible={ 'edit': 'visible', 'view': 'invisible' })) ATContentTypeSchema.addField(relatedItemsField.copy()) #Enabling next / previous navigation NextPreviousAwareSchema = MetadataSchema(
from Products.Archetypes.atapi import ReferenceField from Products.Archetypes.atapi import BaseSchema from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import BaseContent from Products.Archetypes.atapi import registerType from DateTime import DateTime from archetypes.referencebrowserwidget.config import PROJECTNAME from archetypes.referencebrowserwidget.widget import ReferenceBrowserWidget schema = BaseSchema.copy() + Schema( (ReferenceField( 'singleRef', multiValued=0, allowed_types=('Document', 'File', 'RefBrowserDemo'), relationship='Rel1', widget=ReferenceBrowserWidget( default_search_index='SearchableText', description= 'This is the first field. Pick an object. Restricted to Document, File and RefBrowserDemo.' )), ReferenceField( 'multiRef', multiValued=1, relationship='Rel2', referencesSortable=1, widget=ReferenceBrowserWidget( hide_inaccessible=1, show_indexes=1, allow_sorting=1, description= ('And here is another field with a longer '
'sample_due': {'view': 'visible', 'edit': 'visible'}, 'sample_received': {'view': 'visible', 'edit': 'visible'}, 'expired': {'view': 'visible', 'edit': 'invisible'}, 'disposed': {'view': 'visible', 'edit': 'invisible'}, 'rejected': {'view': 'visible', 'edit': 'invisible'}, }, render_own_label=True, ), ), ReferenceField( 'LinkedSample', vocabulary_display_path_bound=sys.maxsize, multiValue=1, allowed_types=('Sample',), relationship='SampleSample', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View, write_permission=permissions.ModifyPortalContent, widget=ReferenceWidget( label=_("Linked Sample"), ), ), ReferenceField( 'SampleType', required=1, vocabulary_display_path_bound=sys.maxsize, allowed_types=('SampleType',), relationship='SampleSampleType', referenceClass=HoldingReference, mode="rw", read_permission=permissions.View,
ATContentTypeSchema['description'].schemata = 'default' # BBB ATContentTypeBaseSchema = ATContentTypeSchema relatedItemsField = ReferenceField('relatedItems', relationship='relatesTo', multiValued=True, isMetadata=True, languageIndependent=False, index='KeywordIndex', referencesSortable=True, keepReferencesOnCopy=True, write_permission=ModifyPortalContent, widget=RelatedItemsWidget(label=_( u'label_related_items', default=u'Related Items'), description='', visible={ 'edit': 'visible', 'view': 'invisible' })) ATContentTypeSchema.addField(relatedItemsField.copy()) #Enabling next / previous navigation NextPreviousAwareSchema = MetadataSchema( (
from Products.ATContentTypes.interfaces import IATTopicSearchCriterion from Products.ATContentTypes.permission import ChangeTopics from Products.CMFCore.permissions import View from zope.interface import implements ATPathCriterionSchema = ATBaseCriterionSchema + Schema(( ReferenceField('value', required=1, mode="rw", write_permission=ChangeTopics, accessor="Value", mutator="setValue", allowed_types_method="getNavTypes", multiValued=True, keepReferencesOnCopy=True, relationship="paths", widget=RelatedItemsWidget( allow_search=1, label=_(u'label_path_criteria_value', default=u'Folders'), description=_(u'help_path_criteria_value', default=u'Folders to search in.'), base_query={'is_folderish': True}, restrict_browse=True, startup_directory='../')), BooleanField( 'recurse', mode="rw", write_permission=ChangeTopics, accessor="Recurse", default=False,
'description', searchable=True, default='', accessor="Description", widget=TextAreaWidget(label='Description', description="A short summary of the content", label_msgid="label_description", description_msgid="help_description", i18n_domain="plone"), ), ReferenceField( 'referencedContent', relationship='article_proxy', allowed_types_method='getReferenceablePortalTypes', keepReferencesOnCopy=True, widget=ReferenceBrowserWidget( label='Referenced content', label_msgid='label_referenced_content', i18n_domain='plonearticle', ), ), )) class BaseInnerContentProxy(BaseContentMixin): """This is a proxy between article and a referenced content. A referenced content can be defined outside the article and a proxy is just a placeholder for this external object or internal object. A proxy is a traversable content so it can be accessed from its url.
from Products.ECAssignmentBox.content import validators from Products.ECAssignmentBox import config #from Products.ECAssignmentBox import LOG ECAssignmentBox_schema = ATFolderSchema.copy() + Schema(( ReferenceField( 'assignment_reference', allowed_types = ('ECAssignmentTask',), required = False, accessor = 'getReference', index = "FieldIndex:schema", # Adds "getRawAssignment_reference" # to catalog multiValued = False, relationship = 'alter_ego', widget = ReferenceBrowserWidget( description = 'Select an assignment task. A reference to an assignment task supersedes the assignment text and answer template below.', description_msgid = 'help_assignment_reference', i18n_domain = config.I18N_DOMAIN, label = 'Reference to assignment', label_msgid = 'label_assignment_reference', allow_search = True, show_indexes = False, ), ), TextField( 'assignment_text', required = False, searchable = True, allowable_content_types = config.ALLOWED_CONTENT_TYPES, default_content_type = config.DEFAULT_CONTENT_TYPE,
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='', visible={ 'edit': 'visible', 'view': 'invisible' })), ReferenceField('actionItems', relationship='hasActionItem', multiValued=True, isMetadata=True, languageIndependent=False, index='KeywordIndex',
from Products.Archetypes.atapi import (Schema, ReferenceField, ReferenceWidget, BaseFolderSchema, BaseFolder, registerType) import zope.interface from Products.EEAContentTypes.config import PROJECTNAME from Products.EEAContentTypes.content.CallForInterest import CallForInterest from Products.EEAContentTypes.content.interfaces import ICallForTender schema = Schema((ReferenceField(name='awardNotice', widget=ReferenceWidget( label='Award notice', label_msgid='EEAContentTypes_award_notice', i18n_domain='EEAContentTypes', helper_js=("callfortender_widget.js", )), allowed_types="('Document','File')", multiValued=0, relationship="awardNotice", vocabulary="getPossibleAwardNotice", accessor="getAwardNoticeObject"), ), ) CallForTender_schema = BaseFolderSchema.copy() + \ getattr(CallForInterest, 'schema', Schema(())).copy() + \ schema.copy() class CallForTender(CallForInterest, BaseFolder): """ Call for tenders """ security = ClassSecurityInfo()
class MapLayer(BaseFolder):#(BaseFolder): '''Map Layer for CoGIS''' #schema = extra_schema#BaseFolderSchema #schema = BaseFolderSchema actions = ({'id': 'details', 'name': 'Details', 'action': 'string:${object_url}/MapLayer_Details', 'permissions': (permissions.ViewManagementScreens,)}, {'id': 'security', 'name': 'Security', 'action': 'string:${object_url}/Map_Layer_Security', 'permissions': (permissions.ViewManagementScreens,)}, {'id': 'pingLayer', 'name': 'Ping Layer', 'action': 'string:${object_url}/Map_Layer_Ping', 'permissions': (permissions.ViewManagementScreens,)}, ) schema = BaseSchema + Schema([ StringField('description', required=False, searchable = 1, widget=StringWidget(label='Description',description="Enter project description")), ReferenceField( 'relatedItems', relationship = 'relatesTo', multiValued = True, isMetadata = True, languageIndependent = False, index = 'KeywordIndex', write_permission = ModifyPortalContent, widget = ReferenceBrowserWidget( allow_search = True, allow_browse = True, show_indexes = False, force_close_on_insert = True, label = _(u'label_related_items', default=u'Related Items'), description = '', visible = {'edit' : 'visible', 'view' : 'invisible' } ) ) ]) #schema = schema + extra_schema security = ClassSecurityInfo() archetype_name = 'MapLayer' meta_type = 'MapLayer' portal_type = 'MapLayer' allowed_content_types = [] #['LayerField'] filter_content_types = 1 global_allow = 0 allow_discussion = 0 content_icon = "mapService_icon.gif" def __init__(self, id,title=''): '''Initialize an instance of the class''' self.id=id self.sampleImage = '' self.abstract = '' self.keywords = '' self.uniqueName = '' self.geometryField = '' self.geometryType = '' self.title = id self.wfsSRS = '' self.wmsStyleName = '' self.wfsBoundingBox = '' self.fields = '' self.source = '' self.error = '' self.wmsQueryable = '' self.wmsName = '' self.wfsName = '' self.wmsSRS = '' self.wmsTitle = '' self.hasWFSLayer = False self.wmsBoundingBox = '' self.describeFeatureResponse = '' self.availablePermissions = ['Render','Extract'] self.security = PersistentMapping() # e.g {'Manager':{'Render':0,'Extract':1}} self.wmsXML = "" self.wfsXML = "" self.organization = "" self.reindexObject() self._p_changed = 1 ## def manage_afterAdd(self,item, container): ## """ ## """ ## self.manage_permission("View", roles=["Owner"], acquire=False) ## self.manage_permission("List folder contents", roles=["Owner"], acquire=False) security.declarePublic('userIsOwner') def userIsOwner(self): """ @summary: this is a zope specific method to get logged in user name @return: boolean, true if logged in user is the owner """ try: ownerName = self.owner_info()['id'] member = self.portal_membership.getAuthenticatedMember() userName = member.getUserName() if userName == ownerName: return True else: return False except: logger.exception('error') return False def getSecurity(self): """ @summary: returns the current security definitions dict @return: dict containing security info for roles defined in plone """ return dict(self.security) def getMetadata(self): """ @summary: gets the metadata template for the layer @return: an html interface with metadata information """ return self.Map_Layer_Details_Stripped(self) def setSecurityVarOnly(self,securityDict): """ """ try: tmpDict = {} for k in securityDict.keys(): if k == 'fields': continue cDict = {} if securityDict[k]['Render'] in ['false',0]: cDict['Render'] = 0 if securityDict[k]['Render'] in ['true',1]: cDict['Render'] = 1 if securityDict[k]['Extract'] in ['false',0]: cDict['Extract'] = 0 if securityDict[k]['Extract'] in ['true',1]: cDict['Extract'] = 1 tmpDict[k] = cDict # get a diff between current security settings and the passed security settings changed = {} for k in tmpDict.keys(): if not k in self.security.keys(): changed[k] = tmpDict[k] # its a new key if k in self.security.keys(): if self.security[k]['Render'] != tmpDict[k]['Render']: changed[k] = tmpDict[k] self.security = tmpDict # only let the changes be propagated to children # get all fields fields = [] items = self.objectItems() for i in items: if i[1].meta_type == 'LayerField': fields.append(i[1]) for field in fields: tmpSec = field.getSecurity() for k in changed.keys(): if not tmpSec.has_key(k): tmpSec[k] = {'Render':0} # add the key if it does not exist tmpSec[k]['Render'] = changed[k]['Render'] field.setSecurityVarOnly(tmpSec) return 1 except: logger.exception('error') def setSecurity(self,securityDict): """ @summary: @param securityDict: a dictionary containing permissions defined for certain roles defined in plone """ try: tmpDict = {} for k in securityDict.keys(): if k == 'fields': continue cDict = {} if securityDict[k]['Render'] in ['false',0]: cDict['Render'] = 0 if securityDict[k]['Render'] in ['true',1]: cDict['Render'] = 1 if securityDict[k]['Extract'] in ['false',0]: cDict['Extract'] = 0 if securityDict[k]['Extract'] in ['true',1]: cDict['Extract'] = 1 tmpDict[k] = cDict # get a diff between current security settings and the passed security settings changed = {} for k in tmpDict.keys(): if not k in self.security.keys(): changed[k] = tmpDict[k] # its a new key if k in self.security.keys(): if self.security[k]['Render'] != tmpDict[k]['Render']: changed[k] = tmpDict[k] self.security = tmpDict # only let the changes be propagated to children # get all fields fields = [] items = self.objectItems() for i in items: if i[1].meta_type == 'LayerField': fields.append(i[1]) for field in fields: tmpSec = field.getSecurity() for k in changed.keys(): if not tmpSec.has_key(k): tmpSec[k] = {'Render':0} # add the key if it does not exist tmpSec[k]['Render'] = changed[k]['Render'] field.setSecurity(tmpSec) self.aq_parent.updateSecurityForSingleLayer(self.uniqueName) return 1 except: logger.exception('error') def getSampleImage(self,REQUEST=None): """ @summary: converts the hex encoded image to binary @return: sample image in binary format """ try: data = binascii.a2b_hex(self.sampleImage) REQUEST.RESPONSE.setHeader("Content-type","image/png") return data except: logger.exception('error') def pingWMSLayer(self,extent=['23.00','23.00','23.01','23.01']): """ """ try: startTime = time.time() layerName = self.wmsName source = self.source[1] layerName = layerName.replace(" ","%20") strEnv = "%s,%s,%s,%s" %(extent[0],extent[1],extent[2],extent[3]) theURL = source + WMS_GETMAP_EXTENSION + "&bbox=%s&styles=&Format=image/png&width=2&height=2&srs=EPSG:4326&layers=%s" %(strEnv,layerName) #"&request=GetLegendGraphic&version=1.0.0&format=%s&width=%s&height=%s&layer=%s" %(format,width,height,layer['wmsName']) data = self._getURLContent(theURL,{}) if data.find("ServiceExceptionReport") != -1: return "Layer Unavailable" endTime = time.time() return str(endTime - startTime) except: import traceback sio = cStringIO.StringIO() traceback.print_exc(file=sio) sio.seek(0) trace = sio.read() logger.exception('error') return MapServerTemplates.ogcServiceException %("Exception occured with _getSampleImage request, check log for details %s" %trace) def pingWFSLayer(self): """ """ if self.hasWFSLayer: try: startTime = time.time() layerName = self.wfsName source = self.source[0] baseURL = source + WFS_DESCRIBEFEATURETYPE_EXTENSION baseURL += "&typename=" + layerName.replace(" ","%20") data = self._getURLContent(baseURL) if (data.find("ServiceException") != -1) or (data.find("ServiceExceptionReport") != -1) or (data.strip() == ""): return "Layer Unavailable" endTime = time.time() return str(endTime - startTime) except: import traceback sio = cStringIO.StringIO() traceback.print_exc(file=sio) sio.seek(0) trace = sio.read() logger.exception('error') return MapServerTemplates.ogcServiceException %("Exception occured with pingWFSLayer request, check log for details %s" %trace) else: return "No WFS Source given." ## if self.hasWFSLayer: ## try: ## startTime = time.time() ## layerName = self.wfsName ## source = self.source[0] ## data = '' ## baseURL = source + WFS_DESCRIBEFEATURETYPE_EXTENSION ## baseURL += "&typename=" + layerName.replace(" ","%20") ## data = self._getURLContent(baseURL) ## if data.find("ServiceExceptionReport") != -1: ## return "Layer Unavailable" ## ## endTime = time.time() ## return str(endTime - startTime) ## except: ## import traceback ## sio = cStringIO.StringIO() ## traceback.print_exc(file=sio) ## sio.seek(0) ## trace = sio.read() ## ## return MapServerTemplates.ogcServiceException %("Exception occured with pingWFSLayer request, check log for details %s" %trace) ## ## else: ## return "No WFS Source given." ## ## return 1 def _getURLContent(self,url,data={}): """ """ try: if data: if type(data) == unicode: data = str(urllib.unquote(data)) if type(data) == str: f = urllib.urlopen(url,data) else: params = urllib.urlencode(data) f = urllib.urlopen(url,params) else: f = urllib.urlopen(url) data = f.read() f.close() return data except: import traceback sio = cStringIO.StringIO() traceback.print_exc(file=sio) sio.seek(0) trace = sio.read() logger.exception('error') return MapServerTemplates.ogcServiceException %("Exception occured getURLContent request, check log for details %s" %trace)
class MapServer(BaseFolder): '''Map Server for CoGIS''' schema = BaseFolderSchema schema = BaseSchema + Schema([ StringField('description', required=False, searchable=1, widget=StringWidget( label='Description', description="Enter project description")), ReferenceField('relatedItems', relationship='relatesTo', multiValued=True, isMetadata=True, languageIndependent=False, index='KeywordIndex', write_permission=ModifyPortalContent, widget=ReferenceBrowserWidget( allow_search=True, allow_browse=True, show_indexes=False, force_close_on_insert=True, label=_(u'label_related_items', default=u'Related Items'), description='', visible={ 'edit': 'visible', 'view': 'invisible' })) ], ) actions = ( { 'id': 'publish', 'name': 'Publish', 'action': 'string:${object_url}/Map_Server_PublishAll', 'permissions': (permissions.ViewManagementScreens, ) }, { 'id': 'pingServer', 'name': 'Ping Server', 'action': 'string:${object_url}/Map_Server_PingServer', 'permissions': (permissions.ViewManagementScreens, ) }, { 'id': 'licenseAgreement', 'name': 'License Agreement', 'action': 'string:${object_url}/Map_Server_LicenseAgreement_Edit', 'permissions': (permissions.ViewManagementScreens, ) }, ) #schema = schema + extra_schema content_icon = "mapServer.gif" security = ClassSecurityInfo() archetype_name = 'MapServer' meta_type = 'MapServer' portal_type = 'MapServer' allowed_content_types = [] #['MapLayer'] filter_content_types = 1 global_allow = 0 allow_discussion = 0 content_icon = "mapServer.gif" def __init__(self, id, title=''): '''Initialize an instance of the class''' self.id = id if title == '': self.title = id else: self.title = title self.organization = "" self.wmsSource = "" self.wfsSource = "" self.enableLicenseAgreement = False # licenseAgreent is the text to display in the tbx self.licenseAgreement = "Put the license text here \nPlease read license before publishing" # its a list of usernames that have accepted the license agreement self.acceptedUserNames = [] def dummyTest(self): """ """ return dir(self) def updateLicenseAgreement(self, REQUEST=None): """ @summary: udpate the server license agreement and disables/enables the agreement """ try: self.acceptedUserNames = [] if REQUEST.has_key('enableIt'): enable = True else: enable = False licenseText = REQUEST.form['licenseText'] self.enableLicenseAgreement = enable self.licenseAgreement = licenseText self._p_changed = 1 transaction.savepoint(True) status_message = "License Agreement Updated" REQUEST.RESPONSE.redirect( "%s/Map_Server_LicenseAgreement_Edit?portal_status_message=%s" % (self.absolute_url(), status_message)) except: logger.exception('failed updateLicenseAgreement') security.declarePublic('userIsOwner') def userIsOwner(self): """ @summary: this is a zope specific method to get logged in user name @return: boolean, true if logged in user is the owner """ try: ownerName = self.owner_info()['id'] member = self.portal_membership.getAuthenticatedMember() userName = member.getUserName() if userName == ownerName: return True else: return False except: logger.exception('failed user is owner') def publishLayersForRoles(self, rolesToPublish): """ @summary : publishes layer for the given roles passed @param : a list of roles to publish layers for """ try: items = self.objectItems() for i in items: if i[1].meta_type == 'MapLayer': l = i[1] secStruct = l.setSecurity( self.getPublishedStructureForRoles(rolesToPublish)) return 1 except: logger.exception('failed publishLayersForRoles') def publishAllLayers(self): """ @summary: this will publish all the layers in the server @return: 1 """ try: items = self.objectItems() for i in items: if i[1].meta_type == 'MapLayer': l = i[1] secStruct = l.setSecurity( self.getPublishedSecurityStructure()) return 1 except: logger.exception('failed publishAllLayers') def retractAllLayers(self): """ @summary: this will retract all the layers in the server @return: 1 """ try: items = self.objectItems() for i in items: if i[1].meta_type == 'MapLayer': l = i[1] secStruct = l.setSecurity( self.getRetractedSecurityStructure()) return 1 except: logger.exception('failed retractAllLayers') def pingServer(self): """ """ try: startTime = time.time() wmsPingRes = self._getURLContent(self.wmsSource) endTime = time.time() wmsTime = endTime - startTime if wmsPingRes.find("Exception occured") != -1: wmsTime = "Server Unavailable" startTime = time.time() wfsPingRes = self._getURLContent(self.wfsSource) endTime = time.time() wfsTime = endTime - startTime if wfsPingRes.find("Exception occured") != -1: wfsTime = "Server Unavailable" return [str(wfsTime), str(wmsTime)] except: logger.exception('failed pingServer') def pingAllLayers(self): """ """ try: results = {} items = self.objectItems() for i in items: layer = i[1] pingResWMS = layer.pingWMSLayer() pingResWFS = layer.pingWFSLayer() results[layer.uniqueName] = [pingResWFS, pingResWMS] return results except: logger.exception('error') def getPublishedSecurityStructure(self): """ @summary: builds a security structure that will expose all layers @return: a dictionary with all the roles as keys and another dict as value """ try: roles = self.validRoles() tmpDict = {} for role in roles: tmpDict[role] = {'Render': 1, 'Extract': 1} return tmpDict except: logger.exception('failed getPublishedSercurityStructure') def getPublishedStructureForRoles(self, theRoles): """ """ try: roles = self.validRoles() tmpDict = {} for role in roles: if role in theRoles: tmpDict[role] = {'Render': 1, 'Extract': 1} else: tmpDict[role] = {'Render': 0, 'Extract': 0} return tmpDict except: logger.exception('Error') def getRetractedSecurityStructure(self): """ @summary: builds a security structure that will expose all layers @return: a dictionary with all the roles as keys and another dict as value """ try: roles = self.validRoles() tmpDict = {} for role in roles: tmpDict[role] = {'Render': 0, 'Extract': 0} return tmpDict except: logger.exception('Error') def _getURLContent(self, url, data={}): """ """ try: if data: if type(data) == unicode: data = str(urllib.unquote(data)) if type(data) == str: f = urllib.urlopen(url, data) else: params = urllib.urlencode(data) f = urllib.urlopen(url, params) else: f = urllib.urlopen(url) data = f.read() f.close() return data except: import traceback sio = StringIO.StringIO() traceback.print_exc(file=sio) sio.seek(0) trace = sio.read() logger.exception('Error') return MapServerTemplates.ogcServiceException % ( "Exception occured getURLContent request, check log for details %s" % trace)
from bika.lims.exportimport import instruments from bika.lims.interfaces import IInstrument, IDeactivable from bika.lims.content.bikaschema import BikaSchema from bika.lims.content.bikaschema import BikaFolderSchema from bika.lims import bikaMessageFactory as _ schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'InstrumentType', vocabulary='getInstrumentTypes', allowed_types=('InstrumentType', ), relationship='InstrumentInstrumentType', required=1, widget=ReferenceWidget( label=_("Instrument type"), showOn=True, catalog_name='bika_setup_catalog', base_query={ "is_active": True, "sort_on": "sortable_title", "sort_order": "ascending", }, ), ), ReferenceField( 'Manufacturer', allowed_types=('Manufacturer', ), relationship='InstrumentManufacturer', required=1, widget=ReferenceWidget( label=_("Manufacturer"),
widget = SelectionWidget( label=_("Multi Verification type"), description = _( "Choose type of multiple verification for the same user." "This setting can enable/disable verifying/consecutively verifying" "more than once for the same user."), format='select', ) ), ReferenceField( 'DryMatterService', schemata="Analyses", required=0, vocabulary_display_path_bound=sys.maxint, allowed_types=('AnalysisService',), relationship='SetupDryAnalysisService', vocabulary='getAnalysisServices', referenceClass=HoldingReference, widget=ReferenceWidget( label=_("Dry matter analysis"), description=_("The analysis to be used for determining dry matter."), ) ), LinesField( 'ARImportOption', schemata="Analyses", vocabulary=ARIMPORT_OPTIONS, widget=MultiSelectionWidget( visible=False, label=_("AR Import options"), description=_( "'Classic' indicates importing analysis requests per sample and "
def test_multiple_widgets(self): from zope.event import notify from Products.Archetypes.Widget import RelatedItemsWidget from zope.interface import implements from zope.lifecycleevent import ObjectCreatedEvent from plone.uuid.interfaces import IUUID from plone.uuid.interfaces import IAttributeUUID class ExampleContent(object): implements(IAttributeUUID) obj1 = ExampleContent() obj2 = ExampleContent() notify(ObjectCreatedEvent(obj1)) notify(ObjectCreatedEvent(obj2)) with mock.patch('plone.app.widgets.utils.getUtility') as mock_method: self.context.fieldvalue = lambda: obj1 field1 = ReferenceField( 'fieldname1', relationship="A", multiValued=False, widget=RelatedItemsWidget(), ) field1.accessor = "fieldvalue" self.assertEqual( { 'name': 'fieldname1', 'value': '{}'.format(IUUID(obj1)), 'pattern': 'relateditems', 'pattern_options': { 'folderTypes': ['Folder'], 'homeText': u'Home', 'separator': ';', 'orderable': True, 'searchAllText': u'Entire site', 'searchText': u'Search', 'maximumSelectionSize': 1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname1', }, }, field1.widget._base_args(self.context, field1, self.request), ) field2 = ReferenceField( 'fieldname2', relationship="A", multiValued=True, widget=RelatedItemsWidget(), ) field2.accessor = "fieldvalue" self.context.fieldvalue = lambda: [obj1, obj2] self.assertEqual( { 'name': 'fieldname2', 'value': '{};{}'.format(IUUID(obj1), IUUID(obj2)), 'pattern': 'relateditems', 'pattern_options': { 'folderTypes': ['Folder'], 'homeText': u'Home', 'separator': ';', 'orderable': True, 'searchAllText': u'Entire site', 'searchText': u'Search', 'maximumSelectionSize': -1, 'vocabularyUrl': '/@@getVocabulary?name=' 'plone.app.vocabularies.Catalog' '&field=fieldname2', }, }, field2.widget._base_args(self.context, field2, self.request), )
), required=True, accessor="Description"), StringField(name='email', widget=StringWidget( label="Email address", label_msgid='EEAEnquiry_label_email', i18n_domain='EEAEnquiry', ), required=1, validators=('isEmail', )), ReferenceField(name='enquiryRequestor', widget=ReferenceWidget( label='Enquiryrequestor', label_msgid='EEAEnquiry_label_enquiryRequestor', i18n_domain='EEAEnquiry', ), allowed_types=('EnquiryRequestor', ), multiValued=0, relationship='enquriyRequestor'), ), ) schema['enquiryRequestor'].widget.visible = {'edit': 'invisible'} Enquiry_schema = BaseSchema.copy() + \ schema.copy() class Enquiry(BaseContent): """ Enquiry """
from Products.Archetypes.atapi import Schema from Products.Archetypes.atapi import ReferenceField from Products.Archetypes.atapi import StringField from Products.Archetypes.atapi import SelectionWidget from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget from Products.CMFCore.permissions import ManagePortal from Products.PloneTemplates.config import TEMPLATE_INHERIT_MODE PloneTemplatesMixinSchema = Schema( (ReferenceField('templates', multiValued=True, write_permission=ManagePortal, allowed_types=('Template', ), schemata='Templates', relationship='EnablesTemplate', widget=ReferenceBrowserWidget( label_msgid="label_templates", description_msgid="help_templates", i18n_domain="PloneTemplates", force_close_on_insert=True, label="", populate=1, description="")), StringField('inheritTemplates', vocabulary=TEMPLATE_INHERIT_MODE, default='1', write_permission=ManagePortal, enforceVocabulary=True, schemata='Templates', widget=SelectionWidget( label_msgid="label_inheritTemplates", description_msgid="help_inheritTemplates",
"Description of the actions made during the validation"), ), ), ReferenceField( 'Worker', vocabulary='getLabContacts', allowed_types=('LabContact', ), relationship='LabContactInstrumentValidation', widget=ReferenceWidget( checkbox_bound=0, label=_("Performed by"), description=_("The person at the supplier who performed the task"), size=30, base_query={'inactive_state': 'active'}, showOn=True, colModel=[{ 'columnName': 'UID', 'hidden': True }, { 'columnName': 'JobTitle', 'width': '20', 'label': _('Job Title') }, { 'columnName': 'Title', 'width': '80', 'label': _('Name') }], ), ), StringField('ReportID', widget=StringWidget( label=_("Report ID"),
from bika.lims.utils import to_utf8 from bika.lims.config import PROJECTNAME from bika.lims.interfaces import IInstrument from bika.lims.config import QCANALYSIS_TYPES from bika.lims import bikaMessageFactory as _ from bika.lims.content.bikaschema import BikaSchema from bika.lims.content.bikaschema import BikaFolderSchema schema = BikaFolderSchema.copy() + BikaSchema.copy() + Schema(( ReferenceField( 'InstrumentType', vocabulary='getInstrumentTypes', allowed_types=('InstrumentType', ), relationship='InstrumentInstrumentType', required=1, widget=SelectionWidget(format='select', label=_("Instrument type"), visible={ 'view': 'invisible', 'edit': 'visible' }), ), ReferenceField( 'Manufacturer', vocabulary='getManufacturers', allowed_types=('Manufacturer', ), relationship='InstrumentManufacturer', required=1, widget=SelectionWidget(format='select', label=_("Manufacturer"), visible={