diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..7fd08bb --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine + +RUN apk update && apk add python py2-pip py-gunicorn py-pillow py2-futures +RUN pip install django==1.11.6 + +COPY . /app + +RUN cd /app && python manage.py migrate + +ENTRYPOINT cd /app && gunicorn --threads 2 imagehost.wsgi:application --bind 0.0.0.0:8080 -t 60 --max-requests 1000 diff --git a/ih/images.py b/ih/images.py index 1d8af47..cdfd1e7 100644 --- a/ih/images.py +++ b/ih/images.py @@ -2,10 +2,10 @@ from PIL import Image def resize_image(fh, img_prop): im = Image.open(fh) -# size = 100, 100 + # size = 100, 100 im.thumbnail(img_prop['size']) - print img_prop['size'] - # im.thumbnail(size) + print(img_prop['size']) + # im.thumbnail(size) thumb_name = img_prop['dest'] + '/thumb_' + img_prop['name'] im.save(thumb_name) diff --git a/imagehost/wsgi.py b/imagehost/wsgi.py index f47ba04..62bb1ed 100644 --- a/imagehost/wsgi.py +++ b/imagehost/wsgi.py @@ -12,6 +12,6 @@ import os from django.core.wsgi import get_wsgi_application -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "imagehost.settings") application = get_wsgi_application() diff --git a/imagehosting/admin.py b/imagehosting/admin.py index 2d0670b..f884720 100644 --- a/imagehosting/admin.py +++ b/imagehosting/admin.py @@ -2,6 +2,6 @@ from django.contrib import admin from .models import Post -admin.site.register(Post -) +admin.site.register(Post) + # Register your models here. diff --git a/imagehosting/forms.py b/imagehosting/forms.py index 34b26a1..1172811 100644 --- a/imagehosting/forms.py +++ b/imagehosting/forms.py @@ -1,13 +1,16 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- from django import forms from .models import Post + class PostForm(forms.ModelForm): class Meta: model = Post fields = ('name', 'file') + + class DeleteForm(forms.ModelForm): class Meta: diff --git a/imagehosting/models.py b/imagehosting/models.py index 707a96e..8da68c2 100644 --- a/imagehosting/models.py +++ b/imagehosting/models.py @@ -2,13 +2,14 @@ from __future__ import unicode_literals from django.db import models from django.utils import timezone -#from ih import images +# from ih import images import os + class Post(models.Model): name = models.CharField(max_length=30, blank=True) file = models.FileField(upload_to='images') -# thumb = models.CharField(max_length=32, null=True, blank=True) + # thumb = models.CharField(max_length=32, null=True, blank=True) def publish(self): self.published_date = timezone.now() @@ -17,24 +18,23 @@ class Post(models.Model): def __unicode__(self): return self.name - - def thumb_name(self): - x = os.path.split(self.file.name)[-1] - return '/thumb_' + x + def thumb_name(self): + x = os.path.split(self.file.name)[-1] + return '/thumb_' + x thumb_name = property(thumb_name) - + def orig_name(self): - x = os.path.split(self.file.name)[-1] + x = os.path.split(self.file.name)[-1] return x orig_name = property(orig_name) '''def resize_image(self.file): path, file_long = os.path.split(self.file) - + im=image.open(file_long) size = 128, 128 im.thumbnail(size) diff --git a/imagehosting/views.py b/imagehosting/views.py index f144172..a2a1d79 100644 --- a/imagehosting/views.py +++ b/imagehosting/views.py @@ -7,6 +7,8 @@ from django.shortcuts import redirect from ih import files, images #from django.views.decorators.csrf import requires_csrf_token from django.contrib.auth.decorators import login_required +from ih import images +from django.views.decorators.csrf import requires_csrf_token '''def create_thumbnail(request): # Get file from @@ -32,12 +34,12 @@ from django.contrib.auth.decorators import login_required def create_thumb_from_file(filename): - orig_file = 'imagehost/media/images/' + filename - #f = str(filename) - #print(filename) - #print f - # Create thumbnail - print("DEBUG: Resizing image " + orig_file) + orig_file = 'imagehost/media/images/' + filename + # f = str(filename) + # print(filename) + # print f + # Create thumbnail + print("DEBUG: Resizing image " + orig_file) thumb_name = images.resize_image(orig_file, { 'name': filename, 'size': [300, 300], @@ -45,21 +47,20 @@ def create_thumb_from_file(filename): } ) - - return thumb_name + return thumb_name @login_required(login_url="/login") def image_new(request): if request.method == "POST": form = PostForm(request.POST, request.FILES) if form.is_valid(): - # thumb_name = create_thumbnail(request) + # thumb_name = create_thumbnail(request) post = form.save(commit=False) post.save() - #print("FILE: ", post.file) - print post.orig_name - create_thumb_from_file(post.orig_name) + # print("FILE: ", post.file) + print(post.orig_name) + create_thumb_from_file(post.orig_name) return redirect('imagehosting.views.image_detail', pk=post.id) else: form = PostForm() @@ -74,9 +75,10 @@ def image_detail(request, pk): def all_posts(request): all = Post.objects.order_by('-pk') - page = request.POST.get("page") + # page = request.POST.get("page") return render(request, 'imagehosting/all.html', {'all': all}) + def carousel(request): return render(request, 'imagehosting/carousel.html', {'all': Post.objects.all()}) @@ -86,10 +88,11 @@ def delete_post(request, pk): post_to_delete = get_object_or_404(Post, pk=pk) if request.method == 'GET': form = DeleteForm(request.POST, instance=post_to_delete) - if form.is_valid(): # checks CSRF + if form.is_valid(): # checks CSRF if not request.user.is_authenticated(): return HttpResponseRedirect('/admin') post_to_delete.delete() return redirect('imagehosting.views.all_posts') #return render(request, 'imagehosting/delete.html', {'form': form}) + return render(request, 'imagehosting/delete.html', {'form': form})