site.views   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 18
dl 0
loc 41
rs 10
c 0
b 0
f 0
wmc 3

2 Functions

Rating   Name   Duplication   Size   Complexity  
A index() 0 8 1
A _get_news_teasers() 0 10 2
1
"""
2
byceps.services.homepage.blueprints.site.views
3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5
:Copyright: 2014-2025 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9
from flask import g
10
11
from byceps.services.news import news_item_service
12
from byceps.services.news.models import NewsTeaser
13
from byceps.util.framework.blueprint import create_blueprint
14
from byceps.util.framework.templating import templated
15
16
17
blueprint = create_blueprint('homepage', __name__)
18
19
20
@blueprint.get('')
21
@templated
22
def index():
23
    """Show homepage."""
24
    news_teasers = _get_news_teasers()
25
26
    return {
27
        'news_teasers': news_teasers,
28
    }
29
30
31
def _get_news_teasers() -> list[NewsTeaser] | None:
32
    """Return the most recent news teasers.
33
34
    Returns `None` if no news channels are configured for this site.
35
    """
36
    channel_ids = g.site.news_channel_ids
37
    if not channel_ids:
38
        return None
39
40
    return news_item_service.get_recent_teasers(channel_ids, limit=3)
41