def get_user_progress(user):
    if not can_participate(user):
        return None
    if is_at_phase(Phase.SELF_REVIEW):
        person_reviews = get_all_person_reviews(user)
        project_reviews = get_all_project_reviews(user)
        res = {'performance_competencies': 0,
               'dominant_characteristics': 0}
        if len(person_reviews) > 0:
            res = get_person_review_progress(person_reviews[0])

        project_reviews_progress = []
        for project_review in project_reviews:
            project_reviews_progress.append(get_project_review_progress(project_review))
        res['projects'] = project_reviews_progress

        return res
    if is_at_phase(Phase.PEER_REVIEW):
        res = []
        for peer in get_users_to_review(user):
            person_review_qs = get_user_person_reviews(user=user, reviewee=peer)
            if not person_review_qs:
                res.append((peer, State.TODO))
            else:
                res.append((peer, State(person_review_qs.get().state)))
        return res
    return None
Ejemplo n.º 2
0
def get_users_to_review(user):
    if not user.is_authenticated:
        return User.objects.none()
    if is_at_phase(Phase.MANAGER_REVIEW):
        return User.objects.filter(manager=user)
    if is_at_phase(Phase.PEER_REVIEW):
        return User.objects.filter(projectreview__reviewers=user).distinct()
    return User.objects.none()
def get_users_to_review(user):
    if not user.is_authenticated:
        return User.objects.none()
    if is_at_phase(Phase.MANAGER_REVIEW):
        qs = User.objects.filter(round=get_active_round())
        return filter_query_set_for_manager_review(user, qs)
    if is_at_phase(Phase.PEER_REVIEW):
        return User.objects.filter(
            projectreview__reviewers=user,
            projectreview__round=get_active_round()).distinct()
    return User.objects.none()
def get_all_project_comments(user):
    if not user.is_authenticated:
        return ProjectComment.objects.none()
    if is_at_phase(Phase.PEER_REVIEW):
        return ProjectComment.objects.filter(reviewer=user)
    if is_at_phase(Phase.MANAGER_REVIEW):
        return ProjectComment.objects.filter(
            project_review__reviewee__manager=user)
    if is_at_phase(Phase.RESULTS):
        return ProjectComment.objects.filter(project_review__reviewee=user)
    return ProjectComment.objects.none()
Ejemplo n.º 5
0
def get_all_person_reviews(user):
    if not user.is_authenticated:
        return PersonReview.objects.none()
    if is_at_phase(Phase.SELF_REVIEW):
        return PersonReview.objects.filter(reviewer=user, reviewee=user)
    if is_at_phase(Phase.PEER_REVIEW):
        return PersonReview.objects.filter(reviewer=user).exclude(reviewee=user)
    if is_at_phase(Phase.MANAGER_REVIEW):
        return PersonReview.objects.filter(reviewee__manager=user)
    if is_at_phase(Phase.RESULTS):
        return PersonReview.objects.filter(reviewee=user)
    return PersonReview.objects.none()
Ejemplo n.º 6
0
def can_review_person(user, reviewee):
    if not user.is_authenticated:
        return False

    if is_at_phase(Phase.SELF_REVIEW):
        if user == reviewee:
            return True
        return False

    if is_at_phase(Phase.PEER_REVIEW):
        if ProjectReview.objects.filter(reviewee=reviewee, reviewers=user).exists():
            return True
        return False
    return False
def get_all_project_reviews(user):
    if not user.is_authenticated:
        return ProjectReview.objects.none()
    if is_at_phase(Phase.SELF_REVIEW):
        return ProjectReview.objects.filter(round=get_active_round(),
                                            reviewee=user)
    if is_at_phase(Phase.PEER_REVIEW):
        return ProjectReview.objects.filter(round=get_active_round(),
                                            reviewers=user)
    if is_at_phase(Phase.MANAGER_REVIEW):
        qs = ProjectReview.objects.filter(round=get_active_round())
        return filter_query_set_for_manager_review(user, qs, 'reviewee')
    if is_at_phase(Phase.RESULTS):
        return ProjectReview.objects.filter(round=get_active_round(),
                                            reviewee=user)
    return ProjectReview.objects.none()
def get_all_manager_person_reviews(user):
    if not user.is_authenticated:
        return ManagerPersonReview.objects.none()
    if is_at_phase(Phase.MANAGER_REVIEW):
        qs = ManagerPersonReview.objects.filter(round=get_active_round())
        return filter_query_set_for_manager_review(user, qs, 'reviewee')
    return ManagerPersonReview.objects.none()
Ejemplo n.º 9
0
 def get_progess(self, obj):
     progress = get_user_progress(obj)
     if progress is None:
         return ''
     if is_at_phase(Phase.SELF_REVIEW):
         res = 'Criteria: %d%% - SW: %d%% - P: %s' % (
             progress['performance_competencies'],
             progress['dominant_characteristics'],
             list(map(int, progress['projects'])))
         return res
     if is_at_phase(Phase.PEER_REVIEW):
         res = [
             '%s: %s' % (peer.name, state.name) for peer, state in progress
         ]
         return ', '.join(res)
     return ''
Ejemplo n.º 10
0
 def get_progess(self, obj):
     if is_at_phase(Phase.SELF_REVIEW):
         progress = get_user_progress(obj)
         res = 'Criteria: %d%% - SW: %d%% - P: %s' % (
             progress['performance_competencies'],
             progress['dominant_characteristics'],
             list(map(int, progress['projects'])))
         return res
     return ''
Ejemplo n.º 11
0
def get_all_manager_project_comments(user):
    if not user.is_authenticated:
        return ManagerProjectComment.objects.none()
    if is_at_phase(Phase.MANAGER_REVIEW):
        qs = ManagerProjectComment.objects.filter(
            project_review__round=get_active_round())
        return filter_query_set_for_manager_review(user, qs,
                                                   'project_review__reviewee')
    return ManagerProjectComment.objects.none()
Ejemplo n.º 12
0
def get_or_create_project_review(project, reviewee):
    if not reviewee.is_authenticated:
        return None

    if not is_at_phase(Phase.SELF_REVIEW):
        return None

    project_review, created = ProjectReview.objects.get_or_create(
        project=project, reviewee=reviewee)
    return project_review
Ejemplo n.º 13
0
def delete_project_review(user, project_review):
    if not user.is_authenticated:
        return None

    if project_review.reviewee != user:
        return None

    if not is_at_phase(Phase.SELF_REVIEW):
        return None

    project_review_id = project_review.id
    project_review.delete()
    return project_review_id
def get_user_progress(user):
    if is_at_phase(Phase.SELF_REVIEW):
        person_reviews = PersonReview.objects.filter(reviewee=user,
                                                     reviewer=user)
        project_reviews = ProjectReview.objects.filter(reviewee=user)

        res = {'performance_competencies': 0, 'dominant_characteristics': 0}
        if len(person_reviews) > 0:
            res = get_person_review_progress(person_reviews[0])

        project_reviews_progress = []
        for project_review in project_reviews:
            project_reviews_progress.append(
                get_project_review_progress(project_review))
        res['projects'] = project_reviews_progress

        return res
    return {}
 def resolve_reviewers(self, info):
     if not is_at_phase(Phase.SELF_REVIEW):
         return ProjectReview.objects.none()
     return self.reviewers.all()
def get_project_review_reviewers(project_review):
    if not is_at_phase(Phase.SELF_REVIEW):
        return User.objects.none()
    return project_review.reviewers.all()
def can_review_project(user, project_review):
    if is_at_phase(Phase.PEER_REVIEW):
        return user in project_review.reviewers.all()
    return False
def get_project_review_rating(project_review):
    if not is_at_phase(Phase.PEER_REVIEW):
        return project_review.rating
    return None