diff --git a/main/constants.py b/main/constants.py new file mode 100644 index 0000000000000000000000000000000000000000..9d96beb5c5b4da8d2369258e38b060777160ecfa --- /dev/null +++ b/main/constants.py @@ -0,0 +1,14 @@ +MONTH_NAMES = [ + "Leden", + "Únor", + "Březen", + "Duben", + "Květen", + "Červen", + "Červenec", + "Srpen", + "Září", + "Říjen", + "Listopad", + "Prosinec", +] diff --git a/main/migrations/0027_alter_mainpersonpage_people.py b/main/migrations/0027_alter_mainpersonpage_people.py new file mode 100644 index 0000000000000000000000000000000000000000..2b89c8ded3f82ad85baaa69a5090cc4fcff3c0d1 --- /dev/null +++ b/main/migrations/0027_alter_mainpersonpage_people.py @@ -0,0 +1,53 @@ +# Generated by Django 4.0.7 on 2022-08-31 10:30 + +import wagtail.blocks +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("main", "0026_remove_mainhomepage_max_items_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="mainpersonpage", + name="people", + field=wagtail.fields.StreamField( + [ + ( + "people_group", + wagtail.blocks.StructBlock( + [ + ("title", wagtail.blocks.CharBlock(label="Titulek")), + ( + "slug", + wagtail.blocks.CharBlock( + help_text="Není třeba vyplňovat, bude automaticky vyplněno", + label="Slug skupiny", + required=False, + ), + ), + ( + "person_list", + wagtail.blocks.ListBlock( + wagtail.blocks.PageChooserBlock( + label="Detail osoby", + page_type=["main.MainPersonPage"], + ), + label="Skupina osob", + ), + ), + ], + label="Seznam osob", + ), + ) + ], + blank=True, + use_json_field=None, + verbose_name="Další lidé", + ), + ), + ] diff --git a/main/models.py b/main/models.py index 524093117dfc42aa626231ebf982d6c1cf30446f..01849262bceb5e31134b1cab3e51f9a8fab46b25 100644 --- a/main/models.py +++ b/main/models.py @@ -1,3 +1,4 @@ +import locale from datetime import timedelta from functools import cached_property @@ -37,6 +38,7 @@ from tuning import admin_help from twitter_utils.models import Tweet from . import blocks +from .constants import MONTH_NAMES from .forms import JekyllImportForm from .menu import MenuMixin @@ -385,7 +387,7 @@ class MainArticlesPage( def get_empty_month_data(date_obj): return { "month_number": date_obj.month, - "month_text": date_obj.strftime("%B"), + "month_text": MONTH_NAMES[date_obj.month - 1], "left_column": [], "right_column": [], } diff --git a/twitter_utils/services.py b/twitter_utils/services.py index adf44b29aec691fa0719417bce31e76c8479633b..95d987484c2ff01683585fe6c31a08098430f14a 100644 --- a/twitter_utils/services.py +++ b/twitter_utils/services.py @@ -6,7 +6,7 @@ from django.utils import timezone from tweepy import Client from tweepy.errors import BadRequest -from main.models import MainHomePage +from main.models import MainHomePage, MainPersonPage from .models import Tweet @@ -48,6 +48,7 @@ class TweetDownloadService: """ tweets_response = self.client.get_users_tweets( user_id, + exclude=["retweets"], expansions=["author_id", "entities.mentions.username"], max_results=100, start_time=timezone.now() - timedelta(days=self.days_back), @@ -59,15 +60,25 @@ class TweetDownloadService: def get_user_list_data(self) -> list["User"]: twitter_usernames_block = MainHomePage.objects.first().twitter_usernames + person_username_list = ( + MainPersonPage.objects.filter(twitter_username__isnull=False) + .values_list("twitter_username", flat=True) + .distinct() + ) + homepage_username_list = [ + username_data["value"] for username_data in twitter_usernames_block.raw_data + ] + username_list = [*person_username_list, *homepage_username_list] + user_data_list = [] - for username_data in twitter_usernames_block.raw_data: + for username in username_list: try: - user_data_list.append(self.get_user_response(username_data["value"])) + user_data_list.append(self.get_user_response(username)) except BadRequest: logger.error( "Cannot download tweets for the username", - extra={"username": username_data["value"]}, + extra={"username": username}, ) return user_data_list