Total Complexity | 2 |
Total Lines | 66 |
Duplicated Lines | 0 % |
Coverage | 100% |
Changes | 0 |
1 | """ |
||
2 | byceps.blueprints.site.board.models |
||
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
||
4 | |||
5 | :Copyright: 2006-2021 Jochen Kupperschmidt |
||
6 | :License: Revised BSD (see `LICENSE` file for details) |
||
7 | """ |
||
8 | |||
9 | 1 | from __future__ import annotations |
|
10 | 1 | from dataclasses import dataclass |
|
11 | 1 | from typing import Optional |
|
12 | |||
13 | 1 | from ....services.board.transfer.models import CategoryWithLastUpdate |
|
14 | 1 | from ....services.user.transfer.models import User |
|
15 | 1 | from ....services.user_badge.transfer.models import Badge |
|
16 | |||
17 | |||
18 | 1 | @dataclass(frozen=True) |
|
19 | 1 | class CategoryWithLastUpdateAndUnseenFlag(CategoryWithLastUpdate): |
|
20 | 1 | contains_unseen_postings: bool |
|
21 | |||
22 | 1 | @classmethod |
|
23 | def from_category_with_last_update( |
||
24 | cls, category: CategoryWithLastUpdate, contains_unseen_postings: bool |
||
25 | ) -> CategoryWithLastUpdateAndUnseenFlag: |
||
26 | 1 | return cls( |
|
27 | category.id, |
||
28 | category.board_id, |
||
29 | category.position, |
||
30 | category.slug, |
||
31 | category.title, |
||
32 | category.description, |
||
33 | category.topic_count, |
||
34 | category.posting_count, |
||
35 | category.hidden, |
||
36 | category.last_posting_updated_at, |
||
37 | category.last_posting_updated_by, |
||
38 | contains_unseen_postings, |
||
39 | ) |
||
40 | |||
41 | |||
42 | 1 | @dataclass(frozen=True) |
|
43 | class Ticket: |
||
44 | 1 | party_title: str |
|
45 | |||
46 | |||
47 | 1 | @dataclass(frozen=True) |
|
48 | 1 | class Creator(User): |
|
49 | 1 | badges: set[Badge] |
|
50 | 1 | ticket: Ticket |
|
51 | |||
52 | 1 | @classmethod |
|
53 | def from_( |
||
54 | cls, user: User, badges: set[Badge], ticket: Optional[Ticket] |
||
55 | ) -> Creator: |
||
56 | 1 | return cls( |
|
57 | id=user.id, |
||
58 | screen_name=user.screen_name, |
||
59 | suspended=user.suspended, |
||
60 | deleted=user.deleted, |
||
61 | locale=user.locale, |
||
62 | avatar_url=user.avatar_url, |
||
63 | is_orga=user.is_orga, |
||
64 | badges=badges, |
||
65 | ticket=ticket, |
||
66 | ) |
||
67 |