-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
187 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
from django.apps import AppConfig | ||
|
||
|
||
class DemoCustomConfig(AppConfig): | ||
default_auto_field = 'django.db.models.BigAutoField' | ||
name = 'demo_multiple_fields_1_model' | ||
|
||
def ready(self): | ||
import demo_multiple_fields_1_model.receivers # noqa |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
from django.core.exceptions import PermissionDenied | ||
|
||
from galleryfield.image_views import (ImageCreateView, ImageCropView, | ||
ImageListView) | ||
|
||
|
||
class MyImage1CreateView(ImageCreateView): | ||
target_model = "demo_multiple_fields_1_model.MyImage1" | ||
disable_server_side_crop = False | ||
|
||
def create_instance_from_form(self, form): | ||
self.object = form.save(commit=False) | ||
self.object.creator = self.request.user | ||
self.object.save() | ||
|
||
|
||
class MyImage1ListView(ImageListView): | ||
target_model = "event.MyImage1" | ||
disable_server_side_crop = False | ||
|
||
def get_queryset(self): | ||
queryset = super().get_queryset() | ||
if not self.request.user.is_superuser: | ||
queryset = queryset.filter(creator=self.request.user) | ||
return queryset | ||
|
||
|
||
class MyImage1CropView(ImageCropView): | ||
target_model = "demo_multiple_fields_1_model.MyImage1" | ||
disable_server_side_crop = False | ||
|
||
def get_object(self, queryset=None): | ||
obj = super().get_object(queryset=None) | ||
if not self.request.user.is_superuser and obj.creator != self.request.user: | ||
raise PermissionDenied("May not crop other user's image") | ||
return obj | ||
|
||
def create_cropped_instance_from_form(self, form): | ||
# we don't need to set self.object.creator here because | ||
# it's copied from the original instance. | ||
self.object = form.save() | ||
|
||
|
||
class MyImage2CreateView(ImageCreateView): | ||
target_model = "demo_multiple_fields_1_model.MyImage2" | ||
disable_server_side_crop = False | ||
|
||
def create_instance_from_form(self, form): | ||
self.object = form.save(commit=False) | ||
self.object.creator = self.request.user | ||
self.object.save() | ||
|
||
|
||
class MyImage2ListView(ImageListView): | ||
target_model = "demo_multiple_fields_1_model.MyImage2" | ||
disable_server_side_crop = False | ||
|
||
def get_queryset(self): | ||
queryset = super().get_queryset() | ||
if not self.request.user.is_superuser: | ||
queryset = queryset.filter(creator=self.request.user) | ||
return queryset | ||
|
||
|
||
class MyImage2CropView(ImageCropView): | ||
target_model = "demo_multiple_fields_1_model.MyImage2" | ||
disable_server_side_crop = False | ||
|
||
def get_object(self, queryset=None): | ||
obj = super().get_object(queryset=None) | ||
if not self.request.user.is_superuser and obj.creator != self.request.user: | ||
raise PermissionDenied("May not crop other user's image") | ||
return obj | ||
|
||
def create_cropped_instance_from_form(self, form): | ||
# we don't need to set self.object.creator here because | ||
# it's copied from the original instance. | ||
self.object = form.save() |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
from django.conf import settings | ||
from django.core.files.storage import default_storage | ||
from django.db import models | ||
from django.utils.timezone import now | ||
from django.utils.translation import gettext_lazy as _ | ||
from PIL import Image | ||
|
||
from galleryfield.fields import GalleryField | ||
|
||
|
||
def fileName(image): | ||
file_url = list(image.url.split("/")) | ||
file_url.reverse() | ||
file_name = file_url[0].split(".")[0] | ||
return file_name | ||
|
||
|
||
class MyImage1(models.Model): | ||
photo1 = models.ImageField( | ||
upload_to="my_images1", storage=default_storage, verbose_name=_("Image1") | ||
) | ||
creator = models.ForeignKey( | ||
settings.AUTH_USER_MODEL, | ||
null=False, | ||
blank=False, | ||
verbose_name=_("Creator"), | ||
on_delete=models.CASCADE, | ||
) | ||
|
||
@classmethod | ||
def get_image_field(cls): | ||
return cls._meta.get_field("photo1") | ||
|
||
|
||
class MyImage2(models.Model): | ||
photo2 = models.ImageField( | ||
upload_to="my_images2", storage=default_storage, verbose_name=_("Image2") | ||
) | ||
|
||
@classmethod | ||
def get_image_field(cls): | ||
return cls._meta.get_field("photo2") | ||
|
||
|
||
class MyGallery(models.Model): | ||
album1 = GalleryField( | ||
target_model="demo_multiple_fields_1_model.MyImage1", | ||
verbose_name=_("My photos")) | ||
album2 = GalleryField( | ||
target_model="demo_multiple_fields_1_model.MyImage2", | ||
verbose_name=_("My photos2")) | ||
owner = models.ForeignKey( | ||
settings.AUTH_USER_MODEL, | ||
null=False, | ||
blank=False, | ||
verbose_name=_("Owner"), | ||
on_delete=models.CASCADE, | ||
) |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
from demo_multiple_fields_1_model import image_views | ||
from django.urls import path | ||
|
||
urlpatterns = [ | ||
path( | ||
"upload1/", | ||
image_views.MyImage1CreateView.as_view(), | ||
name="event-myimage1-upload", | ||
), | ||
path( | ||
"fetch1/", | ||
(image_views.MyImage1ListView.as_view()), | ||
name="event-myimage1-fetch", | ||
), | ||
path( | ||
"crop1/<int:pk>", | ||
image_views.MyImage1CropView.as_view(), | ||
name="event-myimage1-crop", | ||
), | ||
path( | ||
"upload2/", | ||
image_views.MyImage2CreateView.as_view(), | ||
name="event-myimage2-upload", | ||
), | ||
path( | ||
"fetch2/", | ||
(image_views.MyImage2ListView.as_view()), | ||
name="event-myimage2-fetch", | ||
), | ||
path( | ||
"crop2/<int:pk>", | ||
image_views.MyImage2CropView.as_view(), | ||
name="event-myimage2-crop", | ||
), | ||
] |
Empty file.