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 - pip install -r ./requirements/test.txt
- python manage.py test mhackspace --verbosity 2 - python manage.py test mhackspace --verbosity 2
services:
mailhog: mailhog:
image: mailhog/mailhog image: mailhog/mailhog

View File

@ -303,3 +303,5 @@ SASS_PROCESSOR_INCLUDE_DIRS = [
SASS_PROCESSOR_ENABLED = True SASS_PROCESSOR_ENABLED = True
SASS_PROCESSOR_AUTO_INCLUDE = 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 from stdimage.validators import MinSizeValidator
class BannerImages(models.Model): class BannerImages(models.Model):
url = models.URLField() url = models.URLField()
title = models.CharField(max_length=255) title = models.CharField(max_length=255)
@ -19,12 +18,16 @@ class BannerImages(models.Model):
blank=True, blank=True,
null=True, null=True,
variations={ variations={
'home': { 'small': {
"width": 530, "width": 600,
"height": 220, "height": 300,
"crop": True},
'large': {
"width": 1024,
"height": 300,
"crop": True}}, "crop": True}},
validators=[ validators=[
MinSizeValidator(800, 600)]) MinSizeValidator(1200, 300)])
caption = models.TextField() caption = models.TextField()
date = models.DateTimeField(default=timezone.now) date = models.DateTimeField(default=timezone.now)

View File

@ -2,29 +2,22 @@
from __future__ import unicode_literals, absolute_import from __future__ import unicode_literals, absolute_import
from django.conf import settings 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.shortcuts import redirect
from django.views.generic import UpdateView, RedirectView 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 django.contrib.auth.mixins import LoginRequiredMixin
from mhackspace.users.models import User from mhackspace.users.models import User
from mhackspace.users.forms import MembershipJoinForm from mhackspace.users.forms import MembershipJoinForm
from mhackspace.subscriptions.payments import select_provider from mhackspace.subscriptions.payments import select_provider
class MembershipJoinView(LoginRequiredMixin, UpdateView): class MembershipJoinView(LoginRequiredMixin, UpdateView):
model = User model = User
fields = [] 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): def get_object(self):
# Only get the User record for the user making the request # Only get the User record for the user making the request
return User.objects.get(username=self.request.user.username) return User.objects.get(username=self.request.user.username)
@ -61,6 +54,10 @@ class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView):
messages.SUCCESS, messages.SUCCESS,
'Success your membership should now be active') '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) return super(MembershipJoinSuccessView, self).get_redirect_url(*args, **kwargs)
@ -73,6 +70,6 @@ class MembershipJoinFailureView(LoginRequiredMixin, RedirectView):
messages.add_message( messages.add_message(
self.request, self.request,
messages.ERROR, 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() kwargs['username'] = self.request.user.get_username()
return super(MembershipJoinFailureView, self).get_redirect_url(*args, **kwargs) return super(MembershipJoinFailureView, self).get_redirect_url(*args, **kwargs)

View File

@ -4,8 +4,10 @@
{% for banner in bannerlist %} {% for banner in bannerlist %}
{% if banner.scaled_image%} {% if banner.scaled_image%}
<div class="carousel-item {% if forloop.first %}active{% endif %}"> <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=""> <img class="img-fluid" src="{{ banner.scaled_image.url }}" alt="">
</picture>
<div class="carousel-caption d-none d-md-block"> <div class="carousel-caption d-none d-md-block">
<h3>{{ banner.title }}</h3> <h3>{{ banner.title }}</h3>
<p>{{ banner.description |truncatewords:30}}</p> <p>{{ banner.description |truncatewords:30}}</p>

View File

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