masschallenge/impact-api

View on GitHub
web/impact/impact/v1/helpers/judge_gender_criterion_helper.py

Summary

Maintainability
C
1 day
Test Coverage
# MIT License
# Copyright (c) 2017 MassChallenge, Inc.

from impact.v1.helpers.judge_criterion_helper import JudgeCriterionHelper
from django.db.models import F


class JudgeGenderCriterionHelper(JudgeCriterionHelper):
    cache_judge_field = "expertprofile__gender"
    judge_field = "judge__" + cache_judge_field
    cache_key = cache_judge_field

    def analysis_annotate_fields(self):
        return {
            "gender": F(self.judge_field),
            self.cache_key: F(self.judge_field)
        }

    def analysis_tally(self, app_id, db_value, cache, **kwargs):
        gender_value = cache[app_id]["gender"].get(
            db_value["gender"])
        cache[app_id]["gender"][db_value["gender"]] = (
            1 if gender_value is None else gender_value + 1)