def _updateMenuEntries(self, form): context = self.context saved_customizations = [] for x in range(0, len(form.get('index', []))): # check not-mandatory data if not form.get('element-name')[x] or\ not form.get('element-tales')[x]: return _(u'Please, provide all required data'), 'error' saved_customizations.append( self._generateNewMenuElement(x, form.get('element-id')[x], form.get('element-name')[x], form.get('element-descr')[x], form.get('icon-tales')[x], form.get('condition-tales')[x], form.get('element-tales')[x])) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = ({ 'inherit': form.get('inherit', False) }, saved_customizations) annotations._p_changed = 1 return _(u'Customizations updated')
def handle_daviz_delete(context, event): """ Remove annotations from assessmentparts when a daviz has been deleted """ context_uid = context.UID() refs = context.getBRefs() for o in refs: annot = IAnnotations(o).get(KEY, {}) if context_uid in annot.keys(): del annot[context_uid] annot._p_changed = True o._p_changed = True
def handle_daviz_delete(context, event): """ Remove annotations from assessmentparts when a daviz has been deleted """ context_uid = context.UID() refs = context.getBRefs('relatesTo') for o in refs: annot = IAnnotations(o).get(KEY, {}) if context_uid in annot.keys(): del annot[context_uid] annot._p_changed = True o._p_changed = True
def handle_gismap_delete(context, event): """ Remove annotations from assessmentparts when an interactive map has been deleted """ context_uid = context.UID() refs = context.getBRefs() for o in refs: annot = IAnnotations(o).get(KEY, {}) if context_uid in annot.keys(): del annot[context_uid] annot._p_changed = True o._p_changed = True
def notify_outdated(self): """ Notify providers by email about outdated implementations """ # f*ck plone.protect alsoProvides(self.request, IDisableCSRFProtection) # remember when we send notifications for which component annotations = IAnnotations(self.context) notifications = annotations.get(NOTIFICATION_KEY) if not notifications: annotations[NOTIFICATION_KEY] = OOBTree() result = self.items() for item in self.items(): version_info = item['version_info'] # filter out irrelevant components if not version_info or version_info['is_current']: continue # preserve notification dates notification_key = (item['component'].getId(), version_info[ 'current_version'], version_info['latest_version']) dt = annotations[NOTIFICATION_KEY].get(notification_key) if dt and (datetime.utcnow() - dt).days < RESEND_AFTER_DAYS: continue annotations[NOTIFICATION_KEY][notification_key] = datetime.utcnow() annotations._p_changed = True # build and send notification email dest_email = item['provider'].getAlarm_email( ) or item['provider'].getHelpdesk_email() subject = '[DPMT] New version for "{}" available'.format( item['component'].Title()) params = dict( component_name=item['component'].Title(), component_url=item['component'].absolute_url(), current_version=version_info['current_version'], latest_version=version_info['latest_version'], ) send_mail( sender=None, recipients=[dest_email], subject=subject, template='implementation-outdated.txt', params=params, context=item['provider']) return 'DONE'
def _deleteMenuEntries(self, form): context = self.context extras, saved_customizations = self.getSavedCustomizations() to_delete = form.get('delete',[]) if not to_delete: return _(u'Please, select at least one entry to be deleted'), 'error' saved_customizations = [x for x in saved_customizations if x['index'] not in to_delete] self._reindex(saved_customizations) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = (extras, saved_customizations) annotations._p_changed=1 return _(u'Customizations removed')
def _updateMenuEntries(self, form): context = self.context saved_customizations = [] for x in range(0, len(form.get('index',[]))): # check not-mandatory data if not form.get('element-name')[x] or not form.get('element-tales')[x]: return _(u'Please, provide all required data'), 'error' saved_customizations.append( self._generateNewMenuElement(x, form.get('element-id')[x], form.get('element-name')[x], form.get('element-descr')[x], form.get('icon-tales')[x], form.get('condition-tales')[x], form.get('element-tales')[x])) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = ({'inherit': form.get('inherit',False)}, saved_customizations) annotations._p_changed=1 return _(u'Customizations updated')
def main(): site = get_plone_site() data = get_source_data() base_folder = site["knowledge"]["european-climate-data-explorer"] annot = IAnnotations(base_folder) annot._p_changed = True annot["c3s_json_data"] = {"data": data, "fetched": datetime.datetime.now()} for indicator_identifier in data["indicators"]: save_indicator(data["indicators"][indicator_identifier], site, data) #for theme_id in data["themes"]: # theme_folder = base_folder[theme_id] # theme_folder.text = RichTextValue( # data["themes"][theme_id]["description"] # ) # print("Updated description for", theme_folder) transaction.commit() print("Total items:" + str(len(data["indicators"])))
def _addMenuEntry(self, form): context = self.context # check not-mandatory data if not form.get('element-name') or not form.get('element-tales'): return _(u'Please, provide all required data'), 'error' extras, saved_customizations = self.getSavedCustomizations() saved_customizations.append( self._generateNewMenuElement(len(saved_customizations), form.get('element-id'), form.get('element-name'), form.get('element-descr'), form.get('icon-tales'), form.get('condition-tales'), form.get('element-tales'))) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = (extras, saved_customizations) annotations._p_changed = 1 return _(u'New entry added')
def _deleteMenuEntries(self, form): context = self.context extras, saved_customizations = self.getSavedCustomizations() to_delete = form.get('delete', []) if not to_delete: return (_(u'Please, select at least one entry to be deleted'), 'error') # By index saved_customizations = [ x for x in saved_customizations if x['index'] not in to_delete ] # By element-id (not exposed by UI) saved_customizations = [ x for x in saved_customizations if x['element-id'] not in to_delete ] self._reindex(saved_customizations) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = (extras, saved_customizations) annotations._p_changed = 1 return _(u'Customizations removed')
def _addMenuEntry(self, form): context = self.context # check not-mandatory data if not form.get('element-name') or not form.get('element-tales'): return _(u'Please, provide all required data'), 'error' extras, saved_customizations = self.getSavedCustomizations() saved_customizations.append(self._generateNewMenuElement( len(saved_customizations), form.get('element-id'), form.get('element-name'), form.get('element-descr'), form.get('icon-tales'), form.get('condition-tales'), form.get('element-tales')) ) annotations = IAnnotations(context) annotations[ANN_CUSTOMMENU_KEY] = (extras, saved_customizations) annotations._p_changed=1 return _(u'New entry added')