Meta: Port several things common to various Python scripts to a new website module
This commit is contained in:
parent
a30903c8cf
commit
9ce6362402
6 changed files with 70 additions and 34 deletions
0
scripts/website/__init__.py
Normal file
0
scripts/website/__init__.py
Normal file
33
scripts/website/dates.py
Normal file
33
scripts/website/dates.py
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/env python3
|
||||
# Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
import datetime
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def next_sunday_noon(from_date: Optional[datetime.date] = None) -> datetime.datetime:
|
||||
'''
|
||||
Return a `datetime` for noon on the upcoming Sunday. Use today if no
|
||||
`from_date` is given.
|
||||
'''
|
||||
|
||||
today = from_date or datetime.date.today()
|
||||
|
||||
current_weekday = today.weekday()
|
||||
if current_weekday == 6:
|
||||
days_to_next_sunday = 6
|
||||
else:
|
||||
days_to_next_sunday = 6 - current_weekday
|
||||
|
||||
delta = datetime.timedelta(days=days_to_next_sunday)
|
||||
|
||||
noon = datetime.time(hour=12)
|
||||
|
||||
timezone = datetime.datetime.now().astimezone().tzinfo
|
||||
next_sunday_noon = datetime.datetime.combine(
|
||||
today + delta,
|
||||
noon,
|
||||
tzinfo=timezone
|
||||
)
|
||||
|
||||
return next_sunday_noon
|
12
scripts/website/metadata.py
Normal file
12
scripts/website/metadata.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
#!/usr/bin/env python3
|
||||
# Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
import re
|
||||
|
||||
|
||||
def slugify(s: str) -> str:
|
||||
'''Process a string into something suitable to be a page slug.'''
|
||||
s = s.strip().lower()
|
||||
s = re.sub(r'\s+', '-', s)
|
||||
s = re.sub(r'[‘’“”"\'()]', '', s)
|
||||
return s
|
19
scripts/website/paths.py
Normal file
19
scripts/website/paths.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env python3
|
||||
# Eryn Wells <eryn@erynwells.me>
|
||||
|
||||
import os.path as osp
|
||||
|
||||
|
||||
def content_path() -> str:
|
||||
'''Return the path to the content directory.'''
|
||||
path = osp.abspath(osp.join(osp.dirname(__file__), '..', '..', 'content'))
|
||||
assert osp.isdir(path)
|
||||
return path
|
||||
|
||||
|
||||
def blog_path() -> str:
|
||||
return osp.join(content_path(), 'blog')
|
||||
|
||||
|
||||
def photos_path() -> str:
|
||||
return osp.join(content_path(), 'photos')
|
Loading…
Add table
Add a link
Reference in a new issue