def plone_participations(self): if not self.context.has_participation_support(): return [] # get the participants phandler = IParticipationAware(self.context) results = list(phandler.get_participations()) # also append the responsible class ResponsibleParticipant(object): pass responsible = ResponsibleParticipant() responsible.roles = _dossier(u'label_responsible', 'Responsible') responsible.role_list = responsible.roles dossier_adpt = IDossier(self.context) responsible.contact = dossier_adpt.responsible results.append(responsible) users = [] for dossier in results: actor = Actor.lookup(dossier.contact) users.append({ 'Title': actor.get_label(), 'getURL': actor.get_profile_url(), 'css_class': 'function-user', }) return users
def sharing(self): # get the participants phandler = IParticipationAware(self.context) results = list(phandler.get_participations()) # also append the responsible class ResponsibleParticipant(object): pass responsible = ResponsibleParticipant() responsible.roles = _dossier(u'label_responsible', 'Responsible') responsible.role_list = responsible.roles dossier_adpt = IDossier(self.context) responsible.contact = dossier_adpt.responsible results.append(responsible) info = getUtility(IContactInformation) return [{ 'Title': info.describe(xx.contact), 'getURL': info.get_profile_url(xx.contact), 'css_class': 'function-user', } for xx in results]
def get_participants(self): dossier = IDossier(self.context) rows = [] # add the responsible rows.append('%s, %s' % ( readable_ogds_author(None, dossier.responsible), translate(_dossier(u'label_responsible', 'Responsible'), context=self.request))) # add the participants participants = list(IParticipationAware( self.context).get_participations()) for participant in participants: rows.append('%s, %s' % ( readable_ogds_author(participant, participant.contact), role_list_helper(participant, participant.roles))) values = ['{', '\\vspace{-\\baselineskip}\\begin{itemize}'] for row in self.convert_list(rows): values.append('\\item {}'.format(row)) values.append('\\vspace{-\\baselineskip}\\end{itemize}') values.append('}') return ' \n'.join(values)
def handle_add(self, action): data, errors = self.extractData() if not errors: phandler = IParticipationAware(self.context) part = phandler.create_participation(**data) phandler.append_participiation(part) status = IStatusMessage(self.request) msg = _(u'info_participation_create', u'Participation created.') status.addStatusMessage(msg, type='info') return self._redirect_to_participants_tab()
def test_participant_labels_are_displayed(self, browser): self.login(self.regular_user, browser=browser) handler = IParticipationAware(self.dossier) participation = handler.create_participation(contact='robert.ziegler', roles=['regard']) handler.append_participiation(participation) browser.open(self.dossier, view='tabbedview_view-overview') self.assertEqual( ['Ziegler Robert (robert.ziegler)'], browser.css('#participantsBox li:not(.moreLink) a').text)
def test_participant_labels_are_displayed(self, browser): self.login(self.regular_user, browser=browser) handler = IParticipationAware(self.tested_dossier) participation = handler.create_participation(contact='kathi.barfuss', roles=['regard']) handler.append_participiation(participation) browser.open(self.tested_dossier, view='tabbedview_view-overview') self.assertListEqual( self.participants, browser.css('#participantsBox li:not(.moreLink) a').text)
def validate_base_query(self, query): """hacky: get the actual elements here because we are not able to use queries on annotations / lists ... """ context = self.config.context phandler = IParticipationAware(context) results = list(phandler.get_participations()) dossier_adpt = IDossier(context) responsible_name = _(u'label_responsible', 'Responsible') results.append( ParticipationResponsible(contact=dossier_adpt.responsible, responsible=responsible_name)) return results
def __call__(self): oids = self.request.get('oids') if not oids: msg = _(u'warning_no_participants_selected', default=u'You didn\'t select any participants.') IStatusMessage(self.request).addStatusMessage(msg, type='error') return self.request.RESPONSE.redirect(self.redirect_url) phandler = IParticipationAware(self.context) for a in oids: oid = base64.decodestring(a) obj = self.context._p_jar[oid] phandler.remove_participation(obj) status = IStatusMessage(self.request) msg = _(u'info_removed_participations', 'Removed participations.') status.addStatusMessage(msg, type='info') return self.request.RESPONSE.redirect(self.redirect_url)
def _migrate_participations(self, dossier): moved = [] path = '/'.join(dossier.getPhysicalPath()) if not IParticipationAwareMarker.providedBy(dossier): # No participation support - probably a template folder return moved phandler = IParticipationAware(dossier) participations = phandler.get_participations() for participation in participations: old_userid = participation.contact if old_userid in self.principal_mapping: new_userid = self.principal_mapping[old_userid] logger.info("Migrating participation for {} ({} -> {})".format( path, old_userid, new_userid)) self._verify_user(new_userid) participation.contact = new_userid moved.append((path, old_userid, new_userid)) return moved