Coverage for src/couchers/servicers/reporting.py: 100%
17 statements
« prev ^ index » next coverage.py v7.5.0, created at 2024-12-02 20:27 +0000
« prev ^ index » next coverage.py v7.5.0, created at 2024-12-02 20:27 +0000
1import grpc
2from google.protobuf import empty_pb2
4from couchers import errors
5from couchers.models import ContentReport, User
6from couchers.sql import couchers_select as select
7from couchers.tasks import send_content_report_email
8from proto import reporting_pb2_grpc
11class Reporting(reporting_pb2_grpc.ReportingServicer):
12 def Report(self, request, context, session):
13 # note no filtering on visibility
14 author_user = session.execute(select(User).where_username_or_id(request.author_user)).scalar_one_or_none()
16 if not author_user:
17 context.abort(grpc.StatusCode.NOT_FOUND, errors.USER_NOT_FOUND)
19 content_report = ContentReport(
20 reporting_user_id=context.user_id,
21 reason=request.reason,
22 description=request.description,
23 content_ref=request.content_ref,
24 author_user=author_user,
25 user_agent=request.user_agent,
26 page=request.page,
27 )
29 session.add(content_report)
30 session.flush()
32 send_content_report_email(session, content_report)
34 return empty_pb2.Empty()