def getAnswerList(self): users = IAnnotations(api.portal.get())[Survey.KEY] answerList = [] for user in users.values(): answers = user.getAnswerList() for answer in answers: answerList.append(answer) return answerList
def getSummary(self): users = IAnnotations(api.portal.get())[Survey.KEY] summary = [] summary.append("# of participants " + str(len(users))) totSession = 0 totFeedBack = 0 for user in users.values(): totSession += user.getTotSession() totFeedBack += user.getTotFeedback() summary.append("# of sessions " + str(totSession)) summary.append("# of feedback " + str(totFeedBack)) return summary
def migrate_daviz_annotations(context): """ Migrate Data Provenance from Visualization to Source Data """ ctool = getToolByName(context, 'portal_catalog') brains = ctool.unrestrictedSearchResults(portal_type='AssessmentPart') total = len(brains) logger.info(('Migrating annotations of %s AssessmentParts'), total) for brain in brains: obj = brain.getObject() annot = IAnnotations(obj).get('DAVIZ_CHARTS', {}) if annot != {}: for vis in annot.values(): for key in vis.keys(): embed_type = vis[key] if isinstance(embed_type, str): chart_settings = PersistentMapping() chart_settings['type'] = embed_type vis[key] = chart_settings logger.info('Migration finished')
def migrate_daviz_annotations(context): """ Migrate Data Provenance from Visualization to Source Data """ ctool = getToolByName(context, 'portal_catalog') brains = ctool.unrestrictedSearchResults(portal_type='AssessmentPart') total = len(brains) logger.info(('Migrating annotations of %s AssessmentParts'), total) for brain in brains: obj = brain.getObject() annot = IAnnotations(obj).get('DAVIZ_CHARTS', {}) if annot != {}: for vis in annot.values(): for key in vis.keys(): embed_type = vis[key] if isinstance(embed_type, str): chart_settings = PersistentMapping() chart_settings['type'] = embed_type vis[key] = chart_settings logger.info('Migration finished')
class AliasAnnotations(MutableMapping): """Layer draft annotations atop target annotations """ def __init__(self, proxy): self.proxy = proxy self.draft = self.proxy._DraftProxy__draft self.target = self.proxy._DraftProxy__target self.draftAnnotations = IAnnotations(self.draft) self.targetAnnotations = IAnnotations(self.target) def __bool__(self): return self.targetAnnotations.__bool__() or \ self.draftAnnotations.__bool__() def get(self, key, default=None): deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: return default value = self.draftAnnotations.get(key, _marker) if value is _marker: value = self.targetAnnotations.get(key, _marker) if value is _marker: return default return value def __getitem__(self, key): value = self.get(key, _marker) if value is _marker: raise KeyError(key) return value def __iter__(self): # adhere to MutableMapping interface for val in self.draftAnnotations.values(): yield val def __len__(self): # adhere to MutableMapping interface return len(self.draftAnnotations) def keys(self): deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) keys = set(self.draftAnnotations.keys()) keys.update(self.targetAnnotations.keys()) return tuple(keys - deleted) def __setitem__(self, key, value): self.draftAnnotations[key] = value deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: deleted.remove(key) self.draft._proxyAnnotationsDeleted = deleted def setdefault(self, key, default=None): value = self.get(key, _marker) if value is _marker: self[key] = value = default deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: deleted.remove(key) self.draft._proxyAnnotationsDeleted = deleted return value def __delitem__(self, key): self[key] # allow KeyError to be raised if we don't have this key if key in self.draftAnnotations: del self.draftAnnotations[key] deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) deleted.add(key) self.draft._proxyAnnotationsDeleted = deleted
class AliasAnnotations(MutableMapping): """Layer draft annotations atop target annotations """ def __init__(self, proxy): self.proxy = proxy self.draft = self.proxy._DraftProxy__draft self.target = self.proxy._DraftProxy__target self.draftAnnotations = IAnnotations(self.draft) self.targetAnnotations = IAnnotations(self.target) def __bool__(self): return self.targetAnnotations.__bool__() or \ self.draftAnnotations.__bool__() def get(self, key, default=None): deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: return default value = self.draftAnnotations.get(key, _marker) if value is _marker: value = self.targetAnnotations.get(key, _marker) if value is _marker: return default return value def __getitem__(self, key): value = self.get(key, _marker) if value is _marker: raise KeyError(key) return value def __iter__(self): # adhere to MutableMapping interface for val in self.draftAnnotations.values(): yield val def __len__(self): # adhere to MutableMapping interface return len(self.draftAnnotations) def keys(self): deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) keys = set(self.draftAnnotations.keys()) keys.update(self.targetAnnotations.keys()) return tuple(keys - deleted) def __setitem__(self, key, value): self.draftAnnotations[key] = value deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: deleted.remove(key) self.draft._proxyAnnotationsDeleted = deleted def setdefault(self, key, default=None): value = self.get(key, _marker) if value is _marker: self[key] = value = default deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) if key in deleted: deleted.remove(key) self.draft._proxyAnnotationsDeleted = deleted return value def __delitem__(self, key): self[key] # allow KeyError to be raised if we don't have this key if key in self.draftAnnotations: del self.draftAnnotations[key] deleted = getattr(self.draft, '_proxyAnnotationsDeleted', set()) deleted.add(key) self.draft._proxyAnnotationsDeleted = deleted