Coverage for src/couchers/urls.py: 94%

72 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-09 02:24 +0000

1# The source of truth for URLs is 

2# //docs/urls.md 

3# Please make sure this file stays in sync with that file as well as 

4# //app/web/src/routes.ts 

5 

6 

7from couchers.config import config 

8 

9 

10def app_link() -> str: 

11 return f"{config['BASE_URL']}/" 

12 

13 

14def icon_url() -> str: 

15 return f"{config['BASE_URL']}/logo512.png" 

16 

17 

18def profile_link() -> str: 

19 return f"{config['BASE_URL']}/profile" 

20 

21 

22def user_link(*, username: str) -> str: 

23 return f"{config['BASE_URL']}/user/{username}" 

24 

25 

26def edit_profile_link() -> str: 

27 return f"{config['BASE_URL']}/profile/edit" 

28 

29 

30def signup_link(*, token: str) -> str: 

31 return f"{config['BASE_URL']}/signup?token={token}" 

32 

33 

34def account_settings_link() -> str: 

35 return f"{config['BASE_URL']}/account-settings" 

36 

37 

38def notification_settings_link() -> str: 

39 return f"{config['BASE_URL']}/account-settings/notifications" 

40 

41 

42def feature_preview_link() -> str: 

43 return f"{config['BASE_URL']}/preview" 

44 

45 

46def password_reset_link(*, password_reset_token: str) -> str: 

47 return f"{config['BASE_URL']}/complete-password-reset?token={password_reset_token}" 

48 

49 

50def host_request_link_host() -> str: 

51 return f"{config['BASE_URL']}/messages/hosting/" 

52 

53 

54def host_request_link_guest() -> str: 

55 return f"{config['BASE_URL']}/messages/surfing/" 

56 

57 

58def host_request(*, host_request_id: str) -> str: 

59 return f"{config['BASE_URL']}/messages/request/{host_request_id}" 

60 

61 

62def messages_link() -> str: 

63 return f"{config['BASE_URL']}/messages/" 

64 

65 

66def chat_link(*, chat_id: str) -> str: 

67 return f"{config['BASE_URL']}/messages/chats/{chat_id}" 

68 

69 

70def event_link(*, occurrence_id: str, slug: str = "e") -> str: 

71 return f"{config['BASE_URL']}/event/{occurrence_id}/{slug}" 

72 

73 

74def community_link(*, node_id: str, slug: str = "e") -> str: 

75 return f"{config['BASE_URL']}/community/{node_id}/{slug}" 

76 

77 

78def discussion_link(*, discussion_id: str, slug: str = "e") -> str: 

79 return f"{config['BASE_URL']}/discussion/{discussion_id}/{slug}" 

80 

81 

82def leave_reference_link(*, reference_type: str, to_user_id: str, host_request_id: str | None = None) -> str: 

83 assert reference_type in ["friend", "surfed", "hosted"] 

84 if host_request_id: 

85 return f"{config['BASE_URL']}/leave-reference/{reference_type}/{to_user_id}/{host_request_id}" 

86 else: 

87 return f"{config['BASE_URL']}/leave-reference/{reference_type}/{to_user_id}" 

88 

89 

90def profile_references_link() -> str: 

91 return f"{config['BASE_URL']}/profile/references" 

92 

93 

94def friend_requests_link() -> str: 

95 return f"{config['BASE_URL']}/connections/friends/" 

96 

97 

98def media_upload_url(*, path: str) -> str: 

99 return f"{config['MEDIA_SERVER_UPLOAD_BASE_URL']}/{path}" 

100 

101 

102def change_email_link(*, confirmation_token: str) -> str: 

103 return f"{config['BASE_URL']}/confirm-email?token={confirmation_token}" 

104 

105 

106def donation_url() -> str: 

107 return f"{config['BASE_URL']}/donate" 

108 

109 

110def donation_cancelled_url() -> str: 

111 return f"{config['BASE_URL']}/donate?cancelled=true" 

112 

113 

114def donation_success_url() -> str: 

115 return f"{config['BASE_URL']}/donate?success=true" 

116 

117 

118def complete_strong_verification_url(*, verification_attempt_token: str) -> str: 

119 return f"{config['BASE_URL']}/complete-strong-verification?verification_attempt_token={verification_attempt_token}" 

120 

121 

122def delete_account_link(*, account_deletion_token: str) -> str: 

123 return f"{config['BASE_URL']}/delete-account?token={account_deletion_token}" 

124 

125 

126def recover_account_link(*, account_undelete_token: str) -> str: 

127 return f"{config['BASE_URL']}/recover-account?token={account_undelete_token}" 

128 

129 

130def unsubscribe_link(*, payload: str, sig: str) -> str: 

131 return f"{config['BASE_URL']}/quick-link?payload={payload}&sig={sig}" 

132 

133 

134def quick_link(*, payload: str, sig: str) -> str: 

135 return f"{config['BASE_URL']}/quick-link?payload={payload}&sig={sig}" 

136 

137 

138def media_url(*, filename: str, size: str) -> str: 

139 return f"{config['MEDIA_SERVER_BASE_URL']}/img/{size}/{filename}" 

140 

141 

142def console_link(*, page: str) -> str: 

143 return f"{config['CONSOLE_BASE_URL']}/{page}" 

144 

145 

146def invite_code_link(*, code: str) -> str: 

147 return f"{config['BASE_URL']}/invite?code={code}"