def get_people_not_notified(cls, event): """Returns a dictionary of :class:`AgreementPersonInfo` yet to be notified""" people = cls.get_people(event) sent_agreements = { a.identifier for a in Agreement.find(event_id=event.getId(), type=cls.name) } return { k: v for k, v in people.items() if v.identifier not in sent_agreements }
def get_stats_for_signed_agreements(cls, event): """Returns a digest of signed agreements on an event :param event: the event :return: (everybody_signed, num_accepted, num_rejected) """ people = cls.get_people(event) identifiers = [p.identifier for p in people.itervalues()] query = Agreement.find(Agreement.event_id == event.getId(), Agreement.type == cls.name, Agreement.identifier.in_(identifiers)) num_accepted = query.filter(Agreement.accepted).count() num_rejected = query.filter(Agreement.rejected).count() everybody_signed = len(people) == (num_accepted + num_rejected) return everybody_signed, num_accepted, num_rejected
def get_stats_for_signed_agreements(cls, event): """Returns a digest of signed agreements on an event :param event: the event :return: (everybody_signed, num_accepted, num_rejected) """ people = cls.get_people(event) identifiers = [p.identifier for p in people.itervalues()] query = Agreement.find(Agreement.event_id == event.getId(), Agreement.type == cls.name, Agreement.identifier.in_(identifiers)) num_accepted = query.filter(Agreement.accepted).count() num_rejected = query.filter(Agreement.rejected).count() everybody_signed = len(people) == (num_accepted + num_rejected) return everybody_signed, num_accepted, num_rejected
def export_agreements(self, aw): sent_agreements = {a.identifier: a for a in Agreement.find(event_id=self._event.getId(), type=self._definition.name)} for person in islice(sorted(self._definition.get_people(self._event).itervalues(), key=attrgetter('name', 'identifier')), self._offset, self._offset + self._limit): agreement = sent_agreements.get(person.identifier) data = { 'event_id': int(self._event.id), 'identifier': person.identifier, 'sent': agreement is not None, 'accepted': None if (not agreement or agreement.pending) else agreement.accepted, } self._definition.extend_api_data(self._event, person, agreement, data) yield data
def export_agreements(self, aw): sent_agreements = {a.identifier: a for a in Agreement.find(event_id=self._event.getId(), type=self._definition.name)} for person in islice(sorted(self._definition.get_people(self._event).itervalues(), key=attrgetter('name', 'identifier')), self._offset, self._offset + self._limit): agreement = sent_agreements.get(person.identifier) data = { 'event_id': int(self._event.id), 'identifier': person.identifier, 'sent': agreement is not None, 'accepted': None if (not agreement or agreement.pending) else agreement.accepted, } self._definition.extend_api_data(self._event, person, agreement, data) yield data
def _merge_users(target, source, **kwargs): Agreement.find(user_id=source.id).update({Agreement.user_id: target.id})
def _merge_users(target, source, **kwargs): Agreement.find(user_id=source.id).update({Agreement.user_id: target.id})
def get_people_not_notified(cls, event): """Returns a dictionary of :class:`AgreementPersonInfo` yet to be notified""" people = cls.get_people(event) sent_agreements = {a.identifier for a in Agreement.find(event_id=event.getId(), type=cls.name)} return {k: v for k, v in people.items() if v.identifier not in sent_agreements}
def _merge_users(user, merged, **kwargs): new_id = int(user.id) old_id = int(merged.id) Agreement.find(user_id=old_id).update({'user_id': new_id})
def _merge_users(user, merged, **kwargs): new_id = int(user.id) old_id = int(merged.id) Agreement.find(user_id=old_id).update({'user_id': new_id})