add db service, add member page
This commit is contained in:
parent
a27d28498c
commit
474ec1b211
@ -6,6 +6,7 @@ import rio
|
|||||||
|
|
||||||
from . import pages
|
from . import pages
|
||||||
from . import components as comps
|
from . import components as comps
|
||||||
|
from . import services
|
||||||
|
|
||||||
themes = [
|
themes = [
|
||||||
# Grey/Purple
|
# Grey/Purple
|
||||||
@ -113,6 +114,11 @@ app = rio.App(
|
|||||||
page_url='about',
|
page_url='about',
|
||||||
build=pages.About,
|
build=pages.About,
|
||||||
),
|
),
|
||||||
|
rio.Page(
|
||||||
|
name="Member",
|
||||||
|
page_url='member',
|
||||||
|
build=lambda: pages.Member(services.DatabaseService()),
|
||||||
|
)
|
||||||
],
|
],
|
||||||
theme=themes[6],
|
theme=themes[6],
|
||||||
assets_dir=Path(__file__).parent / "assets",
|
assets_dir=Path(__file__).parent / "assets",
|
||||||
|
|||||||
BIN
ezgg_website/assets/member_pictures/anon.png
Normal file
BIN
ezgg_website/assets/member_pictures/anon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
@ -1,3 +1,4 @@
|
|||||||
from .navigation import Navigation
|
from .navigation import Navigation
|
||||||
from .header import Header
|
from .header import Header
|
||||||
from .news_post import NewsPost
|
from .news_post import NewsPost
|
||||||
|
from .member_card import MemberInfo, MemberCard
|
||||||
|
|||||||
36
ezgg_website/components/member_card.py
Normal file
36
ezgg_website/components/member_card.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
import rio
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class MemberInfo:
|
||||||
|
picture_path: Path
|
||||||
|
name: str
|
||||||
|
position: str
|
||||||
|
entry_date: str
|
||||||
|
|
||||||
|
|
||||||
|
class MemberCard(rio.Component):
|
||||||
|
def __init__(self, info: MemberInfo) -> None:
|
||||||
|
super().__init__()
|
||||||
|
self._info = info
|
||||||
|
self.align_y = 0
|
||||||
|
self.margin_top = 0
|
||||||
|
self.margin_bottom = 2
|
||||||
|
self.margin_right = 1
|
||||||
|
|
||||||
|
def build(self) -> rio.Component:
|
||||||
|
return rio.Rectangle(
|
||||||
|
content=rio.Column(
|
||||||
|
rio.Image(self._info.picture_path, height=9, margin_bottom=1.3),
|
||||||
|
rio.Text(self._info.name, margin_bottom=0.4, style=rio.TextStyle(font_weight="bold")),
|
||||||
|
rio.Text(self._info.position, margin_bottom=0.4, style=rio.TextStyle(italic=True)),
|
||||||
|
rio.Text(f"Mitglied seit {self._info.entry_date}", style=rio.TextStyle(italic=True), margin_bottom=0.4)
|
||||||
|
),
|
||||||
|
fill=self.session.theme.neutral_color,
|
||||||
|
corner_radius=self.session.theme.corner_radius_medium,
|
||||||
|
shadow_radius=0.5,
|
||||||
|
shadow_color=self.session.theme.hud_color,
|
||||||
|
shadow_offset_y=0
|
||||||
|
)
|
||||||
@ -1,3 +1,4 @@
|
|||||||
from .home import Home
|
from .home import Home
|
||||||
from .about import About
|
from .about import About
|
||||||
|
from .member import Member
|
||||||
from .page_builder import build_page
|
from .page_builder import build_page
|
||||||
|
|||||||
25
ezgg_website/pages/member.py
Normal file
25
ezgg_website/pages/member.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import * # type: ignore
|
||||||
|
|
||||||
|
import rio
|
||||||
|
|
||||||
|
from .page_builder import build_page
|
||||||
|
from .. import components as comps
|
||||||
|
from .. import services
|
||||||
|
|
||||||
|
|
||||||
|
class Member(rio.Component):
|
||||||
|
def __init__(self, database_service: services.database_service.DatabaseService) -> None:
|
||||||
|
super().__init__()
|
||||||
|
self._database_service = database_service
|
||||||
|
|
||||||
|
def build(self) -> rio.Component:
|
||||||
|
grid = rio.Grid()
|
||||||
|
for i, member in enumerate(self._database_service.get_members()):
|
||||||
|
grid.add(
|
||||||
|
comps.MemberCard(member),
|
||||||
|
row=i // 2,
|
||||||
|
column=i % 2,
|
||||||
|
)
|
||||||
|
return build_page(grid)
|
||||||
1
ezgg_website/services/__init__.py
Normal file
1
ezgg_website/services/__init__.py
Normal file
@ -0,0 +1 @@
|
|||||||
|
from .database_service import DatabaseService
|
||||||
51
ezgg_website/services/database_service.py
Normal file
51
ezgg_website/services/database_service.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
from from_root import from_root
|
||||||
|
|
||||||
|
from ezgg_website.components import MemberInfo
|
||||||
|
|
||||||
|
from ezgg_website.components.member_card import MemberInfo
|
||||||
|
|
||||||
|
|
||||||
|
# @ToDo: Make real database service at some point
|
||||||
|
class DatabaseService:
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def get_members(self) -> list[MemberInfo]:
|
||||||
|
return [
|
||||||
|
MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="David \"Typhus\" R.",
|
||||||
|
position="1. Vorsitzender",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Julia \"Ravenchild\" A.",
|
||||||
|
position="2. Vorsitzende",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Jessy \"JessySixx\" R.",
|
||||||
|
position="Schatzmeisterin",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Tim \"Matschwicht\" B.",
|
||||||
|
position="Mitglied",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Dennis \"Goodman\" P.",
|
||||||
|
position="Mitglied",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Tom \"Tcprod\" C.",
|
||||||
|
position="Mitglied",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
), MemberInfo(
|
||||||
|
picture_path=from_root("ezgg_website/assets/member_pictures/anon.png"),
|
||||||
|
name="Chris \"Meliodas\" K.",
|
||||||
|
position="Mitglied",
|
||||||
|
entry_date="29.10.2023"
|
||||||
|
)
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue
Block a user