Creating shortcut function in Fabric to create a Pelican draft
I migrated from Wordpress to Pelican few month ago and so far I was satisfied with it, mainly because my demands to the blogging platform are far lower than one might imagine. But as atrue engineer, I always strive to eliminate any duplication in code or in actions.
For this reason I’ve created one more Fabric function that creates a draft for me, properly setting the date and slug for me:
drafts_path = 'content/drafts/'
def draft(title):
from datetime import date
from time import strftime, gmtime
from unidecode import unidecode
import re
from subprocess import call
today_iso = date.today().isoformat()
now_iso = strftime("%Y-%m-%d %H:%M", gmtime())
file_slug = unidecode(title.decode('utf-8')).lower()
file_slug = re.sub("\s+", "-", file_slug)
file_slug = re.sub("[-]+", "-", file_slug).lstrip('-')
file_name = "%s-%s.rst" % (today_iso, file_slug)
file_path = "%s%s" % (drafts_path, file_name)
if not os.path.exists(file_path):
draft_fd = open(file_path, "w+")
print(title, file=draft_fd)
print('='*len(title), file=draft_fd)
print('', file=draft_fd)
print(':date: %s' % now_iso, file=draft_fd)
print(':slug: %s' % file_slug, file=draft_fd)
print(':status: draft', file=draft_fd)
print('', file=draft_fd)
draft_fd.close()
else:
print("WARNING: file already exists")
call(['editor', file_path])
Category: 2013
Comments