photo-objects 0.10.0__py3-none-any.whl → 0.10.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,10 @@ from .models import Album, Photo, PhotoChangeRequest
20
20
  KEY_POSTFIX_CHARS = 'bcdfghjklmnpqrstvwxz2456789'
21
21
  KEY_POSTFIX_LEN = 5
22
22
 
23
+ ALBUM_TITLE_HELP = _(
24
+ 'When creating a new album, album key is generated based on the title. '
25
+ 'Modifying the title later does not change the album key.'
26
+ )
23
27
  ALT_TEXT_HELP = _('Alternative text content for the photo.')
24
28
 
25
29
 
@@ -37,6 +41,44 @@ def description_help(resource):
37
41
  }
38
42
 
39
43
 
44
+ def visibility_help(visibility: str):
45
+ visibility = Album.Visibility(visibility)
46
+ if visibility == Album.Visibility.PUBLIC:
47
+ return _(
48
+ 'The album is visible to anyone without authentication.')
49
+ if visibility == Album.Visibility.HIDDEN:
50
+ return _(
51
+ 'The album is visible to anyone with the link. Only '
52
+ 'authenticated users can see the album in albums list.')
53
+ if visibility == Album.Visibility.PRIVATE:
54
+ return _(
55
+ 'The album is only visible to authenticated users.')
56
+ if visibility == Album.Visibility.ADMIN:
57
+ return _(
58
+ 'The album is only visible to admin users.')
59
+ return None
60
+
61
+
62
+ class VisibilityRadioSelect(RadioSelect):
63
+ def create_option(
64
+ self, name, value, label, selected, index, subindex=None, attrs=None
65
+ ):
66
+ option = super().create_option(
67
+ name,
68
+ value,
69
+ label,
70
+ selected,
71
+ index,
72
+ subindex=subindex,
73
+ attrs=attrs)
74
+ option['label'] = mark_safe(f'''
75
+ <div>
76
+ <span class="label">{label}</span>
77
+ <p class="helptext">{visibility_help(option.get('value'))}</p>
78
+ </div>''')
79
+ return option
80
+
81
+
40
82
  def _check_admin_visibility(form):
41
83
  if form.user and form.user.is_staff:
42
84
  return
@@ -60,7 +102,10 @@ class CreateAlbumForm(ModelForm):
60
102
  fields = ['key', 'title', 'description', 'visibility']
61
103
  help_texts = {
62
104
  **description_help('album'),
105
+ 'title': ALBUM_TITLE_HELP,
63
106
  }
107
+ widgets = {'visibility': VisibilityRadioSelect(
108
+ attrs={'class': 'visibility-select'}), }
64
109
 
65
110
  def __init__(self, *args, user=None, **kwargs):
66
111
  super().__init__(*args, **kwargs)
@@ -136,9 +181,15 @@ class ModifyAlbumForm(ModelForm):
136
181
  'cover_photo': _(
137
182
  'Select a cover photo for the album. The cover photo is '
138
183
  'visible on the albums list page and in album preview image.'),
184
+ 'title': ALBUM_TITLE_HELP,
139
185
  }
140
186
  widgets = {
141
- 'cover_photo': RadioSelect(attrs={'class': 'photo-select'}),
187
+ 'cover_photo': RadioSelect(
188
+ attrs={
189
+ 'class': 'photo-select'}),
190
+ 'visibility': VisibilityRadioSelect(
191
+ attrs={
192
+ 'class': 'visibility-select'}),
142
193
  }
143
194
 
144
195
  def __init__(self, *args, user=None, **kwargs):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: photo-objects
3
- Version: 0.10.0
3
+ Version: 0.10.2
4
4
  Summary: Application for storing photos in S3 compatible object-storage.
5
5
  Author: Toni Kangas
6
6
  License: MIT License
@@ -8,7 +8,7 @@ photo_objects/django/admin.py,sha256=pvyQKs2FMtKtSS2PE_NKR_jsSi7-GKz3bbsqDNgjt6w
8
8
  photo_objects/django/apps.py,sha256=Apqu6o6fpoxda18NQgKupvQRvTAZxVviIK_-dUR3rck,1444
9
9
  photo_objects/django/conf.py,sha256=ZpeIulEc1tpr8AO52meNKOF30Xf5osbDtDyHvQRtkx4,2593
10
10
  photo_objects/django/context_processors.py,sha256=XacUmcYV-4NMMMNXPWrHKdvNd6lfyamisngaVerREiU,306
11
- photo_objects/django/forms.py,sha256=HIkDRQhSMzvj0D4BdKEuEndB3bV-3NTH_h0gMRQ9UlQ,6123
11
+ photo_objects/django/forms.py,sha256=DWCnVEznev3h5ztYXz0gjMGZ8QUwlqML4KUKHcUiiZ4,7848
12
12
  photo_objects/django/models.py,sha256=OxkkczIBg7TaFWWm4VdtbRMJOK_OQKrV29g-X2cm5BQ,7247
13
13
  photo_objects/django/objsto.py,sha256=kf-Tv-kDt47Mnx0xMolAct_lP4M0H9xg03M3BnfAnJM,6909
14
14
  photo_objects/django/signals.py,sha256=_gb4vlZkeFNYWXxwhNreaUJoOsbIWvP8OovVLtzepaE,2161
@@ -59,8 +59,8 @@ photo_objects/django/views/ui/photo.py,sha256=EOu43klthhmG6ysCrw2NWb7Vcz8I3FBR6G
59
59
  photo_objects/django/views/ui/photo_change_request.py,sha256=PGP98APOVTkTw3FTvzYn92BBshensFwA8U0w8l1vIjg,2127
60
60
  photo_objects/django/views/ui/users.py,sha256=ABAtKwNoViYy2ht6X313BSm6wgvL302LVUNimp43gxc,649
61
61
  photo_objects/django/views/ui/utils.py,sha256=fAEgG6cdL_u9TBLWgqQGG8zC0RX1a-9vC6C06ST7InM,823
62
- photo_objects-0.10.0.dist-info/licenses/LICENSE,sha256=V3w6hTjXfP65F4r_mejveHcV5igHrblxao3-2RlfVlA,1068
63
- photo_objects-0.10.0.dist-info/METADATA,sha256=NoIKg2yngg8mybPuaHUl336sipa2ftiG7JSWJWxJzOo,3616
64
- photo_objects-0.10.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
- photo_objects-0.10.0.dist-info/top_level.txt,sha256=SZeL8mhf-WMGdhRtTGFvZc3aIRBboQls9O0cFDMGdQ0,14
66
- photo_objects-0.10.0.dist-info/RECORD,,
62
+ photo_objects-0.10.2.dist-info/licenses/LICENSE,sha256=V3w6hTjXfP65F4r_mejveHcV5igHrblxao3-2RlfVlA,1068
63
+ photo_objects-0.10.2.dist-info/METADATA,sha256=q_Nk6If3razFXjshLRH0swB4m1OcqG6pgeugr3g5USU,3616
64
+ photo_objects-0.10.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
+ photo_objects-0.10.2.dist-info/top_level.txt,sha256=SZeL8mhf-WMGdhRtTGFvZc3aIRBboQls9O0cFDMGdQ0,14
66
+ photo_objects-0.10.2.dist-info/RECORD,,