# Copyright 2010-2015 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import cliapp import os import shutil import string import time import jtlib class NewPersonCommand(cliapp.Plugin): def enable(self): self.app.add_subcommand('new-person', self.run) def run(self, args): '''Create a page to list all notes referring to a person. This is probably only useful to Lars's personal journal. ''' if len(args) != 1: raise cliapp.AppException( 'Need the name of a person (in Last, First form)') def normalise(name): s = name.lower() s = ' '.join(s.split(',')) s = '.'.join(s.split()) return s name = args[0] basename = normalise(name) pathname = os.path.join( self.app.settings['source'], 'people', basename + '.mdwn') if os.path.exists(pathname): raise cliapp.AppException('File %s already exists' % pathname) vars = { 'name': name, 'basename': basename, } rendered_template = self.app.render_template('new_person.j2', vars) assert type(rendered_template) == unicode with open(pathname, 'w') as f: f.write(rendered_template.encode('utf8'))