diff --git a/django_web_galleries/django_web_galleries/urls.py b/django_web_galleries/django_web_galleries/urls.py index 244880e..3717e70 100644 --- a/django_web_galleries/django_web_galleries/urls.py +++ b/django_web_galleries/django_web_galleries/urls.py @@ -14,8 +14,9 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), + path('', include('web_galleries.urls')) ] diff --git a/django_web_galleries/web_galleries/templates/global.html b/django_web_galleries/web_galleries/templates/global.html new file mode 100644 index 0000000..cf9376c --- /dev/null +++ b/django_web_galleries/web_galleries/templates/global.html @@ -0,0 +1,46 @@ + + + + + + + Web Gallery + + +
+ + + +
+ {% block content %} + {% endblock content %} +
+ +
+ + \ No newline at end of file diff --git a/django_web_galleries/web_galleries/templates/list_images/image_list.html b/django_web_galleries/web_galleries/templates/list_images/image_list.html new file mode 100644 index 0000000..8df5b74 --- /dev/null +++ b/django_web_galleries/web_galleries/templates/list_images/image_list.html @@ -0,0 +1,13 @@ +{% extends '../global.html' %} + +{% load responsive_images %} + +{% block content %} + +
  • + {% for image in images %} + + {% endfor %} +
  • +
    +{% endblock content %} \ No newline at end of file diff --git a/django_web_galleries/web_galleries/templates/upload_image/upload.html b/django_web_galleries/web_galleries/templates/upload_image/upload.html new file mode 100644 index 0000000..494a6ce --- /dev/null +++ b/django_web_galleries/web_galleries/templates/upload_image/upload.html @@ -0,0 +1,9 @@ +{% extends '../global.html' %} + +{% block content %} +
    + {% csrf_token %} + {{ form }} + +
    +{% endblock content %} diff --git a/django_web_galleries/web_galleries/urls.py b/django_web_galleries/web_galleries/urls.py new file mode 100644 index 0000000..0ebc763 --- /dev/null +++ b/django_web_galleries/web_galleries/urls.py @@ -0,0 +1,19 @@ +from django.urls import path +from django.conf import settings +from django.conf.urls.static import static + +from .views import ( + ImageUploadView, + PublicImageListView +) + +urlpatterns = [ + path('', PublicImageListView.as_view(), name='home'), + path('upload/', ImageUploadView.as_view(), name='upload_image') +] + +if settings.DEBUG: + urlpatterns += static( + settings.MEDIA_URL, + document_root=settings.MEDIA_ROOT + ) \ No newline at end of file diff --git a/django_web_galleries/web_galleries/views.py b/django_web_galleries/web_galleries/views.py index 91ea44a..7ebce7c 100644 --- a/django_web_galleries/web_galleries/views.py +++ b/django_web_galleries/web_galleries/views.py @@ -1,3 +1,55 @@ -from django.shortcuts import render +import secrets -# Create your views here. +from django.views import View +from django.views.generic.list import ListView +from django.shortcuts import render, redirect +from django.urls import reverse + +from .forms import ImageUploadForm +from .models import Image + +class ImageUploadView(View): + def get(self, request): + form = ImageUploadForm() + return render( + request, + 'upload_image/upload.html', + { + 'form': form + } + ) + + def post(self, request): + form = ImageUploadForm( + request.POST, + request.FILES + ) + + if form.is_valid(): + image = form.save(commit=False) + + if image.private: + image.access_code = secrets.token_hex(32) + + image.save() + return redirect( + reverse('home') + ) + else: + form = ImageUploadForm() + return render( + request, + 'upload_image/upload.html', + { + 'form': form + } + ) + +class PublicImageListView(ListView): + model = Image + paginate_by = 20 + context_object_name = 'images' + template_name = 'list_images/image_list.html' + + def get_queryset(self): + return Image.objects.all().filter(private=False)