def _update(self, portal): meta_type = 'Naaya Meeting' if not portal.is_pluggable_item_installed(meta_type): self.log.debug('Meeting not installed') return True self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) crt_widgets = schema.objectIds() if widgetid_from_propname('interval') not in crt_widgets: schema.manage_delObjects([widgetid_from_propname('start_date'), widgetid_from_propname('end_date'), widgetid_from_propname('time')]) property_schema = get_pluggable_content()[NyMeeting.meta_type]['default_schema']['interval'] schema.addWidget('interval', **property_schema) self.log.debug(('Naaya Meeting schema changes: ' '-start_date -end_date -time +interval')) else: self.log.debug('Meeting schema already contained interval-property') self.log.debug('Patching meeting objects') meetings = portal.getCatalogedObjects(meta_type) for meeting in meetings: if getattr(meeting, 'interval', None) is None: self.log.debug('Patching meeting object at %s' % meeting.absolute_url(1)) time = getattr(meeting, 'time', '') start_date = meeting.start_date end_date = getattr(meeting, 'end_date', '') # old NyMeeting accepted only start_date, interval obj reqs both if not end_date: end_date = start_date (start_date, end_date) = (start_date.strftime('%d/%m/%Y'), end_date.strftime('%d/%m/%Y')) try: i = interval_from_raw_time(start_date, end_date, time) except Exception, e: self.log.error('Can not create Interval: %s' % str(e)) try: i = Interval(start_date, '', end_date, '', True) except Exception, e_inner: today = datetime.now().strftime('%d/%m/%Y') i = Interval(today, '', today, '', True) self.log.error('Using TODAY as start/end dates, reason: %s' % str(e_inner)) self.log.error('IMPORTANT: Please manually edit meeting, ' + ('interval currently set as %s; ' % repr(i)) + ('Old Values: (%s, %s, \'%s\')' % (start_date, end_date, time))) else: self.log.debug(('Successfully converted (%s, %s, \'%s\'), ' % (start_date, end_date, time)) + 'setting meeting.interval: %s' % repr(i)) meeting.interval = i delattr(meeting, 'start_date') delattr(meeting, 'end_date') delattr(meeting, 'time')
def _update(self, portal): self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) try: schema.getWidget('auto_register') except KeyError: pass else: schema.manage_delObjects([widgetid_from_propname('auto_register')]) property_schema = get_pluggable_content()[NyMeeting.meta_type][ 'default_schema']['auto_register'] schema.addWidget('auto_register', **property_schema) meetings = portal.getCatalogedObjects(meta_type='Naaya Meeting') for meeting in meetings: self.log.debug('Found meeting object at %s' % meeting.absolute_url(1)) if not hasattr(meeting, 'auto_register'): meeting.auto_register = False self.log.debug( 'Added auto_register attribute for meeting at %s' % meeting.absolute_url(1)) return True
def _update(self, portal): self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) try: schema.getWidget('auto_register') except KeyError: pass else: schema.manage_delObjects([widgetid_from_propname('auto_register')]) property_schema = get_pluggable_content()[ NyMeeting.meta_type]['default_schema']['auto_register'] schema.addWidget('auto_register', **property_schema) meetings = portal.getCatalogedObjects(meta_type='Naaya Meeting') for meeting in meetings: self.log.debug('Found meeting object at %s' % meeting.absolute_url(1)) if not hasattr(meeting, 'auto_register'): meeting.auto_register = False self.log.debug( 'Added auto_register attribute for meeting at %s' % meeting.absolute_url(1)) return True
def __call__(self, REQUEST): chm_terms = REQUEST.get("chm_terms", None) if chm_terms: for ob in self.aq_parent.objectValues(): widget = getattr(ob._get_schema(), widgetid_from_propname("chm_terms"), None) if widget is None: continue current_prop = ob.getLocalProperty("chm_terms") new_terms = chm_terms if current_prop: current_prop = current_prop.split(widget.separator) new_terms = list(set(new_terms) | set(current_prop)) new_terms = widget.convert_formvalue_to_pythonvalue(new_terms) ob._change_schema_properties(chm_terms=new_terms) REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url() + "/bulk_chm_terms_html?success=true")
def __call__(self, REQUEST): chm_terms = REQUEST.get('chm_terms', None) if chm_terms: for ob in self.aq_parent.objectValues(): widget = getattr(ob._get_schema(), widgetid_from_propname('chm_terms'), None) if widget is None: continue current_prop = ob.getLocalProperty('chm_terms') new_terms = chm_terms if current_prop: current_prop = current_prop.split(widget.separator) new_terms = list(set(new_terms) | set(current_prop)) new_terms = widget.convert_formvalue_to_pythonvalue(new_terms) ob._change_schema_properties(chm_terms=new_terms) REQUEST.RESPONSE.redirect(self.aq_parent.absolute_url() + '/bulk_chm_terms_html?success=true')
def update_modified_schema_property(self, property_data, REQUEST=None): """ """ for prop in property_data: location = prop.split('||') portal = location[0] content_type = location[1] property = location[2] property_schema = get_pluggable_content()[content_type]['default_schema'][property] portal = self.unrestrictedTraverse(portal, None) schema_tool = portal._getOb(ID_SCHEMATOOL, None) schema = schema_tool.getSchemaForMetatype(content_type) schema.manage_delObjects([widgetid_from_propname(property)]) schema.addWidget(property, **property_schema) if REQUEST: REQUEST.RESPONSE.redirect('%s/update_schemas_html?find=true' % self.absolute_url())
def _update(self, portal): meta_type = 'Naaya Meeting' NETWORK_NAME = get_zope_env('NETWORK_NAME', '') if not portal.is_pluggable_item_installed(meta_type): self.log.debug('Meeting not installed') return True self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) crt_widgets = schema.objectIds() if widgetid_from_propname('is_eionet_meeting') not in crt_widgets: property_schema = get_pluggable_content()[NyMeeting.meta_type][ 'default_schema']['is_eionet_meeting'] if NETWORK_NAME.lower() != 'eionet': property_schema['visible'] = False schema.addWidget('is_eionet_meeting', **property_schema) self.log.debug(('Naaya Meeting schema changes: ' 'added the "Eionet Meeting" widget')) else: self.log.debug( 'Meeting schema already contained is_eionet_meeting-property') return True
def _update(self, portal): meta_type = 'Naaya Meeting' NETWORK_NAME = get_zope_env('NETWORK_NAME', '') if not portal.is_pluggable_item_installed(meta_type): self.log.debug('Meeting not installed') return True self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) crt_widgets = schema.objectIds() if widgetid_from_propname('is_eionet_meeting') not in crt_widgets: property_schema = get_pluggable_content()[ NyMeeting.meta_type]['default_schema']['is_eionet_meeting'] if NETWORK_NAME.lower() != 'eionet': property_schema['visible'] = False schema.addWidget('is_eionet_meeting', **property_schema) self.log.debug(('Naaya Meeting schema changes: ' 'added the "Eionet Meeting" widget')) else: self.log.debug( 'Meeting schema already contained is_eionet_meeting-property') return True
def _update(self, portal): # Update meeting types in map symbols if not portal.is_pluggable_item_installed('Naaya Meeting'): self.log.debug('Meeting not installed') return True NETWORK_NAME = get_zope_env('NETWORK_NAME', '') eionet = NETWORK_NAME.lower() == 'eionet' portal_map = portal.getGeoMapTool() if portal_map is not None: if eionet: new_map_symbols = [('conference.png', 'Conference', 10), ('nrc_meeting.png', 'NRC meeting', 20), ('nrc_webinar.png', 'NRC webinar', 30), ('nfp_meeting.png', 'NFP meeting', 40), ('nfp_webinar.png', 'NFP webinar', 50), ('workshop.png', 'Workshop', 60)] else: new_map_symbols = [('conference.png', 'Conference', 10), ('workshop.png', 'Workshop', 60)] for i in range(len(new_map_symbols)): new_map_symbols[i] = (os.path.join(os.path.dirname(__file__), 'www', 'map_symbols', new_map_symbols[i][0]), new_map_symbols[i][1], new_map_symbols[i][2]) map_symbols = portal_map.getSymbolsListOrdered() new_map_symbols_titles = [s[1] for s in new_map_symbols] new_map_symbols_titles.append('Meeting') symbols_to_delete = [sym.id for sym in map_symbols if sym.title in new_map_symbols_titles] symbol_titles = [portal_map.getSymbolTitle(symbol) for symbol in symbols_to_delete] portal_map.adminDeleteSymbols(symbols_to_delete) self.log.debug('Deleted old symbols for %s' % symbol_titles) for filename, symbol_name, sortorder in new_map_symbols: file = open(filename, 'r') symbol = file.read() file.close() portal_map.adminAddSymbol(title=symbol_name, picture=symbol, sortorder=sortorder, id=filename.replace('.png', '')) symbol_titles = [new_symbol[1] for new_symbol in new_map_symbols] self.log.debug('Added symbols for %s' % symbol_titles) # set meeting type based on the former eionet_meeting flag meetings = portal.getCatalogedObjects(meta_type='Naaya Meeting') for meeting in meetings: if not getattr(meeting, 'added_nrc_meeting_type', None): is_eionet_meeting = getattr(meeting, 'is_eionet_meeting', None) if is_eionet_meeting: meeting.geo_type = os.path.join( os.path.dirname(__file__), 'www', 'map_symbols', 'nrc_meeting') self.log.debug('Meeting %s changed to NRC meeting' % meeting.absolute_url()) else: meeting.geo_type = os.path.join( os.path.dirname(__file__), 'www', 'map_symbols', 'conference') self.log.debug('Meeting %s changed to conference' % meeting.absolute_url()) meeting.added_nrc_meeting_type = True if is_eionet_meeting is not None: delattr(meeting, 'is_eionet_meeting') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype('Naaya Meeting') crt_widgets = schema.objectIds() widget_id = widgetid_from_propname('is_eionet_meeting') if widget_id in crt_widgets: schema.manage_delObjects(widget_id) self.log.debug(('Naaya Meeting schema changes: ' 'removed the "Eionet Meeting" widget')) else: self.log.debug( 'is_eionet_meeting-property not present in Meeting schema') return True
def _update(self, portal): # Update meeting types in map symbols if not portal.is_pluggable_item_installed('Naaya Meeting'): self.log.debug('Meeting not installed') return True NETWORK_NAME = get_zope_env('NETWORK_NAME', '') eionet = NETWORK_NAME.lower() == 'eionet' portal_map = portal.getGeoMapTool() if portal_map is not None: if eionet: new_map_symbols = [('conference.png', 'Conference', 10), ('nrc_meeting.png', 'NRC meeting', 20), ('nrc_webinar.png', 'NRC webinar', 30), ('nfp_meeting.png', 'NFP meeting', 40), ('nfp_webinar.png', 'NFP webinar', 50), ('workshop.png', 'Workshop', 60)] else: new_map_symbols = [('conference.png', 'Conference', 10), ('workshop.png', 'Workshop', 60)] for i in range(len(new_map_symbols)): new_map_symbols[i] = (os.path.join(os.path.dirname(__file__), 'www', 'map_symbols', new_map_symbols[i][0]), new_map_symbols[i][1], new_map_symbols[i][2]) map_symbols = portal_map.getSymbolsListOrdered() new_map_symbols_titles = [s[1] for s in new_map_symbols] new_map_symbols_titles.append('Meeting') symbols_to_delete = [ sym.id for sym in map_symbols if sym.title in new_map_symbols_titles ] symbol_titles = [ portal_map.getSymbolTitle(symbol) for symbol in symbols_to_delete ] portal_map.adminDeleteSymbols(symbols_to_delete) self.log.debug('Deleted old symbols for %s' % symbol_titles) for filename, symbol_name, sortorder in new_map_symbols: file = open(filename, 'r') symbol = file.read() file.close() portal_map.adminAddSymbol(title=symbol_name, picture=symbol, sortorder=sortorder, id=filename.replace('.png', '')) symbol_titles = [new_symbol[1] for new_symbol in new_map_symbols] self.log.debug('Added symbols for %s' % symbol_titles) # set meeting type based on the former eionet_meeting flag meetings = portal.getCatalogedObjects(meta_type='Naaya Meeting') for meeting in meetings: if not getattr(meeting, 'added_nrc_meeting_type', None): is_eionet_meeting = getattr(meeting, 'is_eionet_meeting', None) if is_eionet_meeting: meeting.geo_type = os.path.join(os.path.dirname(__file__), 'www', 'map_symbols', 'nrc_meeting') self.log.debug('Meeting %s changed to NRC meeting' % meeting.absolute_url()) else: meeting.geo_type = os.path.join(os.path.dirname(__file__), 'www', 'map_symbols', 'conference') self.log.debug('Meeting %s changed to conference' % meeting.absolute_url()) meeting.added_nrc_meeting_type = True if is_eionet_meeting is not None: delattr(meeting, 'is_eionet_meeting') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype('Naaya Meeting') crt_widgets = schema.objectIds() widget_id = widgetid_from_propname('is_eionet_meeting') if widget_id in crt_widgets: schema.manage_delObjects(widget_id) self.log.debug(('Naaya Meeting schema changes: ' 'removed the "Eionet Meeting" widget')) else: self.log.debug( 'is_eionet_meeting-property not present in Meeting schema') return True
def _update(self, portal): meta_type = 'Naaya Meeting' if not portal.is_pluggable_item_installed(meta_type): self.log.debug('Meeting not installed') return True self.log.debug('Changing meeting schema') schema_tool = portal.getSchemaTool() schema = schema_tool.getSchemaForMetatype(NyMeeting.meta_type) crt_widgets = schema.objectIds() if widgetid_from_propname('interval') not in crt_widgets: schema.manage_delObjects([ widgetid_from_propname('start_date'), widgetid_from_propname('end_date'), widgetid_from_propname('time') ]) property_schema = get_pluggable_content()[ NyMeeting.meta_type]['default_schema']['interval'] schema.addWidget('interval', **property_schema) self.log.debug(('Naaya Meeting schema changes: ' '-start_date -end_date -time +interval')) else: self.log.debug( 'Meeting schema already contained interval-property') self.log.debug('Patching meeting objects') meetings = portal.getCatalogedObjects(meta_type) for meeting in meetings: if getattr(meeting, 'interval', None) is None: self.log.debug('Patching meeting object at %s' % meeting.absolute_url(1)) time = getattr(meeting, 'time', '') start_date = meeting.start_date end_date = getattr(meeting, 'end_date', '') # old NyMeeting accepted only start_date, interval obj # requires both if not end_date: end_date = start_date (start_date, end_date) = (start_date.strftime('%d/%m/%Y'), end_date.strftime('%d/%m/%Y')) try: i = interval_from_raw_time(start_date, end_date, time) except Exception, e: self.log.error('Can not create Interval: %s' % str(e)) try: i = Interval(start_date, '', end_date, '', True) except Exception, e_inner: today = datetime.now().strftime('%d/%m/%Y') i = Interval(today, '', today, '', True) self.log.error( 'Using TODAY as start/end dates, reason: %s' % str(e_inner)) self.log.error( 'IMPORTANT: Please manually edit meeting, ' + ('interval currently set as %s; ' % repr(i)) + ('Old Values: (%s, %s, \'%s\')' % (start_date, end_date, time))) else: self.log.debug( ('Successfully converted (%s, %s, \'%s\'), ' % (start_date, end_date, time)) + 'setting meeting.interval: %s' % repr(i)) meeting.interval = i delattr(meeting, 'start_date') delattr(meeting, 'end_date') delattr(meeting, 'time')