Skip to content

Commit

Permalink
Change remaining value objects from attrs to dataclass
Browse files Browse the repository at this point in the history
  • Loading branch information
homeworkprod committed Jan 19, 2020
1 parent e39f481 commit 1bb085f
Show file tree
Hide file tree
Showing 27 changed files with 69 additions and 91 deletions.
4 changes: 2 additions & 2 deletions byceps/blueprints/admin/newsletter/views.py
Expand Up @@ -6,9 +6,9 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from operator import attrgetter

from attr import attrs
from flask import abort

from ....services.newsletter import service as newsletter_service
Expand All @@ -30,7 +30,7 @@
permission_registry.register_enum(NewsletterPermission)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class ListWithStats(List):
subscriber_count: int

Expand Down
5 changes: 3 additions & 2 deletions byceps/blueprints/admin/party/views.py
Expand Up @@ -6,7 +6,8 @@
:License: Modified BSD, see LICENSE for details.
"""

import attr
import dataclasses

from flask import abort, request

from ....services.brand import service as brand_service
Expand Down Expand Up @@ -159,7 +160,7 @@ def update_form(party_id, erroneous_form=None):
party = _get_party_or_404(party_id)
brand = brand_service.find_brand(party.brand_id)

party = attr.evolve(
party = dataclasses.replace(
party,
starts_at=utc_to_local_tz(party.starts_at),
ends_at=utc_to_local_tz(party.ends_at),
Expand Down
6 changes: 2 additions & 4 deletions byceps/blueprints/admin/shop/order/service.py
Expand Up @@ -6,11 +6,9 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from typing import Dict, Iterator, Sequence

import attr
from attr import attrs

from .....services.shop.article.models.article import Article
from .....services.shop.article import service as article_service
from .....services.shop.article.transfer.models import ArticleNumber
Expand All @@ -29,7 +27,7 @@
from .....typing import UserID


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class OrderWithOrderer(Order):
placed_by: DbUser

Expand Down
9 changes: 4 additions & 5 deletions byceps/services/board/transfer/models.py
Expand Up @@ -6,12 +6,11 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from datetime import datetime
from typing import NewType
from uuid import UUID

from attr import attrs

from ....typing import BrandID

from ...user.transfer.models import User
Expand All @@ -29,14 +28,14 @@
TopicID = NewType('TopicID', UUID)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Board:
id: BoardID
brand_id: BrandID
access_restricted: bool


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Category:
id: CategoryID
board_id: BoardID
Expand All @@ -49,7 +48,7 @@ class Category:
hidden: bool


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class CategoryWithLastUpdate(Category):
last_posting_updated_at: datetime
last_posting_updated_by: User
6 changes: 3 additions & 3 deletions byceps/services/brand/transfer/models.py
Expand Up @@ -6,18 +6,18 @@
:License: Modified BSD, see LICENSE for details.
"""

from attr import attrs
from dataclasses import dataclass

from ....typing import BrandID


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Brand:
id: BrandID
title: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class BrandSetting:
brand_id: BrandID
name: str
Expand Down
7 changes: 3 additions & 4 deletions byceps/services/consent/transfer/models.py
Expand Up @@ -6,27 +6,26 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from datetime import datetime
from typing import NewType
from uuid import UUID

from attr import attrs

from ....typing import UserID


SubjectID = NewType('SubjectID', UUID)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Subject:
id: SubjectID
name: str
title: str
type_: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Consent:
user_id: UserID
subject_id: SubjectID
Expand Down
9 changes: 4 additions & 5 deletions byceps/services/email/transfer/models.py
Expand Up @@ -6,13 +6,12 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from email.utils import formataddr
from typing import List

from attr import attrs


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Sender:
address: str
name: str
Expand All @@ -23,14 +22,14 @@ def format(self):
return formataddr((realname, self.address))


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class EmailConfig:
id: str
sender: Sender
contact_address: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Message:
sender: Sender
recipients: List[str]
Expand Down
9 changes: 4 additions & 5 deletions byceps/services/metrics/models.py
Expand Up @@ -6,12 +6,11 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass, field
from typing import List

from attr import attrib, attrs


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Label:
name: str
value: str
Expand All @@ -35,11 +34,11 @@ def escape(char):
return ''.join(map(escape, value))


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Metric:
name: str
value: float
labels: List[Label] = attrib(factory=dict, kw_only=True)
labels: List[Label] = field(default_factory=dict)

def serialize(self) -> str:
labels_str = ''
Expand Down
9 changes: 4 additions & 5 deletions byceps/services/news/transfer/models.py
Expand Up @@ -6,12 +6,11 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from datetime import datetime
from typing import List, NewType
from uuid import UUID

from attr import attrs

from ....typing import BrandID, UserID


Expand All @@ -27,14 +26,14 @@
ImageID = NewType('ImageID', UUID)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Channel:
id: ChannelID
brand_id: BrandID
url_prefix: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Image:
id: ImageID
created_at: datetime
Expand All @@ -45,7 +44,7 @@ class Image:
caption: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Item:
id: ItemID
channel: Channel
Expand Down
7 changes: 3 additions & 4 deletions byceps/services/newsletter/transfer/models.py
Expand Up @@ -6,24 +6,23 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from datetime import datetime
from typing import NewType

from attr import attrs

from ....typing import UserID


ListID = NewType('ListID', str)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class List:
id: ListID
title: str


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Subscription:
user_id: UserID
list_id: ListID
Expand Down
11 changes: 5 additions & 6 deletions byceps/services/orga_presence/transfer/models.py
Expand Up @@ -7,11 +7,10 @@
"""

from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime
from enum import Enum

from attr import attrs

from ...party.transfer.models import Party
from ...user.transfer.models import User

Expand All @@ -21,7 +20,7 @@
TimeSlotType = Enum('TimeSlotType', ['party', 'presence', 'task'])


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class TimeSlot:
type: TimeSlotType
starts_at: datetime
Expand All @@ -32,7 +31,7 @@ def range(self) -> DateTimeRange:
return DateTimeRange(self.starts_at, self.ends_at)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class PartyTimeSlot(TimeSlot):
party: Party

Expand All @@ -46,7 +45,7 @@ def from_party(cls, party: Party) -> PartyTimeSlot:
)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class PresenceTimeSlot(TimeSlot):
orga: User

Expand All @@ -62,7 +61,7 @@ def from_(
)


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class TaskTimeSlot(TimeSlot):
title: str

Expand Down
7 changes: 3 additions & 4 deletions byceps/services/party/transfer/models.py
Expand Up @@ -6,17 +6,16 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
from datetime import datetime
from typing import Optional

from attr import attrs

from ....typing import BrandID, PartyID

from ...shop.shop.transfer.models import ShopID


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Party:
id: PartyID
brand_id: BrandID
Expand All @@ -30,7 +29,7 @@ class Party:
archived: bool


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class PartySetting:
party_id: PartyID
name: str
Expand Down
4 changes: 2 additions & 2 deletions byceps/services/shop/order/email/service.py
Expand Up @@ -8,10 +8,10 @@
:License: Modified BSD, see LICENSE for details.
"""

from dataclasses import dataclass
import os.path
from typing import Any, Dict, Optional

from attr import attrs
from flask import current_app
from jinja2 import FileSystemLoader

Expand All @@ -30,7 +30,7 @@
from ...shop.transfer.models import ShopID


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class OrderEmailData:
order: Order
email_config_id: str
Expand Down
4 changes: 2 additions & 2 deletions byceps/services/shop/order/models/orderer.py
Expand Up @@ -6,12 +6,12 @@
:License: Modified BSD, see LICENSE for details.
"""

from attr import attrs
from dataclasses import dataclass

from .....typing import UserID


@attrs(auto_attribs=True, frozen=True, slots=True)
@dataclass(frozen=True)
class Orderer:
"""Someone who orders articles."""

Expand Down

0 comments on commit 1bb085f

Please sign in to comment.