Switched to thumbnail images in post list view

This commit is contained in:
Sam Collins 2017-03-29 19:49:36 +01:00
parent c1f6d3f22e
commit eb46f9fcb3
No known key found for this signature in database
GPG Key ID: 233C5943C800FE30
8 changed files with 110 additions and 27 deletions

View File

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.6 on 2017-03-29 18:04
from __future__ import unicode_literals
from django.db import migrations
import stdimage.models
import stdimage.utils
import stdimage.validators
class Migration(migrations.Migration):
dependencies = [
('base', '0005_auto_20170228_2210'),
]
operations = [
migrations.AlterField(
model_name='bannerimage',
name='image',
field=stdimage.models.StdImageField(upload_to=stdimage.utils.UploadToAutoSlugClassNameDir('title'), validators=[stdimage.validators.MinSizeValidator(2400, 600)]),
),
]

View File

@ -0,0 +1,32 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.6 on 2017-03-29 18:04
from __future__ import unicode_literals
from django.db import migrations, models
import stdimage.models
import stdimage.utils
import stdimage.validators
class Migration(migrations.Migration):
dependencies = [
('blog', '0004_auto_20170228_2210'),
]
operations = [
migrations.AlterModelOptions(
name='post',
options={'ordering': ('-published_date',)},
),
migrations.AddField(
model_name='post',
name='excerpt',
field=models.TextField(blank=True, null=True),
),
migrations.AlterField(
model_name='post',
name='image',
field=stdimage.models.StdImageField(blank=True, null=True, upload_to=stdimage.utils.UploadToAutoSlugClassNameDir('title'), validators=[stdimage.validators.MinSizeValidator(730, 410)]),
),
]

View File

@ -1,12 +1,14 @@
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from django.urls import reverse from django.urls import reverse
from draceditor.models import DraceditorField
from mhackspace.users.models import User from draceditor.models import DraceditorField
from stdimage.validators import MinSizeValidator
from stdimage.models import StdImageField from stdimage.models import StdImageField
from stdimage.utils import UploadToAutoSlugClassNameDir from stdimage.utils import UploadToAutoSlugClassNameDir
from mhackspace.users.models import User
class Category(models.Model): class Category(models.Model):
name = models.CharField(max_length=100) name = models.CharField(max_length=100)
@ -33,9 +35,24 @@ class Post(models.Model):
'home': { 'home': {
"width": 530, "width": 530,
"height": 220, "height": 220,
"crop": True}}) "crop": True},
'mobilethumb': {
"width": 580,
"height": 150,
"crop": True},
'thumbnail': {
"width": 250,
"height": 150,
"crop": True},
'full': {
"width": 730,
"height": 410,
"crop": True}},
validators=[
MinSizeValidator(730, 410)])
description = DraceditorField() description = DraceditorField()
excerpt = models.TextField(blank=True, null=True)
published_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(default=timezone.now)
updated_date = models.DateTimeField(default=timezone.now) updated_date = models.DateTimeField(default=timezone.now)
active = models.BooleanField(default=True) active = models.BooleanField(default=True)

View File

@ -8,7 +8,7 @@
<meta http-equiv="x-ua-compatible" content="ie=edge"> <meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{% block title %}Maidstone Hackspace{% endblock title %}</title> <title>{% block title %}Maidstone Hackspace{% endblock title %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Maidstone Hackspace is a shared space where artists, designers, makers, hackers, programmers, tinkerers, professionals and hobbyists can work on their projects, share knowledge and collaborate"> <meta name="description" content="Maidstone Hackspace is a space where makers, hackers, programmers, tinkerers, professionals and hobbyists can share knowledge and collaborate">
<meta name="author" content=""> <meta name="author" content="">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->

View File

@ -1,7 +1,7 @@
<div class="text-muted"> <div class="text-muted">
Published: Published:
<span itemprop="datePublished" content="{{ post.published_date|date:"c" }}"> <span itemprop="datePublished" content="{{ post.published_date|date:"c" }}">
({{ post.published_date }}) {{ post.published_date }}
</span> </span>
{% if post.updated_date != post.published_date %} {% if post.updated_date != post.published_date %}
Updated: Updated:

View File

@ -8,14 +8,12 @@
<article itemscope itemtype="http://schema.org/Article"> <article itemscope itemtype="http://schema.org/Article">
<a href="{{ post.get_absolute_url }}"><h1 itemprop="name">{{ post.title }}</h1></a> <a href="{{ post.get_absolute_url }}"><h1 itemprop="name">{{ post.title }}</h1></a>
{% include "blog/post_date.html" %} {% include "blog/post_date.html" %}
{% if post.image %} <div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <img src="{{ post.image.url }}" class="img-fluid"/>
<img src="{{ post.image.url }}" class="img-fluid"/> <meta itemprop="url" content="{{ post.image.url }}">
<meta itemprop="url" content="{{ post.image.url }}"> <meta itemprop="width" content="{{ post.image.width }}">
<meta itemprop="width" content="{{ post.image.width }}"> <meta itemprop="height" content="{{ post.image.height }}">
<meta itemprop="height" content="{{ post.image.height }}"> </div>
</div>
{% endif %}
<span itemprop="articleBody">{{ post.description|safe_markdown }}</span> <span itemprop="articleBody">{{ post.description|safe_markdown }}</span>
</article> </article>
</div> </div>

View File

@ -3,21 +3,34 @@
{% block title %}Blog Posts{% endblock %} {% block title %}Blog Posts{% endblock %}
{% block content %} {% block content %}
<style>
.thumbnail {
margin-bottom: 15px;
}
.title {
margin-bottom: 0;
}
</style>
<div class="row"> <div class="row">
<div class="col-sm-8"> <div class="col-md-9">
{% for post in posts %} {% for post in posts %}
<article itemscope itemtype="http://schema.org/Article"> <article class="row post" itemscope itemtype="http://schema.org/Article">
<a href="{{ post.get_absolute_url }}"><h3 itemprop="name">{{ post.title }}</h3></a> <div class="col-md-4 thumbnail" itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
{% include "blog/post_date.html" %} <picture>
{% if post.image %} <source class="img-fluid" srcset="{{ post.image.mobilethumb.url }}" media="(max-width: 780px)" />
<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> <source class="img-fluid" srcset="{{ post.image.thumbnail.url }}" />
<img src="{{ post.image.url }}" class="img-fluid"/> <img class="img-fluid" src="{{ post.image.thumbnail.url }}" alt="{{ banner.title }}">
<meta itemprop="url" content="{{ post.image.url }}"> </picture>
<meta itemprop="width" content="{{ post.image.width }}"> </div>
<meta itemprop="height" content="{{ post.image.height }}"> <div class="col-md-8">
</div> <a href="{{ post.get_absolute_url }}"><h3 itemprop="name" class="title">{{ post.title }}</h3></a>
{% endif %} {% include "blog/post_date.html" %}
<span itemprop="articleBody">{{ post.description|safe_markdown|striptags|truncatewords:30 }}</span> {% if post.excerpt %}
<span itemprop="articleBody">{{ post.excerpt|striptags|truncatewords:45 }}</span>
{% else %}
<span itemprop="articleBody">{{ post.description|safe_markdown|striptags|truncatewords:45 }}</span>
{% endif %}
</div>
</article> </article>
{% endfor %} {% endfor %}

View File

@ -1,4 +1,4 @@
<div class="col-sm-3 offset-sm-1"> <div class="col-md-3">
<h2>Categories</h2> <h2>Categories</h2>
<ul class="list-group"> <ul class="list-group">
<a href="{% url "blog" %}" class="list-group-item list-group-item-action">All Articles</a> <a href="{% url "blog" %}" class="list-group-item list-group-item-action">All Articles</a>