summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/resume/admin.py4
-rw-r--r--app/resume/migrations/0011_auto_20190114_0227.py23
-rw-r--r--app/resume/models.py6
-rw-r--r--app/resume/urls.py12
-rw-r--r--design/sass/_details.scss6
-rw-r--r--design/sass/_resume.scss19
-rw-r--r--design/templates/details/resume.html18
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&#8217;s Webmonkey.com for 13 years and served as head editor for three. I&#8217;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&#8217;ve written blogs, features, news items, ad copy, technical documentation, tutorials, how-tos, wikis and probably other things I&#8217;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 %}