diff options
-rw-r--r-- | app/resume/admin.py | 4 | ||||
-rw-r--r-- | app/resume/migrations/0011_auto_20190114_0227.py | 23 | ||||
-rw-r--r-- | app/resume/models.py | 6 | ||||
-rw-r--r-- | app/resume/urls.py | 12 | ||||
-rw-r--r-- | design/sass/_details.scss | 6 | ||||
-rw-r--r-- | design/sass/_resume.scss | 19 | ||||
-rw-r--r-- | design/templates/details/resume.html | 18 |
7 files changed, 64 insertions, 24 deletions
diff --git a/app/resume/admin.py b/app/resume/admin.py index 0a7594d..bf4f8a0 100644 --- a/app/resume/admin.py +++ b/app/resume/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin +from utils.widgets import LGEntryForm from .models import Publisher, PubItem, Job, Resume @@ -17,7 +18,8 @@ class ResumeAdmin(admin.ModelAdmin): class PublisherAdmin(admin.ModelAdmin): pass + @admin.register(PubItem) class PubItemAdmin(admin.ModelAdmin): + form = LGEntryForm list_display = ('title', 'pub_date', 'publisher', 'admin_link') - pass diff --git a/app/resume/migrations/0011_auto_20190114_0227.py b/app/resume/migrations/0011_auto_20190114_0227.py new file mode 100644 index 0000000..7656c6e --- /dev/null +++ b/app/resume/migrations/0011_auto_20190114_0227.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.1 on 2019-01-14 02:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('resume', '0010_auto_20190113_1147'), + ] + + operations = [ + migrations.AddField( + model_name='resume', + name='profile_html', + field=models.TextField(blank=True), + ), + migrations.AddField( + model_name='resume', + name='skills_html', + field=models.TextField(blank=True), + ), + ] diff --git a/app/resume/models.py b/app/resume/models.py index 390a277..2161e88 100644 --- a/app/resume/models.py +++ b/app/resume/models.py @@ -80,7 +80,9 @@ class Resume(models.Model): title = models.CharField(max_length=200) slug = models.CharField(max_length=50, blank=True) profile = models.TextField() + profile_html = models.TextField(blank=True) skills = models.TextField() + skills_html = models.TextField(blank=True) jobs = models.ManyToManyField(Job) def __str__(self): @@ -89,4 +91,8 @@ class Resume(models.Model): def save(self, *args, **kwargs): if self._state.adding and not self.slug: self.slug = slugify(self.title) + if self.skills: + self.skills_html = markdown_to_html(self.skills) + if self.profile: + self.profile_html = markdown_to_html(self.profile) super(Resume, self).save() diff --git a/app/resume/urls.py b/app/resume/urls.py index 47e07ad..0f74c70 100644 --- a/app/resume/urls.py +++ b/app/resume/urls.py @@ -7,11 +7,6 @@ app_name = "resume" urlpatterns = [ path( - r'<str:slug>', - views.ResumeView.as_view(), - name='resume', - ), - path( r'pubs/<str:page>/', views.PublisherListView.as_view(), name='list', @@ -33,7 +28,7 @@ urlpatterns = [ name="live_publisher_redirect" ), path( - r'pubs/', + r'pubs', RedirectView.as_view(url="/resume/pubs/1/", permanent=False), name="live_redirect" ), @@ -42,4 +37,9 @@ urlpatterns = [ views.PageView.as_view(), name="pages" ), + path( + r'<str:slug>', + views.ResumeView.as_view(), + name='resume', + ), ] diff --git a/design/sass/_details.scss b/design/sass/_details.scss index 141191f..8cadba4 100644 --- a/design/sass/_details.scss +++ b/design/sass/_details.scss @@ -273,13 +273,13 @@ sup { margin-top: 1em; } .highlink { - margin-right: 1em; + @include fontsize(22); + margin-right: .5rem; float: left; - font-size: 0.75em; line-height: 1.6; color: lighten($body_font_color, 60); @include breakpoint(alpha) { - margin-top: 0.5em; + margin-top: -1px; } &:visited { color: lighten($body_font_color, 60); diff --git a/design/sass/_resume.scss b/design/sass/_resume.scss index 3a6b139..41fc8e1 100644 --- a/design/sass/_resume.scss +++ b/design/sass/_resume.scss @@ -56,6 +56,8 @@ } } .meta { + list-style-type: none; + display: inline; @include constrain_narrow; text-align: left; margin-bottom: 1em; @@ -63,6 +65,23 @@ display: inline; } } +.p-experience { + &:after { + @include faded_line_after; + } + &:last-of-type:after { + background: #fff; + } +} +.p-organization { + text-transform: uppercase; + letter-spacing: 1px; + @include fontsize(13); + +} +.p-skill { + font-weight: bold; +} .contact { margin: 2em 0 1.5em; @include constrain_narrow; diff --git a/design/templates/details/resume.html b/design/templates/details/resume.html index 611765c..eaff2db 100644 --- a/design/templates/details/resume.html +++ b/design/templates/details/resume.html @@ -51,23 +51,12 @@ </div> <div class="profile"> <h3>Profile</h3> - <p class="p-summary">I am a writer, producer and web developer based in Athens, GA. Clients include Wired, Webmonkey, Ars Technica, Pioneer and Boost Mobile, among others. I wrote for Wired.com’s Webmonkey.com for 13 years and served as head editor for three. I’ve been developing on the web and writing about web development for nearly two decades. For an up-to-date list of recent articles, please browse <a href="/resume/pubs/">the publications list</a>.</p> + <p class="p-summary">{{object.profile_html|smartypants|widont|safe}}</p> </div> <div id="skills"> <h3>Skills</h3> - - <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Writing">Writing</a></h2> - <p>Freelance writer, producer, journalist, editor and hand model at places like Wired, Ars Technica, Budget Travel. I’ve written blogs, features, news items, ad copy, technical documentation, tutorials, how-tos, wikis and probably other things I’ve forgotten about. I also served as editor-in-chief of Webmonkey.com.</p> - - <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Web_development">Web Development</a></h2> - <p>Expert front-end engineer in <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Web_standards">standards-based web development</a> using <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/HTML"><abbr title="Hypertext Markup Language">HTML</abbr></a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets"><abbr title="Cascading Style Sheets">CSS</abbr></a>, and high performance <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Responsive_web_design">responsive design</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Microformats">microformats</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/ARIA">ARIA</a> and more. </p> - <p>Experience maintaining large-scale web applications and tools with <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Python_(programming_language)">Python</a> and <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/PHP">PHP</a> in conjunction with databases like <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/PostgreSQL">PostgreSQL</a> (including numerous PostGIS, geographic database projects), <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/MySQL">MySQL</a>, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Sqlite">Sqlite</a>. Experience administering <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Linux">Linux </a> servers and running web servers like <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Apache_HTTP_Server">Apache</a>, and <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Nginx">Nginx</a>.</p> - <p>Advocate and evangelist for free software and open web standards technologies such as <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/HTML5">HTML5</a>, related APIs, <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS3</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Responsive_web_design">responsive design</a> (including <a href="https://longhandpixels.net/books/responsive-web-design">a 350 page book on the subject</a>) and <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>.</p> - - <h2><a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Graphic_design">Photography/Video/Design</a></h2> - <p>Good design eye specializing in fluid, clean layouts with strong <a class="p-skill" rel="tag" href="http://en.wikipedia.org/wiki/Typography">typographic style</a>. </p> - <p>Photo and video editing using <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop">Photoshop</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/GIMP">GIMP</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Adobe_Photoshop_Lightroom">Lightroom</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Darktable">Darktable</a>, <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Final_Cut_Pro">Final Cut Pro</a>, and <a class="p-skill" rel="tag" href="https://en.wikipedia.org/wiki/Kdenlive">Kdenlive</a>.</p> + {{object.skills_html|smartypants|widont|safe}} </div> @@ -76,8 +65,9 @@ <div class="p-experience h-event"> <h2 class="p-name">{{job.title}}</h2> <ul class="meta"> - <li>(<time class="dt-start" datetime="{{job.date_start}}">{{job.date_start|date:"M Y"}}</time>–{% if job.date_end %}<time class="dt-end" datetime="{{job.date_end}}">{{job.date_end|date:"M Y"}}</time>{%else%}<span class="dt-end">present</span>{%endif%})</li> + <li><time class="dt-start" datetime="{{job.date_start}}">{{job.date_start|date:"M Y"}}</time>–{% if job.date_end %}<time class="dt-end" datetime="{{job.date_end}}">{{job.date_end|date:"M Y"}}</time>{%else%}<span class="dt-end">present</span>{%endif%}</li> </ul> + {% if job.employer %}<p class="p-organization">Employer: {{job.employer}}</p>{%endif%} <p class="e-description">{{job.body_html|safe}}</p> </div>{% endfor %} |