use picture tag for banners, add in image size

This commit is contained in:
Oly 2017-02-15 13:53:19 +00:00
parent 89ca82c1b9
commit 02f946b7a2
6 changed files with 39 additions and 35 deletions

View File

@ -19,5 +19,6 @@ pipeline:
- pip install -r ./requirements/test.txt
- python manage.py test mhackspace --verbosity 2
services:
mailhog:
image: mailhog/mailhog

View File

@ -303,3 +303,5 @@ SASS_PROCESSOR_INCLUDE_DIRS = [
SASS_PROCESSOR_ENABLED = True
SASS_PROCESSOR_AUTO_INCLUDE = True
EMAIL_SUPPORT = 'support@maidstone-hackspace.org.uk'

View File

@ -8,7 +8,6 @@ from stdimage.utils import UploadToAutoSlugClassNameDir
from stdimage.validators import MinSizeValidator
class BannerImages(models.Model):
url = models.URLField()
title = models.CharField(max_length=255)
@ -19,12 +18,16 @@ class BannerImages(models.Model):
blank=True,
null=True,
variations={
'home': {
"width": 530,
"height": 220,
'small': {
"width": 600,
"height": 300,
"crop": True},
'large': {
"width": 1024,
"height": 300,
"crop": True}},
validators=[
MinSizeValidator(800, 600)])
MinSizeValidator(1200, 300)])
caption = models.TextField()
date = models.DateTimeField(default=timezone.now)

View File

@ -2,29 +2,22 @@
from __future__ import unicode_literals, absolute_import
from django.conf import settings
from django.contrib.auth.models import AbstractUser
from django.core.urlresolvers import reverse
from django.db import models
from django.contrib import messages
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from django.shortcuts import redirect
from django.views.generic import UpdateView, RedirectView
from django.contrib import messages
from django.contrib.auth.models import Group
from django.contrib.auth.mixins import LoginRequiredMixin
from mhackspace.users.models import User
from mhackspace.users.forms import MembershipJoinForm
from mhackspace.subscriptions.payments import select_provider
class MembershipJoinView(LoginRequiredMixin, UpdateView):
model = User
fields = []
def get_object(self):
# Only get the User record for the user making the request
return User.objects.get(username=self.request.user.username)
def get_object(self):
# Only get the User record for the user making the request
return User.objects.get(username=self.request.user.username)
@ -33,7 +26,7 @@ class MembershipJoinView(LoginRequiredMixin, UpdateView):
app_domain = 'http://test.maidstone-hackspace.org.uk'
payment_provider = 'gocardless'
provider = select_provider(payment_provider)
user_code = str(self.request.user.id).zfill(5)
user_code = str(self.request.user.id).zfill(5)
form_subscription = MembershipJoinForm(data=self.request.POST)
form_subscription.is_valid()
@ -60,7 +53,11 @@ class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView):
self.request,
messages.SUCCESS,
'Success your membership should now be active')
kwargs['username'] = self.request.user.get_username()
kwargs['username'] = self.request.user.get_username()
# add user to group on success
group = Group.objects.get(name='members')
self.request.user.groups.add(group)
return super(MembershipJoinSuccessView, self).get_redirect_url(*args, **kwargs)
@ -73,6 +70,6 @@ class MembershipJoinFailureView(LoginRequiredMixin, RedirectView):
messages.add_message(
self.request,
messages.ERROR,
'Failed to sign up something went wrong with your payment')
'Failed to sign up something went wrong with your payment, please contact us at %s' % EMAIL_SUPPORT)
kwargs['username'] = self.request.user.get_username()
return super(MembershipJoinFailureView, self).get_redirect_url(*args, **kwargs)

View File

@ -1,18 +1,20 @@
{% load static %}
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
<div class="carousel-inner" role="listbox" style="height:300px;">
{% for banner in bannerlist %}
{% if banner.scaled_image%}
<div class="carousel-item {% if forloop.first %}active{% endif %}">
<img class="img-fluid" src="{{ banner.scaled_image.url }}" alt="">
<div class="carousel-caption d-none d-md-block">
<h3>{{ banner.title }}</h3>
<p>{{ banner.description |truncatewords:30}}</p>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="carousel-inner" role="listbox" style="height:300px;">
{% for banner in bannerlist %}
{% if banner.scaled_image%}
<div class="carousel-item {% if forloop.first %}active{% endif %}">
<picture>
<source class="img-fluid" srcset="{{ banner.scaled_image.url }}" media="(min-width: 600px)" />
<img class="img-fluid" src="{{ banner.scaled_image.url }}" alt="">
</picture>
<div class="carousel-caption d-none d-md-block">
<h3>{{ banner.title }}</h3>
<p>{{ banner.description |truncatewords:30}}</p>
</div>
</div>
{% endif %}
{% endfor %}
</div>
</div>

View File

@ -5,11 +5,10 @@ from django.conf import settings
from django.contrib.auth.models import AbstractUser
from django.core.urlresolvers import reverse
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from stdimage.models import StdImageField
@python_2_unicode_compatible
class User(AbstractUser):
name = models.CharField(_('Name of User'), blank=True, max_length=255)
image = StdImageField(