diff --git a/.gitignore b/.gitignore index fedb2e46..b8da1186 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ dev.db test.db +.idea config.py # Byte-compiled / optimized / DLL files diff --git a/app/database/models.py b/app/database/models.py index 048fa53f..4dec81d0 100644 --- a/app/database/models.py +++ b/app/database/models.py @@ -422,6 +422,15 @@ class Joke(Base): text = Column(String, nullable=False) +class InternationalDays(Base): + __tablename__ = "international_days" + + id = Column(Integer, primary_key=True, index=True) + day = Column(Integer, nullable=False) + month = Column(Integer, nullable=False) + international_day = Column(String, nullable=False) + + # insert language data # Credit to adrihanu https://stackoverflow.com/users/9127249/adrihanu diff --git a/app/internal/international_days.py b/app/internal/international_days.py new file mode 100644 index 00000000..6ded1189 --- /dev/null +++ b/app/internal/international_days.py @@ -0,0 +1,40 @@ +from datetime import datetime +from typing import Optional, Dict, Union + +from sqlalchemy.orm import Session +from sqlalchemy.sql.expression import func + +from app.database.models import InternationalDays + + +def get_international_day( + international_day: Dict[str, Union[str, int]] +) -> InternationalDays: + """Returns an international day object from the dictionary data. + + Args: + international_day: A dictionary international day + related information. + + Returns: + A new international day object. + """ + return InternationalDays( + day=international_day["day"], + month=international_day["month"], + international_day=international_day["international_day"], + ) + + +def get_international_day_per_day( + session: Session, date: datetime +) -> Optional[InternationalDays]: + day_num = date.day + month = date.month + international_day = (session.query(InternationalDays) + .filter(InternationalDays.day == day_num) + .filter(InternationalDays.month == month) + .order_by(func.random()) + .first() + ) + return international_day diff --git a/app/internal/json_data_loader.py b/app/internal/json_data_loader.py index 4e9d83e7..779bfa17 100644 --- a/app/internal/json_data_loader.py +++ b/app/internal/json_data_loader.py @@ -5,8 +5,8 @@ from loguru import logger from sqlalchemy.orm import Session -from app.database.models import Base, Joke, Quote, Zodiac -from app.internal import daily_quotes, jokes, zodiac +from app.database.models import Base, InternationalDays, Joke, Quote, Zodiac +from app.internal import daily_quotes, international_days, jokes, zodiac def load_to_database(session: Session) -> None: @@ -35,6 +35,13 @@ def load_to_database(session: Session) -> None: daily_quotes.get_quote, ) + _insert_into_database( + session, + 'app/resources/international_days.json', + InternationalDays, + international_days.get_international_day, + ) + _insert_into_database( session, 'app/resources/jokes.json', diff --git a/app/resources/international_days.json b/app/resources/international_days.json new file mode 100644 index 00000000..1390e56d --- /dev/null +++ b/app/resources/international_days.json @@ -0,0 +1,1832 @@ +[ + { + "day": 1, + "month": 1, + "international_day": "Ring a bell day and Copyright Law day" + }, + { + "day": 2, + "month": 1, + "international_day": "Science Ficyion Day and World introvert day" + }, + { + "day": 3, + "month": 1, + "international_day": "Drinking straw day and Festival of sleep day" + }, + { + "day": 4, + "month": 1, + "international_day": "Trivia Day and Weigh-in day" + }, + { + "day": 5, + "month": 1, + "international_day": "Whipped Cream day and Bird Day" + }, + { + "day": 6, + "month": 1, + "international_day": "Cuddle up day and Bean Day" + }, + { + "day": 7, + "month": 1, + "international_day": "Tempura day and Bobblehead day" + }, + { + "day": 8, + "month": 1, + "international_day": "Babble bath day and Joy Germ day" + }, + { + "day": 9, + "month": 1, + "international_day": "Apricot Day and Balloon Ascension day" + }, + { + "day": 10, + "month": 1, + "international_day": "Peculiar people day and Bittersweet Chocolate day" + }, + { + "day": 11, + "month": 1, + "international_day": "Step in a puddle and splash your friends day and Heritage treasures day" + }, + { + "day": 12, + "month": 1, + "international_day": "Kiss a ginger day and Marzipan day" + }, + { + "day": 13, + "month": 1, + "international_day": "Sticker day and Rubber duckie day" + }, + { + "day": 14, + "month": 1, + "international_day": "Dress up your pet day and International Kite day" + }, + { + "day": 15, + "month": 1, + "international_day": "Hat day and Bagel day" + }, + { + "day": 16, + "month": 1, + "international_day": "Nothong day and Religious freedom day" + }, + { + "day": 17, + "month": 1, + "international_day": "Ditch new year's resolutions day and Kid inventor's day" + }, + { + "day": 18, + "month": 1, + "international_day": "Thesaurus day and Martin luther king day" + }, + { + "day": 19, + "month": 1, + "international_day": "Popcorn day and Tin can day" + }, + { + "day": 20, + "month": 1, + "international_day": "Disc jockey day and Cheese lovers day" + }, + { + "day": 21, + "month": 1, + "international_day": "Hugging day and Playdate day" + }, + { + "day": 22, + "month": 1, + "international_day": "Answer your cat's Questions day and Hot sauce day" + }, + { + "day": 23, + "month": 1, + "international_day": "Pie day and Visit your local quilt shop day" + }, + { + "day": 24, + "month": 1, + "international_day": "Beer can appreciation day and Peanut Butter day" + }, + { + "day": 25, + "month": 1, + "international_day": "Bubble warp appreciation day and Opposite day" + }, + { + "day": 26, + "month": 1, + "international_day": "Australia day and Peanut brittle day" + }, + { + "day": 27, + "month": 1, + "international_day": "Chocolate cake day and World breast pumping day" + }, + { + "day": 28, + "month": 1, + "international_day": "International lego day and Global community engagement day" + }, + { + "day": 29, + "month": 1, + "international_day": "Fun at work day and Puzzle day" + }, + { + "day": 30, + "month": 1, + "international_day": "Inane answering message day and Seed swap day" + }, + { + "day": 31, + "month": 1, + "international_day": "Backward day and Gorilla suit day" + }, + { + "day": 1, + "month": 2, + "international_day": "Baked alaska day and World read aloud day" + }, + { + "day": 2, + "month": 2, + "international_day": "World play your ukulele day and Tater tot day" + }, + { + "day": 3, + "month": 2, + "international_day": "Carrot cake day and Golden retriver day" + }, + { + "day": 4, + "month": 2, + "international_day": "Thank a letter carrier day and World cancer day" + }, + { + "day": 5, + "month": 2, + "international_day": "World nutella day and Weatherperson's day" + }, + { + "day": 6, + "month": 2, + "international_day": "Take your child to the libray day and Frozen yogurt day" + }, + { + "day": 7, + "month": 2, + "international_day": "Yorkshire pudding day and Wava all your fingers at your neighbors day" + }, + { + "day": 8, + "month": 2, + "international_day": "Clean out your computer day and Molasses bar day" + }, + { + "day": 9, + "month": 2, + "international_day": "Pizza day and Safer internet day" + }, + { + "day": 10, + "month": 2, + "international_day": "Umbrella day and Plimsoll day" + }, + { + "day": 11, + "month": 2, + "international_day": "Fat food day and Peppermint patty day" + }, + { + "day": 12, + "month": 2, + "international_day": "Darwin day and No one eats alone day" + }, + { + "day": 13, + "month": 2, + "international_day": "Radio day and Tortellini day" + }, + { + "day": 14, + "month": 2, + "international_day": "Marriage day and Ferris Wheel day" + }, + { + "day": 15, + "month": 2, + "international_day": "Hippo day and Annoy squidward day" + }, + { + "day": 16, + "month": 2, + "international_day": "Innovation day and Tim Tam day" + }, + { + "day": 17, + "month": 2, + "international_day": "Random acts of kindness day and World human spirit day" + }, + { + "day": 18, + "month": 2, + "international_day": "Drink wine day and Pluto day" + }, + { + "day": 19, + "month": 2, + "international_day": "International Tug-of-War day and Chocolate mint day" + }, + { + "day": 20, + "month": 2, + "international_day": "Love your pet day and Pangolin day" + }, + { + "day": 21, + "month": 2, + "international_day": "Sticky bun day and World whale day" + }, + { + "day": 22, + "month": 2, + "international_day": "World thinking day and Single tasking day" + }, + { + "day": 23, + "month": 2, + "international_day": "Curling is cool day and Play tennis day" + }, + { + "day": 24, + "month": 2, + "international_day": "Pink day and Tortilla chip day" + }, + { + "day": 25, + "month": 2, + "international_day": "Toast day and Chilli day" + }, + { + "day": 26, + "month": 2, + "international_day": "Levi Strauss day and Personal chef day" + }, + { + "day": 27, + "month": 2, + "international_day": "Pokemon day and World NGO day" + }, + { + "day": 28, + "month": 2, + "international_day": "Tooth fairy day and Floral Design day" + }, + { + "day": 29, + "month": 2, + "international_day": "Extra day in leap year" + }, + { + "day": 1, + "month": 3, + "international_day": "Barista day and Fun facts about names day" + }, + { + "day": 2, + "month": 3, + "international_day": "Read across america day and Old stuff day" + }, + { + "day": 3, + "month": 3, + "international_day": "World wildlife day and What if cats and dogs had opposable Thumbs day" + }, + { + "day": 4, + "month": 3, + "international_day": "Grammar day and Marching band day" + }, + { + "day": 5, + "month": 3, + "international_day": "Day of unplugging and World book day" + }, + { + "day": 6, + "month": 3, + "international_day": "White chocolate cheesecake day and dentist's day" + }, + { + "day": 7, + "month": 3, + "international_day": "Be heard day and Plant power day" + }, + { + "day": 8, + "month": 3, + "international_day": "International women's day and Peanut cluster day" + }, + { + "day": 9, + "month": 3, + "international_day": "Meatball day and Barbie day" + }, + { + "day": 10, + "month": 3, + "international_day": "Pack your lunch day and International wig day" + }, + { + "day": 11, + "month": 3, + "international_day": "World plumbing day and Oatmeal nut waffles day" + }, + { + "day": 12, + "month": 3, + "international_day": "Girls scout day and International fanny pack day" + }, + { + "day": 13, + "month": 3, + "international_day": "Jewel day and Ken day" + }, + { + "day": 14, + "month": 3, + "international_day": "Learn about butterflies day and Pi day" + }, + { + "day": 15, + "month": 3, + "international_day": "World speech day and World consumer rights day" + }, + { + "day": 16, + "month": 3, + "international_day": "Lips appreciation day and St.urho's day" + }, + { + "day": 17, + "month": 3, + "international_day": "Saint Patrick's day" + }, + { + "day": 18, + "month": 3, + "international_day": "Awkward moments day and Companies that care day" + }, + { + "day": 19, + "month": 3, + "international_day": "World sleep day and Poultry day" + }, + { + "day": 20, + "month": 3, + "international_day": "International day of happines and Quilting day" + }, + { + "day": 21, + "month": 3, + "international_day": "World poetry day and Vermouth day" + }, + { + "day": 22, + "month": 3, + "international_day": "World water day and Gryffindor pride day" + }, + { + "day": 23, + "month": 3, + "international_day": "Melba toast day and Puppy day" + }, + { + "day": 24, + "month": 3, + "international_day": "Chocolate covered raisins day and Flatmates day" + }, + { + "day": 25, + "month": 3, + "international_day": "Waffle day and Tolkien Reading day" + }, + { + "day": 26, + "month": 3, + "international_day": "Good hair day and Purple day" + }, + { + "day": 27, + "month": 3, + "international_day": "Earth hour and International whiskey day" + }, + { + "day": 28, + "month": 3, + "international_day": "Neighbor day and Black forest cake day" + }, + { + "day": 29, + "month": 3, + "international_day": "Lemon chiffon cake day and Niagara falls runs dry day" + }, + { + "day": 30, + "month": 3, + "international_day": "Doctor's day and Take a walk in the park day" + }, + { + "day": 31, + "month": 3, + "international_day": "Crayola Crayon day and World backup day" + }, + { + "day": 1, + "month": 4, + "international_day": "Fun day and Tell a lie day" + }, + { + "day": 2, + "month": 4, + "international_day": "Ferret day and Walk to work day" + }, + { + "day": 3, + "month": 4, + "international_day": "DIY day and Chocolate mousse day" + }, + { + "day": 4, + "month": 4, + "international_day": "Vitamin C day and Geologist's day" + }, + { + "day": 5, + "month": 4, + "international_day": "Star trek first contact day and Read a road map day" + }, + { + "day": 6, + "month": 4, + "international_day": "World table tennis day and New beer's eve" + }, + { + "day": 7, + "month": 4, + "international_day": "Beer day and No housework day" + }, + { + "day": 8, + "month": 4, + "international_day": "Zoo lovers day and Pygmy hippo day" + }, + { + "day": 9, + "month": 4, + "international_day": "Unicorn day and ASMR day" + }, + { + "day": 10, + "month": 4, + "international_day": "Golfer's day and International safety pin day" + }, + { + "day": 11, + "month": 4, + "international_day": "Pet day and Cheese fondue day" + }, + { + "day": 12, + "month": 4, + "international_day": "Deskfast day and Hamster day" + }, + { + "day": 13, + "month": 4, + "international_day": "Scrabble day and Internatinal FND Awareness day" + }, + { + "day": 14, + "month": 4, + "international_day": "Dolphin day and Day of pink" + }, + { + "day": 15, + "month": 4, + "international_day": "Husband Appriciations day and High five day" + }, + { + "day": 16, + "month": 4, + "international_day": "Wear your pajamas to work day and Save the elephant day" + }, + { + "day": 17, + "month": 4, + "international_day": "Haiku poetry day and Blah blah blah day" + }, + { + "day": 18, + "month": 4, + "international_day": "Pinata day and Columnists day" + }, + { + "day": 19, + "month": 4, + "international_day": "Bicycle day and Hanging out day" + }, + { + "day": 20, + "month": 4, + "international_day": "Volunteer recognition day and Chinese language day" + }, + { + "day": 21, + "month": 4, + "international_day": "World creativity and innovation day and World stationery day" + }, + { + "day": 22, + "month": 4, + "international_day": "Teach your children to save day and Earth day" + }, + { + "day": 23, + "month": 4, + "international_day": "Talk like Shakespeare day and Asparagus day" + }, + { + "day": 24, + "month": 4, + "international_day": "Scream day and Pig in a blanket day" + }, + { + "day": 25, + "month": 4, + "international_day": "Pinhole photography day and Hug a plumber day" + }, + { + "day": 26, + "month": 4, + "international_day": "Hug an australian day and Burlesque day" + }, + { + "day": 27, + "month": 4, + "international_day": "Morse code day and Tell a story day" + }, + { + "day": 28, + "month": 4, + "international_day": "Superhero day and Stop food waste day" + }, + { + "day": 29, + "month": 4, + "international_day": "International dance day and We jump the world day" + }, + { + "day": 30, + "month": 4, + "international_day": "Hairball awareness day and honesty day" + }, + { + "day": 1, + "month": 5, + "international_day": "Tuba day and Therapeutic massage awareness day" + }, + { + "day": 2, + "month": 5, + "international_day": "World laughter day and Baby day" + }, + { + "day": 3, + "month": 5, + "international_day": "Lemonade day and Garden meditation day" + }, + { + "day": 4, + "month": 5, + "international_day": "Star wars day and 45 day" + }, + { + "day": 5, + "month": 5, + "international_day": "Nail day and Internatinal midwive's day" + }, + { + "day": 6, + "month": 5, + "international_day": "No diet day and Password day" + }, + { + "day": 7, + "month": 5, + "international_day": "Roast leg of lamb day and Public gardens day" + }, + { + "day": 8, + "month": 5, + "international_day": "Windmill day and No socks day" + }, + { + "day": 9, + "month": 5, + "international_day": "Moscato day and Lost sock memorial day" + }, + { + "day": 10, + "month": 5, + "international_day": "Mother ocean day and Stay up all night night" + }, + { + "day": 11, + "month": 5, + "international_day": "Eat what you want day and World ego awareness day" + }, + { + "day": 12, + "month": 5, + "international_day": "Receptionist's day and Limerick day" + }, + { + "day": 13, + "month": 5, + "international_day": "Numeracy day and Top gun day" + }, + { + "day": 14, + "month": 5, + "international_day": "Shades day and Chicken dance day" + }, + { + "day": 15, + "month": 5, + "international_day": "World whisky day and Chocolate chip day" + }, + { + "day": 16, + "month": 5, + "international_day": "Drawing day and Sea monkey day" + }, + { + "day": 17, + "month": 5, + "international_day": "Work from home day and International Day Against Homophobia and Transphobia and Biphobia" + }, + { + "day": 18, + "month": 5, + "international_day": "No dirty dishes day and Museum day" + }, + { + "day": 19, + "month": 5, + "international_day": "May ray day" + }, + { + "day": 20, + "month": 5, + "international_day": "Pick strawberries day and World bee day" + }, + { + "day": 21, + "month": 5, + "international_day": "World meditation day and I need a patch for that day" + }, + { + "day": 22, + "month": 5, + "international_day": "Sherlock Holmes day and Goth day" + }, + { + "day": 23, + "month": 5, + "international_day": "Turtle day and Lucky penny day" + }, + { + "day": 24, + "month": 5, + "international_day": "Tiara day and Escargot day" + }, + { + "day": 25, + "month": 5, + "international_day": "Tap dance day and Towel day" + }, + { + "day": 26, + "month": 5, + "international_day": "Senior health and fitness day and Paper airplane day" + }, + { + "day": 27, + "month": 5, + "international_day": "Sun screen day and World product day" + }, + { + "day": 28, + "month": 5, + "international_day": "Amnesty international day and Hamburger day" + }, + { + "day": 29, + "month": 5, + "international_day": "Biscuit day and Paper clip day" + }, + { + "day": 30, + "month": 5, + "international_day": "Mint julep day and Water a flower day" + }, + { + "day": 31, + "month": 5, + "international_day": "No tabbaco day and Save your hearing day" + }, + { + "day": 1, + "month": 6, + "international_day": "Say something nice day" + }, + { + "day": 2, + "month": 6, + "international_day": "Rocky road day and Running day" + }, + { + "day": 3, + "month": 6, + "international_day": "World bicycle day and Chocolate maccaroon day" + }, + { + "day": 4, + "month": 6, + "international_day": "Hug your cat day and Doughnut day" + }, + { + "day": 5, + "month": 6, + "international_day": "Sausage roll day and Coworking day" + }, + { + "day": 6, + "month": 6, + "international_day": "Gardening exercise day and Cancer survivors day" + }, + { + "day": 7, + "month": 6, + "international_day": "Chocolate ice cream day and VCR day" + }, + { + "day": 8, + "month": 6, + "international_day": "Best friends day and World oceans day" + }, + { + "day": 9, + "month": 6, + "international_day": "Rosé day and Donald duck day" + }, + { + "day": 10, + "month": 6, + "international_day": "Iced tea day and Jerky day" + }, + { + "day": 11, + "month": 6, + "international_day": "Yarn Bombing day and Corn of the cob day" + }, + { + "day": 12, + "month": 6, + "international_day": "Superman day and World gin day" + }, + { + "day": 13, + "month": 6, + "international_day": "Sewing machine day and World softball day" + }, + { + "day": 14, + "month": 6, + "international_day": "World blood donor day and Flag day" + }, + { + "day": 15, + "month": 6, + "international_day": "Nature photography day and Beer day Britain" + }, + { + "day": 16, + "month": 6, + "international_day": "World tapas day and Fresh Veggies day" + }, + { + "day": 17, + "month": 6, + "international_day": "Eat your vegetables day and Garbage man day" + }, + { + "day": 18, + "month": 6, + "international_day": "International picnic day and Go fishing day" + }, + { + "day": 19, + "month": 6, + "international_day": "Martini day and Juggling day" + }, + { + "day": 20, + "month": 6, + "international_day": "Ice cream soda day and World refugee day" + }, + { + "day": 21, + "month": 6, + "international_day": "World music day and International yoga day" + }, + { + "day": 22, + "month": 6, + "international_day": "World rainforest day and Onion rings day" + }, + { + "day": 23, + "month": 6, + "international_day": "Let it go day and International widows day" + }, + { + "day": 24, + "month": 6, + "international_day": "Bomb pop day and Swim in lap day" + }, + { + "day": 25, + "month": 6, + "international_day": "Global beatles day and Take your dog to work day" + }, + { + "day": 26, + "month": 6, + "international_day": "Blueberry cheesecake day and Beautician's day and World refrigeration day" + }, + { + "day": 27, + "month": 6, + "international_day": "Pineapple day and Sunglasses day" + }, + { + "day": 28, + "month": 6, + "international_day": "International body piercing day and Logistics day" + }, + { + "day": 29, + "month": 6, + "international_day": "Waffle iron day and Camera day" + }, + { + "day": 30, + "month": 6, + "international_day": "Seocial media day and Metheor watch day" + }, + { + "day": 1, + "month": 7, + "international_day": "Joke day and Gingersnap day" + }, + { + "day": 2, + "month": 7, + "international_day": "Anisette day and World UFO day" + }, + { + "day": 3, + "month": 7, + "international_day": "Air conditioning appreciation day and Eat beans day" + }, + { + "day": 4, + "month": 7, + "international_day": "Independence from meat day and Jackfruit day" + }, + { + "day": 5, + "month": 7, + "international_day": "Apple turnover day and Bikini day" + }, + { + "day": 6, + "month": 7, + "international_day": "International kissing day and Fried chicken day" + }, + { + "day": 7, + "month": 7, + "international_day": "Chocolate day and Macaroni day" + }, + { + "day": 8, + "month": 7, + "international_day": "Math 2.0 day and Chocolate with almonds day" + }, + { + "day": 9, + "month": 7, + "international_day": "Kebab day and Sugar cookie day" + }, + { + "day": 10, + "month": 7, + "international_day": "Pina colada day and Teddy bear picnic day" + }, + { + "day": 11, + "month": 7, + "international_day": "Blueberry muffin day and World population day" + }, + { + "day": 12, + "month": 7, + "international_day": "Etch a sketch day and New conversations day" + }, + { + "day": 13, + "month": 7, + "international_day": "French fries day and Cow appreciation day" + }, + { + "day": 14, + "month": 7, + "international_day": "Shark awareness day and Mac & cheese day" + }, + { + "day": 15, + "month": 7, + "international_day": "Gummi worm day and Hot dog day" + }, + { + "day": 16, + "month": 7, + "international_day": "Guinea pig appreciation day and Corn fritters day" + }, + { + "day": 17, + "month": 7, + "international_day": "World emoji day and Peach ice cream day" + }, + { + "day": 18, + "month": 7, + "international_day": "Caviar day and Insurance nerd day" + }, + { + "day": 19, + "month": 7, + "international_day": "Daiquiri day and Get out of the doghouse day" + }, + { + "day": 20, + "month": 7, + "international_day": "Moon day and International chess day" + }, + { + "day": 21, + "month": 7, + "international_day": "Junk food day and Lamington day" + }, + { + "day": 22, + "month": 7, + "international_day": "Hammock day and Crème brulee day" + }, + { + "day": 23, + "month": 7, + "international_day": "Peanut butter and chocolate day and Sprinkle day" + }, + { + "day": 24, + "month": 7, + "international_day": "Drive-thru day and Tequila day" + }, + { + "day": 25, + "month": 7, + "international_day": "Wine and cheese day and Parent's day" + }, + { + "day": 26, + "month": 7, + "international_day": "Aunt and uncle day and Coffee milk shake day" + }, + { + "day": 27, + "month": 7, + "international_day": "Walk on stilts day and Norfolk day" + }, + { + "day": 28, + "month": 7, + "international_day": "Milk chocolate day and World hepatitis day" + }, + { + "day": 29, + "month": 7, + "international_day": "Chili dog day and International tiger day" + }, + { + "day": 30, + "month": 7, + "international_day": "Cheesecake day and Friendship day" + }, + { + "day": 31, + "month": 7, + "international_day": "Raspberry cake day and Uncommon Instrument awareness day" + }, + { + "day": 1, + "month": 8, + "international_day": "Sisters day and Planner day" + }, + { + "day": 2, + "month": 8, + "international_day": "Ice cream sandwich day and Coloring book day" + }, + { + "day": 3, + "month": 8, + "international_day": "Watermelon day and White wine day" + }, + { + "day": 4, + "month": 8, + "international_day": "Coast guard day and International clouded leopard day" + }, + { + "day": 5, + "month": 8, + "international_day": "Work like a dog day and Blogger day" + }, + { + "day": 6, + "month": 8, + "international_day": "Fresh breath day and International beer day" + }, + { + "day": 7, + "month": 8, + "international_day": "Particularly preposterous packing day and Aged care employee day" + }, + { + "day": 8, + "month": 8, + "international_day": "International cat day and Happiness happens day" + }, + { + "day": 9, + "month": 8, + "international_day": "Melon day and Rice pudding day" + }, + { + "day": 10, + "month": 8, + "international_day": "Lazy day and World lion day" + }, + { + "day": 11, + "month": 8, + "international_day": "World calligraphy day and Son and daughter day" + }, + { + "day": 12, + "month": 8, + "international_day": "World Elephant day and Vinyl record day" + }, + { + "day": 13, + "month": 8, + "international_day": "Blame someone else day and International lefthanders day" + }, + { + "day": 14, + "month": 8, + "international_day": "Creamsicle day and Tattoo removal day" + }, + { + "day": 15, + "month": 8, + "international_day": "Check the chip day and Relaxation day" + }, + { + "day": 16, + "month": 8, + "international_day": "Rollercoaster day and Rum day" + }, + { + "day": 17, + "month": 8, + "international_day": "Thrift shop day and Vanilla custard day" + }, + { + "day": 18, + "month": 8, + "international_day": "Bad poetry day and Never give up day" + }, + { + "day": 19, + "month": 8, + "international_day": "International orangutan day and Photography day" + }, + { + "day": 20, + "month": 8, + "international_day": "Men's grooming day and International day of medical transporters" + }, + { + "day": 21, + "month": 8, + "international_day": "Senior citizen day and World honey bee day" + }, + { + "day": 22, + "month": 8, + "international_day": "Be an angel day and Eat a peach day" + }, + { + "day": 23, + "month": 8, + "international_day": "Cuban sandwich day and Ride the wind day" + }, + { + "day": 24, + "month": 8, + "international_day": "International strange music day and Knife day" + }, + { + "day": 25, + "month": 8, + "international_day": "Kiss and make up day and Banana split day" + }, + { + "day": 26, + "month": 8, + "international_day": "Burger day and Dog day" + }, + { + "day": 27, + "month": 8, + "international_day": "International bat night and Banana lovers day" + }, + { + "day": 28, + "month": 8, + "international_day": "Bow tie day and Franchise appreciation day" + }, + { + "day": 29, + "month": 8, + "international_day": "More herbs less salt day and Potteries bottle oven day" + }, + { + "day": 30, + "month": 8, + "international_day": "Slinky day and Amagwinya day" + }, + { + "day": 31, + "month": 8, + "international_day": "Trail mix day and Overdose awareness day" + }, + { + "day": 1, + "month": 9, + "international_day": "Building and code staff appreciation day and Tofu day" + }, + { + "day": 2, + "month": 9, + "international_day": "Calendar adjustment day and V-J day" + }, + { + "day": 3, + "month": 9, + "international_day": "Skyscraper day and Bring your manners to work day" + }, + { + "day": 4, + "month": 9, + "international_day": "Wildlife day and Macadamia nut day" + }, + { + "day": 5, + "month": 9, + "international_day": "Be late for something day and World samosa day" + }, + { + "day": 6, + "month": 9, + "international_day": "Read a book day and Mouthguard day" + }, + { + "day": 7, + "month": 9, + "international_day": "World duchenne awareness day and Beer lover's day" + }, + { + "day": 8, + "month": 9, + "international_day": "Star terk day and Pardon day" + }, + { + "day": 9, + "month": 9, + "international_day": "Teddy bear day and Wienerschnitzel day" + }, + { + "day": 10, + "month": 9, + "international_day": "World suicide prevention day and TV dinner day" + }, + { + "day": 11, + "month": 9, + "international_day": "Make your bed day and Drive your studebaker day" + }, + { + "day": 12, + "month": 9, + "international_day": "Video games day and Hug your hound day" + }, + { + "day": 13, + "month": 9, + "international_day": "Fortune cookie day and Boss/Employee exchange day" + }, + { + "day": 14, + "month": 9, + "international_day": "Eat a hoagie day and Cream filled doughnut day" + }, + { + "day": 15, + "month": 9, + "international_day": "World afro day and Cheese toast day" + }, + { + "day": 16, + "month": 9, + "international_day": "Guacamole day and Play doh day" + }, + { + "day": 17, + "month": 9, + "international_day": "Tradesmen day and International country music day" + }, + { + "day": 18, + "month": 9, + "international_day": "International red panda day and Cheeseburger day" + }, + { + "day": 19, + "month": 9, + "international_day": "Talk like a priate day and Butterscotch pudding day" + }, + { + "day": 20, + "month": 9, + "international_day": "Punch day and Pepperoni pizza day" + }, + { + "day": 21, + "month": 9, + "international_day": "World alzheimer's day and Escapology day" + }, + { + "day": 22, + "month": 9, + "international_day": "Business women's day and World car free day" + }, + { + "day": 23, + "month": 9, + "international_day": "Restless legs awareness day and Za'atar day and Fitness day" + }, + { + "day": 24, + "month": 9, + "international_day": "Hug a vegetarian day and Lash stylist's day" + }, + { + "day": 25, + "month": 9, + "international_day": "World dream day" + }, + { + "day": 26, + "month": 9, + "international_day": "Lumberjack day and Rivers day" + }, + { + "day": 27, + "month": 9, + "international_day": "Tourism day and Corned beef hash day" + }, + { + "day": 28, + "month": 9, + "international_day": "Drink beer day and International poke day" + }, + { + "day": 29, + "month": 9, + "international_day": "World heart day and Biscotti day" + }, + { + "day": 30, + "month": 9, + "international_day": "Ask a stupid question day and International podcast day" + }, + { + "day": 1, + "month": 10, + "international_day": "World smile day and International coffee day" + }, + { + "day": 2, + "month": 10, + "international_day": "Name your car day and World farm animals day" + }, + { + "day": 3, + "month": 10, + "international_day": "Techies day and Boyfriend's day" + }, + { + "day": 4, + "month": 10, + "international_day": "Vodka day and World habitat day" + }, + { + "day": 5, + "month": 10, + "international_day": "World teachers day and Chic spy day" + }, + { + "day": 6, + "month": 10, + "international_day": "Canadian beer day and Mad hatter day" + }, + { + "day": 7, + "month": 10, + "international_day": "Bathtub day and Frappe day" + }, + { + "day": 8, + "month": 10, + "international_day": "World Octopus day and Egg day" + }, + { + "day": 9, + "month": 10, + "international_day": "Scrubs day and Beer and pizza day" + }, + { + "day": 10, + "month": 10, + "international_day": "Hug a drummer day and SHIFT10 day" + }, + { + "day": 11, + "month": 10, + "international_day": "Coming out day and Canadian thanksgiving" + }, + { + "day": 12, + "month": 10, + "international_day": "Old farmers day and Own business day" + }, + { + "day": 13, + "month": 10, + "international_day": "No bra day and Train your brain day" + }, + { + "day": 14, + "month": 10, + "international_day": "Dessert day and International top spinning day" + }, + { + "day": 15, + "month": 10, + "international_day": "World student's day and Chicken cacciatore day" + }, + { + "day": 16, + "month": 10, + "international_day": "World food day and Dictionary day" + }, + { + "day": 17, + "month": 10, + "international_day": "Toy camera day and Spreadsheet day" + }, + { + "day": 18, + "month": 10, + "international_day": "Chocolate cupcake day and Developmental language disorder awareness day" + }, + { + "day": 19, + "month": 10, + "international_day": "Evaluate your life day and International gin and tonic day" + }, + { + "day": 20, + "month": 10, + "international_day": "International chef day and International sloth day" + }, + { + "day": 21, + "month": 10, + "international_day": "Apple day and Get smart about cerdit day" + }, + { + "day": 22, + "month": 10, + "international_day": "Caps lock day and International stuttering awareness day" + }, + { + "day": 23, + "month": 10, + "international_day": "Make a difference day and Ipod day" + }, + { + "day": 24, + "month": 10, + "international_day": "Unites nation day and Mother in law day" + }, + { + "day": 25, + "month": 10, + "international_day": "International artist day and Accounting day" + }, + { + "day": 26, + "month": 10, + "international_day": "Howl at the moon day and Pumpkin day" + }, + { + "day": 27, + "month": 10, + "international_day": "Black cat day and Cranky co-workers day" + }, + { + "day": 28, + "month": 10, + "international_day": "Plush animal lover's day" + }, + { + "day": 29, + "month": 10, + "international_day": "Animation day and Internet day and Cat day" + }, + { + "day": 30, + "month": 10, + "international_day": "Checklist day and Hug a sheep day" + }, + { + "day": 31, + "month": 10, + "international_day": "Magic day and Caramel apple day" + }, + { + "day": 1, + "month": 11, + "international_day": "World vegan day and Go cook for your pets day" + }, + { + "day": 2, + "month": 11, + "international_day": "Deviled egg day and Dynamic harmlessness day" + }, + { + "day": 3, + "month": 11, + "international_day": "Stress awareness day and Sandwich day" + }, + { + "day": 4, + "month": 11, + "international_day": "Use your common sense day and Men make dinner day" + }, + { + "day": 5, + "month": 11, + "international_day": "Love your red hair day and Love your lawyer day" + }, + { + "day": 6, + "month": 11, + "international_day": "Nachos day and Numbat day" + }, + { + "day": 7, + "month": 11, + "international_day": "Bittersweet chocolate with almonds day and Zero tasking day" + }, + { + "day": 8, + "month": 11, + "international_day": "World orphans day and World quality day" + }, + { + "day": 9, + "month": 11, + "international_day": "World freedom day and Chaos never dies day" + }, + { + "day": 10, + "month": 11, + "international_day": "Sesame street day and Top up day" + }, + { + "day": 11, + "month": 11, + "international_day": "Origami day and Sundae day" + }, + { + "day": 12, + "month": 11, + "international_day": "Happy hour day and Chicken soup for the soul day" + }, + { + "day": 13, + "month": 11, + "international_day": "World kindness day and Indian pudding day" + }, + { + "day": 14, + "month": 11, + "international_day": "Operating room nurse day and Tongue twister day" + }, + { + "day": 15, + "month": 11, + "international_day": "Clean out your refigerator day and Bundt cake day" + }, + { + "day": 16, + "month": 11, + "international_day": "Have a party with your bear day and Clarinet day" + }, + { + "day": 17, + "month": 11, + "international_day": "Homemade bread day and Unfriend day" + }, + { + "day": 18, + "month": 11, + "international_day": "Housing day and Social enterprise day" + }, + { + "day": 19, + "month": 11, + "international_day": "International men's day and World toilet day" + }, + { + "day": 20, + "month": 11, + "international_day": "Name your PC day and Universal children's day" + }, + { + "day": 21, + "month": 11, + "international_day": "World television day and Red mitten day" + }, + { + "day": 22, + "month": 11, + "international_day": "Go for a ride day and Cranberry relish day" + }, + { + "day": 23, + "month": 11, + "international_day": "Espresso day and Fibonacci day" + }, + { + "day": 24, + "month": 11, + "international_day": "Sardines day and Jukebox day" + }, + { + "day": 25, + "month": 11, + "international_day": "Shopping reminder day and Parfait day" + }, + { + "day": 26, + "month": 11, + "international_day": "Buy nothing day and Flossing day" + }, + { + "day": 27, + "month": 11, + "international_day": "Bavarian cream pie day and Pins and Needles day" + }, + { + "day": 28, + "month": 11, + "international_day": "French toast day and Aura awareness day" + }, + { + "day": 29, + "month": 11, + "international_day": "Chocolates day and Lemon cream pie day" + }, + { + "day": 30, + "month": 11, + "international_day": "Computer security day and Mousse day" + }, + { + "day": 1, + "month": 12, + "international_day": "Eat a red apple day and Day without art day" + }, + { + "day": 2, + "month": 12, + "international_day": "Fritters day" + }, + { + "day": 3, + "month": 12, + "international_day": "Bartender appreciation day and Make a gift day" + }, + { + "day": 4, + "month": 12, + "international_day": "Cookie day and International cheetah day" + }, + { + "day": 5, + "month": 12, + "international_day": "International ninja day and Repeal day" + }, + { + "day": 6, + "month": 12, + "international_day": "Miner's day and Walt disney day" + }, + { + "day": 7, + "month": 12, + "international_day": "Cotton candy day and Pearl harbor remembrance day" + }, + { + "day": 8, + "month": 12, + "international_day": "Brownie day and Lard day" + }, + { + "day": 9, + "month": 12, + "international_day": "Pastry day and Techno day" + }, + { + "day": 10, + "month": 12, + "international_day": "Human rights day and Lager day" + }, + { + "day": 11, + "month": 12, + "international_day": "Have a bagel day and Noodle ring day" + }, + { + "day": 12, + "month": 12, + "international_day": "Poinsettia day and Gingerbread house day" + }, + { + "day": 13, + "month": 12, + "international_day": "Violin day and Day of the horse" + }, + { + "day": 14, + "month": 12, + "international_day": "Monkey day and Roast chestnuts day" + }, + { + "day": 15, + "month": 12, + "international_day": "Cat herders day and Lemon cupcake day" + }, + { + "day": 16, + "month": 12, + "international_day": "Re-gifting day and Chocolate covered anything day" + }, + { + "day": 17, + "month": 12, + "international_day": "Ugly christmas sweater day and Maple syrup day" + }, + { + "day": 18, + "month": 12, + "international_day": "Bake cookies day and Roast suckling pig day" + }, + { + "day": 19, + "month": 12, + "international_day": "Look for an evergreen day and Oatmuffin day" + }, + { + "day": 20, + "month": 12, + "international_day": "Go caroling day and Games day" + }, + { + "day": 21, + "month": 12, + "international_day": "Humbug day and Flashlight day" + }, + { + "day": 22, + "month": 12, + "international_day": "Date nut bread day and Forefather's day" + }, + { + "day": 23, + "month": 12, + "international_day": "Roots day and Festivus day" + }, + { + "day": 24, + "month": 12, + "international_day": "Eggnog day" + }, + { + "day": 25, + "month": 12, + "international_day": "Pumpkin pie day" + }, + { + "day": 26, + "month": 12, + "international_day": "Thank you note day and Candy cane day" + }, + { + "day": 27, + "month": 12, + "international_day": "Make cut-out snowflakes day and Fruitcake day" + }, + { + "day": 28, + "month": 12, + "international_day": "Card playing day" + }, + { + "day": 29, + "month": 12, + "international_day": "Tick Tock day and Pepper pot day" + }, + { + "day": 30, + "month": 12, + "international_day": "Bacon day and Bicarbonate of soda day" + }, + { + "day": 31, + "month": 12, + "international_day": "Make up your mind day and Champagne day" + } +] \ No newline at end of file diff --git a/app/routers/audio.py b/app/routers/audio.py index 827f67ca..afd53b9c 100644 --- a/app/routers/audio.py +++ b/app/routers/audio.py @@ -2,7 +2,13 @@ from pathlib import Path from typing import List, Optional +from fastapi import APIRouter, Depends, Form, Request +from sqlalchemy.orm.session import Session +from starlette.responses import RedirectResponse +from starlette.status import HTTP_302_FOUND + from app.database.models import User +from app.dependencies import SOUNDS_PATH, get_db, templates from app.internal.audio import ( get_audio_settings, handle_vol, @@ -15,13 +21,7 @@ DEFAULT_SFX, DEFAULT_SFX_VOL, ) -from app.dependencies import SOUNDS_PATH, get_db, templates -from app.internal.security.dependancies import current_user -from fastapi import APIRouter, Depends, Form, Request -from sqlalchemy.orm.session import Session -from starlette.responses import RedirectResponse -from starlette.status import HTTP_302_FOUND - +from app.internal.security.dependencies import current_user router = APIRouter( prefix="/audio", diff --git a/app/routers/dayview.py b/app/routers/dayview.py index 6b4f887e..f9b1cefc 100644 --- a/app/routers/dayview.py +++ b/app/routers/dayview.py @@ -6,7 +6,7 @@ from app.database.models import Event, User from app.dependencies import get_db, templates -from app.internal import zodiac +from app.internal import international_days, zodiac from app.routers.user import get_all_user_events router = APIRouter() @@ -187,6 +187,7 @@ async def dayview( session=session, user_id=user.id, ) + inter_day = international_days.get_international_day_per_day(session, day) month = day.strftime("%B").upper() return templates.TemplateResponse( "calendar_day_view.html", @@ -196,6 +197,7 @@ async def dayview( "all_day_events": all_day_events, "month": month, "day": day.day, + "international_day": inter_day, "zodiac": zodiac_obj, "view": view, }, diff --git a/app/templates/calendar_day_view.html b/app/templates/calendar_day_view.html index ba681c9f..bb320981 100644 --- a/app/templates/calendar_day_view.html +++ b/app/templates/calendar_day_view.html @@ -1,77 +1,95 @@ {% extends "partials/calendar/calendar_base.html" %} {% block body %}
- -
- {% if view == 'day' %} - - {{month}} - {{day}} - {% if zodiac %} -
- zodiac sign + +
+ {% if view == 'day' %} + + {{month}} + {{day}} + {% if zodiac %} +
+ zodiac sign +
+ {% endif %} + {% else %} + {{day}} / {{month}} + {% endif %} +
+ {% if international_day %} +
+ The International days are: "{{ international_day.international_day }}"
{% endif %} - {% else %} - {{day}} / {{month}} - {% endif %} -
-
- {% for event in all_day_events %} -

{{ event.title }}

- {% endfor %} -
-
-
- {% for hour in range(25)%} -
-
- {% if view == 'day'%} - {% set hour = hour|string() %} - {{hour.zfill(2)}}:00 - {% endif %} -
-
-
- {% endfor %} +
+ {% for event in all_day_events %} +

{{ event.title }}

+ {% endfor %}
-
- {% for event, attr in events %} -
-
-

{{ event.title }}

- {% if attr.total_time_visible %} -

{{attr.total_time}}

- {% endif %} +
+
+ {% for hour in range(25)%} +
+
+ {% if view == 'day'%} + {% set hour = hour|string() %} + {{hour.zfill(2)}}:00 + {% endif %} +
+
+
+ {% endfor %}
-
- - - +
+ {% for event, attr in events %} +
+
+

{{ + event.title }}

+ {% if attr.total_time_visible %} +

+ {{attr.total_time}}

+ {% endif %} +
+
+ + + +
+
+ {% endfor %}
-
- {% endfor %}
-
- {% if view == 'day'%} - - {% endif %} + {% if view == 'day'%} + + {% endif %}
{% if view == 'day'%}
{% endif %} - + {% endblock body %} \ No newline at end of file diff --git a/tests/test_international_days.py b/tests/test_international_days.py new file mode 100644 index 00000000..c1b3f406 --- /dev/null +++ b/tests/test_international_days.py @@ -0,0 +1,63 @@ +from datetime import date, timedelta + +import pytest + +from app.database.models import InternationalDays +from app.internal import international_days +from app.internal.international_days import get_international_day_per_day +from app.internal.json_data_loader import _insert_into_database +from app.internal.utils import create_model, delete_instance + +DATE = date(2021, 6, 1) +DAY = "Hamburger day" + + +@pytest.fixture +def international_day(session): + inter_day = create_model( + session, + InternationalDays, + id=1, + day=1, + month=6, + international_day="Hamburger day", + ) + yield inter_day + delete_instance(session, inter_day) + + +@pytest.fixture +def all_international_days(session): + _insert_into_database( + session, + 'app/resources/international_days.json', + InternationalDays, + international_days.get_international_day, + ) + all_international_days = session.query(InternationalDays) + yield all_international_days + for day in all_international_days: + delete_instance(session, day) + + +def date_range(): + start = date(2024, 1, 1) + end = date(2024, 12, 31) + dates = (end + timedelta(days=1) - start).days + return [start + timedelta(days=i) for i in range(dates)] + + +def test_input_day_equal_output_day(session, international_day): + inter_day = international_days.get_international_day_per_day( + session, DATE).international_day + assert inter_day == DAY + + +def test_international_day_per_day_no_international_days(session): + result = international_days.get_international_day_per_day(session, DATE) + assert result is None + + +def test_all_international_days_per_day(session, all_international_days): + for day in date_range(): + assert get_international_day_per_day(session, day)