Coverage for src/couchers/servicers/resources.py: 100%
19 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-12-28 09:56 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-12-28 09:56 +0000
1import logging
3from google.protobuf import empty_pb2
4from sqlalchemy.orm import Session
6from couchers.context import CouchersContext
7from couchers.proto import resources_pb2, resources_pb2_grpc
8from couchers.resources import (
9 get_badge_dict,
10 get_icon,
11 get_language_dict,
12 get_region_dict,
13 get_terms_of_service,
14)
16logger = logging.getLogger(__name__)
18COMMUNITY_GUIDELINES = [
19 {"key": "be_kind", "icon": "hand_with_heart.svg"},
20 {"key": "no_dating", "icon": "ghost.svg"},
21 {"key": "be_safe", "icon": "shield.svg"},
22 {"key": "no_money", "icon": "handshake.svg"},
23]
26class Resources(resources_pb2_grpc.ResourcesServicer):
27 def GetTermsOfService(
28 self, request: empty_pb2.Empty, context: CouchersContext, session: Session
29 ) -> resources_pb2.GetTermsOfServiceRes:
30 return resources_pb2.GetTermsOfServiceRes(terms_of_service=get_terms_of_service())
32 def GetCommunityGuidelines(
33 self, request: empty_pb2.Empty, context: CouchersContext, session: Session
34 ) -> resources_pb2.GetCommunityGuidelinesRes:
35 return resources_pb2.GetCommunityGuidelinesRes(
36 community_guidelines=[
37 resources_pb2.CommunityGuideline(
38 title=context.get_localized_string("community_guidelines", f"{cg['key']}_title"),
39 guideline=context.get_localized_string("community_guidelines", f"{cg['key']}_guideline"),
40 icon_svg=get_icon(cg["icon"]),
41 )
42 for cg in COMMUNITY_GUIDELINES
43 ]
44 )
46 def GetRegions(
47 self, request: empty_pb2.Empty, context: CouchersContext, session: Session
48 ) -> resources_pb2.GetRegionsRes:
49 return resources_pb2.GetRegionsRes(
50 regions=[
51 resources_pb2.Region(alpha3=alpha3, name=name) for alpha3, name in sorted(get_region_dict().items())
52 ]
53 )
55 def GetLanguages(
56 self, request: empty_pb2.Empty, context: CouchersContext, session: Session
57 ) -> resources_pb2.GetLanguagesRes:
58 return resources_pb2.GetLanguagesRes(
59 languages=[
60 resources_pb2.Language(code=code, name=name) for code, name in sorted(get_language_dict().items())
61 ]
62 )
64 def GetBadges(
65 self, request: empty_pb2.Empty, context: CouchersContext, session: Session
66 ) -> resources_pb2.GetBadgesRes:
67 return resources_pb2.GetBadgesRes(
68 badges=[
69 resources_pb2.Badge(
70 id=badge["id"],
71 name=context.get_localized_string("badges", f"{badge['id']}_name"),
72 description=context.get_localized_string("badges", f"{badge['id']}_description"),
73 color=badge["color"],
74 )
75 for badge in get_badge_dict().values()
76 ]
77 )