Example #1
0
 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
     }
Example #2
0
    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
Example #3
0
File: base.py Project: NIIF/indico
    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
Example #4
0
 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
Example #5
0
 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
Example #6
0
def _merge_users(target, source, **kwargs):
    Agreement.find(user_id=source.id).update({Agreement.user_id: target.id})
Example #7
0
def _merge_users(target, source, **kwargs):
    Agreement.find(user_id=source.id).update({Agreement.user_id: target.id})
Example #8
0
File: base.py Project: NIIF/indico
 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}
Example #9
0
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})
Example #10
0
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})