diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..30ecf62
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+django_web_galleries/media/*
\ No newline at end of file
diff --git a/Pipfile b/Pipfile
index 26ee535..31c9bf3 100644
--- a/Pipfile
+++ b/Pipfile
@@ -5,6 +5,8 @@ name = "pypi"
[packages]
django = "*"
+django-responsive-images = "*"
+pillow = "*"
[dev-packages]
diff --git a/django_web_galleries/django_web_galleries/settings.py b/django_web_galleries/django_web_galleries/settings.py
index c685ae2..212777d 100644
--- a/django_web_galleries/django_web_galleries/settings.py
+++ b/django_web_galleries/django_web_galleries/settings.py
@@ -37,6 +37,8 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
+ 'responsive_images',
+ 'web_galleries',
]
MIDDLEWARE = [
@@ -115,9 +117,13 @@ USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/
+STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = 'static/'
# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
+
+MEDIA_ROOT = BASE_DIR / 'media'
+MEDIA_URL = 'media/'
\ No newline at end of file
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/admin.py b/django_web_galleries/web_galleries/admin.py
index 8c38f3f..dc7bb28 100644
--- a/django_web_galleries/web_galleries/admin.py
+++ b/django_web_galleries/web_galleries/admin.py
@@ -1,3 +1,11 @@
from django.contrib import admin
-# Register your models here.
+from .models import (
+ Image,
+ Visitor,
+ Gallery
+)
+
+admin.site.register(Image)
+admin.site.register(Visitor)
+admin.site.register(Gallery)
diff --git a/django_web_galleries/web_galleries/forms.py b/django_web_galleries/web_galleries/forms.py
new file mode 100644
index 0000000..96e6cee
--- /dev/null
+++ b/django_web_galleries/web_galleries/forms.py
@@ -0,0 +1,9 @@
+from django import forms
+from django.utils.translation import gettext as _
+
+from .models import Image
+
+class ImageUploadForm(forms.ModelForm):
+ class Meta:
+ model = Image
+ fields = ['description', 'image_file', 'private']
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 %}
+
+{% 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)