Loading common_lib/schema/enums.py +6 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,11 @@ from django.db import models from exercise.models import TeamQuestionnaireState from exercise_definition.models import QuestionTypes, Feature, InjectTypes from running_exercise.models import LogType, QuestionnaireAnswerStatus from running_exercise.models import ( LogType, QuestionnaireAnswerStatus, MilestoneModificationDetails, ) from user.models import User Loading Loading @@ -42,3 +46,4 @@ ConfigFeatureEnum = graphene.Enum.from_enum(Feature) QuestionnaireAnswerStateEnum = graphene.Enum.from_enum( QuestionnaireAnswerStatus ) CauseTypeEnum = graphene.Enum.from_enum(MilestoneModificationDetails.CauseType) common_lib/schema/types.py +31 −20 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ from common_lib.schema.enums import ( ExerciseStateEnum, LogTypeEnum, InjectTypeEnum, CauseTypeEnum, ) from common_lib.schema.inputs import TimeIntervalType from common_lib.utils import ensure_all_exist, ensure_exists Loading Loading @@ -915,24 +916,29 @@ class IFileDownloadDetailsType(DjangoObjectType): class TMilestoneModificationDetailsType(DjangoObjectType): class Meta: model = MilestoneModificationDetails exclude = ["cause"] activated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True activated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) deactivated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True deactivated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) def resolve_activated_milestones(self, info): def resolve_activated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.activated_milestones), len(self.activated_milestones), MilestoneState.objects.filter( id__in=self.activated_milestone_states ), len(self.activated_milestone_states), ) def resolve_deactivated_milestones(self, info): def resolve_deactivated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.deactivated_milestones), len(self.deactivated_milestones), MilestoneState.objects.filter( id__in=self.deactivated_milestone_states ), len(self.deactivated_milestone_states), ) Loading @@ -940,23 +946,28 @@ class IMilestoneModificationDetailsType(DjangoObjectType): class Meta: model = MilestoneModificationDetails activated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True activated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) deactivated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True deactivated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) cause = graphene.Field(CauseTypeEnum, required=True) def resolve_activated_milestones(self, info): def resolve_activated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.activated_milestones), len(self.activated_milestones), MilestoneState.objects.filter( id__in=self.activated_milestone_states ), len(self.activated_milestone_states), ) def resolve_deactivated_milestones(self, info): def resolve_deactivated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.deactivated_milestones), len(self.deactivated_milestones), MilestoneState.objects.filter( id__in=self.deactivated_milestone_states ), len(self.deactivated_milestone_states), ) Loading running_exercise/lib/email_client.py +1 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ class EmailClient: if p.team is not None ) ) # ensure finding the first non-null team from cached data logs = handler.send_email(email, time, access.user) logs = handler.send_email(email, time, access) SubscriptionHandler.broadcast_action_logs(logs) return logs Loading running_exercise/lib/email_handler.py +6 −2 Original line number Diff line number Diff line Loading @@ -206,7 +206,10 @@ class EmailHandler: ) def send_email( self, email: Email, in_exercise_time: int, user: Optional[User] = None self, email: Email, in_exercise_time: int, access: Optional[ExerciseAccess] = None, ) -> List[ActionLog]: self.milestone_modifications.dedupe_modifications() requires_attention = self.requires_attention() Loading @@ -221,7 +224,7 @@ class EmailHandler: email, in_exercise_time, requires_attention, user=user, user=access.user if access else None, ) logs.append(email_log) Loading @@ -230,6 +233,7 @@ class EmailHandler: self.milestone_handlers[participant.team_id].update( self.milestone_modifications, email_log, access, ) ) Loading running_exercise/lib/file_handler.py +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ def get_uploaded_file( ) logs.extend( milestone_handler.update( Control(activate_milestone=to_activate), logs[0] Control(activate_milestone=to_activate), logs[0], access ) ) Loading Loading
common_lib/schema/enums.py +6 −1 Original line number Diff line number Diff line Loading @@ -3,7 +3,11 @@ from django.db import models from exercise.models import TeamQuestionnaireState from exercise_definition.models import QuestionTypes, Feature, InjectTypes from running_exercise.models import LogType, QuestionnaireAnswerStatus from running_exercise.models import ( LogType, QuestionnaireAnswerStatus, MilestoneModificationDetails, ) from user.models import User Loading Loading @@ -42,3 +46,4 @@ ConfigFeatureEnum = graphene.Enum.from_enum(Feature) QuestionnaireAnswerStateEnum = graphene.Enum.from_enum( QuestionnaireAnswerStatus ) CauseTypeEnum = graphene.Enum.from_enum(MilestoneModificationDetails.CauseType)
common_lib/schema/types.py +31 −20 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ from common_lib.schema.enums import ( ExerciseStateEnum, LogTypeEnum, InjectTypeEnum, CauseTypeEnum, ) from common_lib.schema.inputs import TimeIntervalType from common_lib.utils import ensure_all_exist, ensure_exists Loading Loading @@ -915,24 +916,29 @@ class IFileDownloadDetailsType(DjangoObjectType): class TMilestoneModificationDetailsType(DjangoObjectType): class Meta: model = MilestoneModificationDetails exclude = ["cause"] activated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True activated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) deactivated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True deactivated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) def resolve_activated_milestones(self, info): def resolve_activated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.activated_milestones), len(self.activated_milestones), MilestoneState.objects.filter( id__in=self.activated_milestone_states ), len(self.activated_milestone_states), ) def resolve_deactivated_milestones(self, info): def resolve_deactivated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.deactivated_milestones), len(self.deactivated_milestones), MilestoneState.objects.filter( id__in=self.deactivated_milestone_states ), len(self.deactivated_milestone_states), ) Loading @@ -940,23 +946,28 @@ class IMilestoneModificationDetailsType(DjangoObjectType): class Meta: model = MilestoneModificationDetails activated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True activated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) deactivated_milestones = graphene.List( graphene.NonNull(MilestoneType), required=True deactivated_milestone_states = graphene.List( graphene.NonNull(MilestoneStateType), required=True ) cause = graphene.Field(CauseTypeEnum, required=True) def resolve_activated_milestones(self, info): def resolve_activated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.activated_milestones), len(self.activated_milestones), MilestoneState.objects.filter( id__in=self.activated_milestone_states ), len(self.activated_milestone_states), ) def resolve_deactivated_milestones(self, info): def resolve_deactivated_milestone_states(self, info): return ensure_all_exist( Milestone.objects.filter(id__in=self.deactivated_milestones), len(self.deactivated_milestones), MilestoneState.objects.filter( id__in=self.deactivated_milestone_states ), len(self.deactivated_milestone_states), ) Loading
running_exercise/lib/email_client.py +1 −1 Original line number Diff line number Diff line Loading @@ -142,7 +142,7 @@ class EmailClient: if p.team is not None ) ) # ensure finding the first non-null team from cached data logs = handler.send_email(email, time, access.user) logs = handler.send_email(email, time, access) SubscriptionHandler.broadcast_action_logs(logs) return logs Loading
running_exercise/lib/email_handler.py +6 −2 Original line number Diff line number Diff line Loading @@ -206,7 +206,10 @@ class EmailHandler: ) def send_email( self, email: Email, in_exercise_time: int, user: Optional[User] = None self, email: Email, in_exercise_time: int, access: Optional[ExerciseAccess] = None, ) -> List[ActionLog]: self.milestone_modifications.dedupe_modifications() requires_attention = self.requires_attention() Loading @@ -221,7 +224,7 @@ class EmailHandler: email, in_exercise_time, requires_attention, user=user, user=access.user if access else None, ) logs.append(email_log) Loading @@ -230,6 +233,7 @@ class EmailHandler: self.milestone_handlers[participant.team_id].update( self.milestone_modifications, email_log, access, ) ) Loading
running_exercise/lib/file_handler.py +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ def get_uploaded_file( ) logs.extend( milestone_handler.update( Control(activate_milestone=to_activate), logs[0] Control(activate_milestone=to_activate), logs[0], access ) ) Loading