Package: pcv
About pcvPcv creates a printable curriculum vitae (resume) in HTML format, based on data stored in JSON.The basic idea is to use JSON to store all data related to you resume, then use a settings file to tailor the displayed data to a specific job-application.HistoryThe original intention was to create just any kind of mini-framework, from scratch (except for the template language), in order to gain some insight into framework architecture in general.
The specific choice to focus on resume creation was just convenient at the time.StatusThe project is still in the early stages of development, so it isnotproduction-ready.There are many similar projects out there that are much more complete.DependenciesAlthough we aim for a minimum number of external dependencies, we cannot do withoutjinja2.YAML would be easier to write than JSON, but we don't want the extra dependency required (e.g. PyYAML).Instead of using another external dependency to handle PDF creation (e.g. ReportLab or PyQT), we use CSS print styles so we can print to PDF using the browser. This is not the most convenient, but it works in most cases.InstallationInstallation from pypi, using pipenv:pipenv install pcvAn alternative would be local installation using e.g. pipenv:Either install into site packages usingpipenv install <path to pcv-x.y.z.tar.gz>or install as aneditable dependency, usingpipenv install -e <path to pcv/setup.py>Quick startTo start a newpcvproject in the current folder, run the following from the command line:python -m pcv.startThis will create the following directory structure:.
├─ dist
├─ source
│  ├─ static
│  ├─ templates
│  └─ cv_template.json
├─ settings.py
└─ makecv.pyThe quickest way to get started is to fill out thecv_template.jsonfile with your details.Whencv_template.jsonis ready, callmakecv.py:python makecv.pyThis will create your resume, as an HTML file, in thedistfolder.Whenever you make a change to your JSON or settings, runmakecv.pyagain.SettingsHigh level configuration of your resume can be accomplished using thesettings.pyfile.This file specifies the following constants:FILENAMEName of the output file that will be written to thedistfolder.
Default:'cv.html'JSON_FILESList of JSON source files. These are combined into a single python dictionary.
Default:['cv_template.json']TEMPLATE_FOLDERSList of names for folder that contain custom templates (relative to the project'ssourcefolder).
Default:[]PAGESList of page templates to include.
Default page templates can be found in the pcv source:pcv/templates/pagesDefault:['onepage.html', 'technologies.html', 'publications.html']STYLESList of CSS stylesheets to include.
Default stylesheets can be found in the pcv source:pcv/templates/stylesDefault:['style_pages.css', 'style_zero.css']THEME_COLORMain theme color.
Default:'#438496'THEME_FONT_COLORMain font color.
Default:'white'SECTIONSDictionary with section-specific settings.
This dictionary specifies content filter levels, as follows:{
    <section name>: {
        'level': <minimum level>,
        'priority': <minimum priority>,
        'exclude': [<item to exclude>, ...],
        'source': <name of source section>
    }, 
    ...
}The section specification keyslevel,priority,exclude, andsourceare all optional.
Default section templates can be found in the pcv source:pcv/templates/sectionsDefault:dict(technologies=dict(level=2, priority=2, exclude=[]), 
     skills=dict(level=3, priority=1, source='technologies'))Custom templatesOverriding default templatesIt is possible to override any of thejinja2templates in the sourcepcv/templatessubdirectories.
To do so, copy the template to your project'ssource/templatesfolder, and place it in an appropriate subfolder, e.g.pagesorsections.For example, we can override the defaultonepage.htmlpage by copying the file into our project's source folder:source/templates/pages/onepage.html(TODO: actually this does not work yet)Custom pagestodo