summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2016-11-01 14:42:20 -0400
committerluxagraf <sng@luxagraf.net>2016-11-01 14:42:20 -0400
commit541a4616c06449311cae1a793fef11bfa1ca7ace (patch)
tree498404416935822a09de181d6c82f24d79916468 /app
parentd061b4393663ddf81c281f51fef63b5d11beb0df (diff)
widened site, created new photo layouts and prepped homepage redesign
Diffstat (limited to 'app')
-rw-r--r--app/books/migrations/0003_auto_20161023_2014.py20
-rw-r--r--app/daily/migrations/0010_auto_20161023_2014.py19
-rw-r--r--app/jrnl/models.py12
-rw-r--r--app/jrnl/views.py5
-rw-r--r--app/photos/admin.py1
-rw-r--r--app/photos/forms.py2
-rw-r--r--app/photos/migrations/0011_luximagesize_name.py20
-rw-r--r--app/photos/migrations/0012_luximagesize_is_portrait.py20
-rw-r--r--app/photos/migrations/0013_auto_20161022_1348.py20
-rw-r--r--app/photos/migrations/0014_remove_luximagesize_is_portrait.py19
-rw-r--r--app/photos/migrations/0015_auto_20161022_1411.py20
-rw-r--r--app/photos/migrations/0016_auto_20161022_1411.py25
-rw-r--r--app/photos/models.py50
-rw-r--r--app/syndication/migrations/0003_auto_20161023_2014.py19
14 files changed, 235 insertions, 17 deletions
diff --git a/app/books/migrations/0003_auto_20161023_2014.py b/app/books/migrations/0003_auto_20161023_2014.py
new file mode 100644
index 0000000..809c465
--- /dev/null
+++ b/app/books/migrations/0003_auto_20161023_2014.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-23 20:14
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('books', '0002_book_is_public'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='book',
+ name='image',
+ field=models.FileField(blank=True, null=True, upload_to='/home/lxf/sites/luxagraf/site/media/images/book-covers/'),
+ ),
+ ]
diff --git a/app/daily/migrations/0010_auto_20161023_2014.py b/app/daily/migrations/0010_auto_20161023_2014.py
new file mode 100644
index 0000000..72a68cf
--- /dev/null
+++ b/app/daily/migrations/0010_auto_20161023_2014.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-23 20:14
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('daily', '0009_remove_daily_title'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='daily',
+ options={'get_latest_by': 'date', 'ordering': ('-date',)},
+ ),
+ ]
diff --git a/app/jrnl/models.py b/app/jrnl/models.py
index ceaefa6..2fc775e 100644
--- a/app/jrnl/models.py
+++ b/app/jrnl/models.py
@@ -37,15 +37,16 @@ def image_url_replace(s):
def parse_image(s):
soup = BeautifulSoup(s.group(), "lxml")
for img in soup.find_all('img'):
- print(img)
src = img['src'].split("images/")[1]
- print(src)
i = LuxImage.objects.get(image__icontains=src)
cl = img['class']
caption = False
exif = False
+ cluster_class = None
if len(cl) > 1:
css_class = cl[0]
+ if css_class == 'cluster':
+ cluster_class = cl[1]
if cl[1] == 'caption':
caption = True
if cl[1] == 'exif':
@@ -59,7 +60,7 @@ def parse_image(s):
print('caption'+str(caption))
else:
css_class = cl[0]
- c = Context({'image': i, 'caption': caption, 'exif': exif})
+ c = Context({'image': i, 'caption': caption, 'exif': exif, 'cluster_class': cluster_class})
return render_to_string("lib/img_%s.html" % css_class, c)
@@ -72,7 +73,10 @@ def extract_images(s):
soup = BeautifulSoup(s, "lxml")
imgs = []
for img in soup.find_all('img'):
- imgs.append(img['src'])
+ try:
+ imgs.append(img['src'])
+ except:
+ pass
return imgs
diff --git a/app/jrnl/views.py b/app/jrnl/views.py
index c68625d..6d0e85b 100644
--- a/app/jrnl/views.py
+++ b/app/jrnl/views.py
@@ -7,6 +7,7 @@ from django.conf import settings
from utils.views import PaginatedListView
from .models import Entry, HomepageCurrator
+from daily.models import CheckIn
from locations.models import Country, Region
@@ -84,7 +85,8 @@ class HomepageList(ListView):
Return a main entry and list of Entries in reverse chronological order
"""
context_object_name = 'recent'
- queryset = Entry.objects.filter(status__exact=1)[:5]
+ exclude = HomepageCurrator.objects.get(pk=1)
+ queryset = Entry.objects.filter(status__exact=1).exclude(pk=exclude.featured.pk)[:8]
def get_template_names(self):
obj = HomepageCurrator.objects.get(pk=1)
@@ -94,6 +96,7 @@ class HomepageList(ListView):
# Call the base implementation first to get a context
context = super(HomepageList, self).get_context_data(**kwargs)
context['homepage'] = HomepageCurrator.objects.get(pk=1)
+ context['location'] = CheckIn.objects.get(pk=1)
context['IMAGES_URL'] = settings.IMAGES_URL
return context
diff --git a/app/photos/admin.py b/app/photos/admin.py
index 22de1fd..f0eb1c7 100644
--- a/app/photos/admin.py
+++ b/app/photos/admin.py
@@ -13,6 +13,7 @@ from .forms import UploadZipForm, GalleryForm
class LuxImageSizeAdmin(OSMGeoAdmin):
+ list_display = ('name', 'width', 'height', 'quality')
pass
diff --git a/app/photos/forms.py b/app/photos/forms.py
index 4e00189..06e829d 100644
--- a/app/photos/forms.py
+++ b/app/photos/forms.py
@@ -151,7 +151,7 @@ class UploadZipForm(forms.Form):
if file_extension != ".mp4":
img = Image.open(image.image.path)
if img.size[0] > img.size[1]:
- image.sizes.add(LuxImageSize.objects.get(width=2280))
+ image.sizes.add(LuxImageSize.objects.get(width=2560))
image.sizes.add(LuxImageSize.objects.get(width=1140))
image.sizes.add(LuxImageSize.objects.get(width=720))
if img.size[1] > img.size[0]:
diff --git a/app/photos/migrations/0011_luximagesize_name.py b/app/photos/migrations/0011_luximagesize_name.py
new file mode 100644
index 0000000..49d046b
--- /dev/null
+++ b/app/photos/migrations/0011_luximagesize_name.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-21 08:46
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0010_auto_20160517_0906'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='luximagesize',
+ name='name',
+ field=models.CharField(blank=True, max_length=30, null=True),
+ ),
+ ]
diff --git a/app/photos/migrations/0012_luximagesize_is_portrait.py b/app/photos/migrations/0012_luximagesize_is_portrait.py
new file mode 100644
index 0000000..a2c2e3a
--- /dev/null
+++ b/app/photos/migrations/0012_luximagesize_is_portrait.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-22 13:46
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0011_luximagesize_name'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='luximagesize',
+ name='is_portrait',
+ field=models.BooleanField(default=False),
+ ),
+ ]
diff --git a/app/photos/migrations/0013_auto_20161022_1348.py b/app/photos/migrations/0013_auto_20161022_1348.py
new file mode 100644
index 0000000..8dfbf98
--- /dev/null
+++ b/app/photos/migrations/0013_auto_20161022_1348.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-22 13:48
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0012_luximagesize_is_portrait'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='luximagesize',
+ old_name='width',
+ new_name='long_edge',
+ ),
+ ]
diff --git a/app/photos/migrations/0014_remove_luximagesize_is_portrait.py b/app/photos/migrations/0014_remove_luximagesize_is_portrait.py
new file mode 100644
index 0000000..b8e0aa8
--- /dev/null
+++ b/app/photos/migrations/0014_remove_luximagesize_is_portrait.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-22 14:11
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0013_auto_20161022_1348'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='luximagesize',
+ name='is_portrait',
+ ),
+ ]
diff --git a/app/photos/migrations/0015_auto_20161022_1411.py b/app/photos/migrations/0015_auto_20161022_1411.py
new file mode 100644
index 0000000..d380b52
--- /dev/null
+++ b/app/photos/migrations/0015_auto_20161022_1411.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-22 14:11
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0014_remove_luximagesize_is_portrait'),
+ ]
+
+ operations = [
+ migrations.RenameField(
+ model_name='luximagesize',
+ old_name='long_edge',
+ new_name='width',
+ ),
+ ]
diff --git a/app/photos/migrations/0016_auto_20161022_1411.py b/app/photos/migrations/0016_auto_20161022_1411.py
new file mode 100644
index 0000000..54b84d7
--- /dev/null
+++ b/app/photos/migrations/0016_auto_20161022_1411.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-22 14:11
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('photos', '0015_auto_20161022_1411'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='luximagesize',
+ name='height',
+ field=models.IntegerField(blank=True, null=True),
+ ),
+ migrations.AlterField(
+ model_name='luximagesize',
+ name='width',
+ field=models.IntegerField(blank=True, null=True),
+ ),
+ ]
diff --git a/app/photos/models.py b/app/photos/models.py
index 6940110..4207ad4 100644
--- a/app/photos/models.py
+++ b/app/photos/models.py
@@ -1,10 +1,13 @@
import os.path
+import io
import datetime
from PIL import Image
+from django.core.exceptions import ValidationError
from django.contrib.gis.db import models
from django.contrib.sitemaps import Sitemap
from django.utils.encoding import force_text
+from django.utils.text import slugify
from django.conf import settings
from taggit.managers import TaggableManager
@@ -24,15 +27,20 @@ def get_upload_path(self, filename):
class LuxImageSize(models.Model):
- width = models.IntegerField()
+ name = models.CharField(null=True, blank=True, max_length=30)
+ width = models.IntegerField(null=True, blank=True)
+ height = models.IntegerField(null=True, blank=True)
quality = models.IntegerField()
class Meta:
verbose_name_plural = 'Image Sizes'
def __str__(self):
- return str(self.width)
-
+ if self.width:
+ size = self.width
+ if self.height:
+ size = self.height
+ return "%s - %s" %(self.name, str(size))
class LuxImage(models.Model):
image = models.FileField(blank=True, null=True, upload_to=get_upload_path)
@@ -75,8 +83,9 @@ class LuxImage(models.Model):
def get_admin_image(self):
for size in self.sizes.all():
- if size.width <= 800:
- return self.get_image_by_size(size)
+ if size.width and size.width <= 820 or size.height and size.height<=800:
+ print("Size name" +size.name)
+ return self.get_image_by_size(size.name)
def get_largest_image(self):
t = []
@@ -139,12 +148,21 @@ class LuxImage(models.Model):
n = self.get_next_by_pub_date()
return "/admin/photos/luximage/%s/change/" % n.pk
+ @property
+ def is_portait(self):
+ if int(self.height) > int(self.width):
+ return True
+ else:
+ return False
@receiver(post_save, sender=LuxImage)
def post_save_events(sender, update_fields, created, instance, **kwargs):
if instance.exif_raw == '':
filename, file_extension = os.path.splitext(instance.image.path)
if file_extension != ".mp4":
+ img = Image.open(instance.image.path)
+ instance.height = img.height
+ instance.width = img.width
instance = readexif(instance)
post_save.disconnect(post_save_events, sender=LuxImage)
instance.save()
@@ -159,16 +177,24 @@ def update_photo_sizes(sender, instance, **kwargs):
img = Image.open(instance.image.path)
resize_image(img, 160, None, 78, base_path, "%s_tn.%s" % (instance.get_image_name(), instance.get_image_ext()))
for size in instance.sizes.all():
- if img.size[0] > img.size[1]:
+ if size.width:
+ print("Image width is:"+str(img.width))
try:
- resize_image(img, size.width, None, size.quality, base_path, "%s_%s.%s" % (instance.get_image_name(), size.width, instance.get_image_ext()))
+ if size.width <= img.width:
+ resize_image(img, size.width, None, size.quality, base_path, "%s_%s.%s" % (instance.get_image_name(), slugify(size.name), instance.get_image_ext()))
+ else:
+ raise ValidationError({'items': ["Size is larger than source image"]})
except ImageSizeError:
m2m_changed.disconnect(update_photo_sizes, sender=LuxImage.sizes.through)
instance.sizes.remove(size)
m2m_changed.connect(update_photo_sizes, sender=LuxImage.sizes.through)
- if img.size[1] > img.size[0]:
+ if size.height:
try:
- resize_image(img, None, size.width, size.quality, base_path, "%s_%s.%s" % (instance.get_image_name(), size.width, instance.get_image_ext()))
+ if size.height <= img.height:
+ resize_image(img, None, size.height, size.quality, base_path, "%s_%s.%s" % (instance.get_image_name(), slugify(size.name), instance.get_image_ext()))
+
+ else:
+ pass
except ImageSizeError:
m2m_changed.disconnect(update_photo_sizes, sender=LuxImage.sizes.through)
instance.sizes.remove(size)
@@ -205,10 +231,12 @@ class LuxGallery(models.Model):
return "/photos/galleries/private/%s" % (self.slug)
def latitude(self):
- return self.point.y
+ if self.point:
+ return self.point.y
def longitude(self):
- return self.point.x
+ if self.point:
+ return self.point.x
def thumbs(self):
lst = [x.image.name for x in self.images.all()]
diff --git a/app/syndication/migrations/0003_auto_20161023_2014.py b/app/syndication/migrations/0003_auto_20161023_2014.py
new file mode 100644
index 0000000..2b311fb
--- /dev/null
+++ b/app/syndication/migrations/0003_auto_20161023_2014.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9 on 2016-10-23 20:14
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('syndication', '0002_auto_20160628_2149'),
+ ]
+
+ operations = [
+ migrations.AlterModelOptions(
+ name='fboauthtoken',
+ options={'get_latest_by': 'expires', 'ordering': ('-expires',)},
+ ),
+ ]