123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- from dataclasses import dataclass
- from datetime import datetime
- from typing import Any, Optional, List
- import lc.config as c
- class View:
- pass
- @dataclass
- class Pagination(View):
- current: int
- last: int
- def previous(self) -> Optional[dict]:
- if self.current > 1:
- return {"page": self.current - 1}
- return None
- def next(self) -> Optional[dict]:
- if self.current < self.last:
- return {"page": self.current + 1}
- return None
- @classmethod
- def from_total(cls, current, total) -> "Pagination":
- return cls(current=current, last=((total - 1) // c.per_page) + 1,)
- @dataclass
- class UserInvite(View):
- claimed: bool
- claimant: str
- token: str
- @dataclass
- class AddUser(View):
- token: str
- @dataclass
- class AdminPane(View):
- invites: List[UserInvite]
- @dataclass
- class Config(View):
- username: str
- admin_pane: Optional[AdminPane]
- msg: Optional[int] = None
- def bookmarklet_link(self):
- return (
- "javascript:(function(){window.open(`"
- + c.app_path
- + "/u/"
- + self.username
- + "/l?name=${document.title}&url=${document.URL}`);})();"
- )
- def message(self) -> Optional[str]:
- if self.msg == 1:
- return "Password changed."
- elif self.msg == 2:
- return "Mismatched new passwords; please try again."
- elif self.msg == 3:
- return "Incorrect old password; please try again."
- return None
- @dataclass
- class Tag(View):
- url: str
- name: str
- @dataclass
- class Link(View):
- id: int
- url: str
- name: str
- description: str
- private: bool
- tags: List[Tag]
- created: datetime
- is_mine: bool
- link_url: str
- @dataclass
- class LinkList(View):
- links: List[Any]
- tags: List[Tag]
- pages: Optional[Pagination] = None
- @dataclass
- class SingleLink(View):
- link: Any
- @dataclass
- class Message(View):
- title: str
- message: str
- @dataclass
- class AddLinkDefaults(View):
- url: Optional[str] = None
- name: Optional[str] = None
- @dataclass
- class Page(View):
- title: str
- content: str
- user: Optional[Any]
- @dataclass
- class Error(View):
- code: int
- message: str
|