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
« 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/>.
14"""Share page to share quotes on multiple services."""
16from __future__ import annotations
18from urllib.parse import quote
20from .utils import QuoteReadyCheckHandler, get_wrong_quote
23class ShareQuote(QuoteReadyCheckHandler):
24 """Request handler for the share page."""
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 )