Example #1
0
    def get_local_missions(self, project: scoring_base.ScoringProject) \
            -> association_pb2.VolunteeringMissions:
        """Get the civic service missions for the user departement"""

        departement_id = project.details.city.departement_id
        if not departement_id:
            return association_pb2.VolunteeringMissions()
        try:
            return self._db.get_collection(project.database)[departement_id]
        except KeyError:
            return association_pb2.VolunteeringMissions()
Example #2
0
    def volunteering_missions(self, project: scoring_base.ScoringProject) \
            -> association_pb2.VolunteeringMissions:
        """Return a list of volunteering mission close to the project."""

        departement_id = project.details.city.departement_id

        # Get data from MongoDB.
        volunteering_missions_dict: dict[str, association_pb2.VolunteeringMissions] = \
            collections.defaultdict(association_pb2.VolunteeringMissions)
        collection = project.database.volunteering_missions
        for record in collection.find({'_id': {'$in': [departement_id, '']}}):
            record_id = record.pop('_id')
            proto.parse_from_mongo(record,
                                   volunteering_missions_dict[record_id])

        # TODO(pascal): First get missions from target city if any.

        # Merge data.
        project_missions = association_pb2.VolunteeringMissions()
        for scope in [departement_id, '']:
            for mission in volunteering_missions_dict[scope].missions:
                mission.is_available_everywhere = not scope
                project_missions.missions.add().CopyFrom(mission)

        return project_missions