Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion api/app/reviews/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -388,12 +388,14 @@ def post(self):
scores = args['scores']
language = args['language']
is_submitted = args['is_submitted']
is_private = args['is_private']

response_reviewer = review_repository.get_response_reviewer(response_id, reviewer_user_id)
if response_reviewer is None:
return FORBIDDEN

review_response = ReviewResponse(review_form_id, reviewer_user_id, response_id, language)
review_response = ReviewResponse(review_form_id, reviewer_user_id, response_id,
language, is_private)
review_response.review_scores = self.get_review_scores(scores)
if is_submitted:
review_response.submit()
Expand Down
1 change: 1 addition & 0 deletions api/app/reviews/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class PostReviewResponseMixin(object):
post_req_parser.add_argument('scores', type=dict, required=True, action='append')
post_req_parser.add_argument('language', type=str, required=True)
post_req_parser.add_argument('is_submitted', type=bool, required=True)
post_req_parser.add_argument('is_private', type=bool, required=True)

class GetReviewAssignmentMixin(object):
get_req_parser = reqparse.RequestParser()
Expand Down
5 changes: 4 additions & 1 deletion api/app/reviews/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ class ReviewResponse(db.Model):
language = db.Column(db.String(2), nullable=False)
is_submitted = db.Column(db.Boolean(), nullable=False)
submitted_timestamp = db.Column(db.DateTime(), nullable=True)
is_private = db.Column(db.Boolean(), nullable=False)

review_form = db.relationship('ReviewForm', foreign_keys=[review_form_id])
reviewer_user = db.relationship('AppUser', foreign_keys=[reviewer_user_id])
Expand All @@ -207,12 +208,14 @@ def __init__(self,
review_form_id,
reviewer_user_id,
response_id,
language):
language,
is_private):
self.review_form_id = review_form_id
self.reviewer_user_id = reviewer_user_id
self.response_id = response_id
self.language = language
self.is_submitted = False
self.is_private = is_private

def submit(self):
self.is_submitted = True
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
"""
Adds a field called ``is_private`` to review_response table.
It is used to specify whether the response from the reviewer is public,
or private. If it is private, then only the meta-reviewer can see the response.

Revision ID: e23b638b03cc
Revises: 9143756e596d
Create Date: 2023-07-30 19:16:28.509240

"""

# revision identifiers, used by Alembic.
revision = 'e23b638b03cc'
down_revision = '9143756e596d'

from alembic import op
import sqlalchemy as sa

def upgrade():
op.add_column('review_response', sa.Column('is_private', sa.Boolean(), nullable=True))
op.execute("UPDATE review_response SET is_private = false")
op.alter_column('review_response', 'is_private', nullable=False)

def downgrade():
op.drop_column('review_response', 'is_private')