Coverage for an_website/quotes/share.py: 100.000%

10 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-11-16 19:56 +0000

1# This program is free software: you can redistribute it and/or modify 

2# it under the terms of the GNU Affero General Public License as 

3# published by the Free Software Foundation, either version 3 of the 

4# License, or (at your option) any later version. 

5# 

6# This program is distributed in the hope that it will be useful, 

7# but WITHOUT ANY WARRANTY; without even the implied warranty of 

8# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

9# GNU Affero General Public License for more details. 

10# 

11# You should have received a copy of the GNU Affero General Public License 

12# along with this program. If not, see <https://www.gnu.org/licenses/>. 

13 

14"""Share page to share quotes on multiple services.""" 

15 

16from __future__ import annotations 

17 

18from urllib.parse import quote 

19 

20from .utils import QuoteReadyCheckHandler, get_wrong_quote 

21 

22 

23class ShareQuote(QuoteReadyCheckHandler): 

24 """Request handler for the share page.""" 

25 

26 async def get( 

27 self, quote_id: str, author_id: str, *, head: bool = False 

28 ) -> None: 

29 """Handle GET requests to the share page.""" 

30 wrong_quote = await get_wrong_quote(int(quote_id), int(author_id)) 

31 if head: 

32 return 

33 text = f"»{wrong_quote.quote.quote}«\n- {wrong_quote.author.name}" 

34 await self.render( 

35 "pages/quotes/share.html", 

36 text=quote(text, safe=""), 

37 u_text=text, 

38 u_url=(url := self.fix_url(f"/zitate/{quote_id}-{author_id}")), 

39 quote_url=quote(url, safe=""), 

40 wrong_quote=str(wrong_quote), 

41 )