Add views count
This commit is contained in:
parent
e19776aae3
commit
dee6dcef3b
4 changed files with 29 additions and 10 deletions
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 5.1.4 on 2025-01-09 18:18
|
||||
# Generated by Django 5.1.4 on 2025-01-13 20:45
|
||||
|
||||
import datetime
|
||||
import django.db.models.deletion
|
||||
|
@ -63,6 +63,7 @@ class Migration(migrations.Migration):
|
|||
('exif', models.JSONField(blank=True, editable=False, null=True, verbose_name='Exif Metadata')),
|
||||
('is_favorite', models.BooleanField(default=False, verbose_name='Is Favorite')),
|
||||
('views', models.PositiveIntegerField(default=0, verbose_name='Views')),
|
||||
('likes', models.PositiveIntegerField(default=0, verbose_name='Likes')),
|
||||
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='gallery.album', verbose_name='Album')),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -33,6 +33,15 @@ class Photo(models.Model):
|
|||
exif = models.JSONField(blank=True, null=True, editable=False, verbose_name="Exif Metadata")
|
||||
is_favorite = models.BooleanField(default=False, verbose_name="Is Favorite")
|
||||
views = models.PositiveIntegerField(default=0, verbose_name="Views")
|
||||
likes = models.PositiveIntegerField(default=0, verbose_name="Likes")
|
||||
|
||||
def add_like(self):
|
||||
self.likes += 1
|
||||
self.save()
|
||||
|
||||
def add_view(self):
|
||||
self.views += 1
|
||||
self.save()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.exif_data = Exif(self.photo.path)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
{% block content %}
|
||||
|
||||
<h1>{{ photo.slug }}</h1>
|
||||
<p> Views: {{ photo.views }}</p>
|
||||
<img src="{{ photo.photo.url }}" alt="{{ photo.slug }}" class="height='100%'" />
|
||||
|
||||
{% endblock %}
|
|
@ -41,15 +41,23 @@ class AlbumDetail(DetailView):
|
|||
return context
|
||||
|
||||
|
||||
class PhotoDetail(DetailView):
|
||||
model = Photo
|
||||
template_name = 'gallery/photo_detail.html'
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
return get_object_or_404(Photo, slug=self.kwargs.get('photo_slug'))
|
||||
|
||||
|
||||
class PhotosList(ListView):
|
||||
model = Photo
|
||||
paginate_by = 30
|
||||
ordering = ['-taken_at']
|
||||
|
||||
|
||||
class PhotoDetail(DetailView):
|
||||
model = Photo
|
||||
slug_url_kwarg = 'photo_slug'
|
||||
template_name = 'gallery/photo_detail.html'
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
photo = get_object_or_404(Photo, slug=self.kwargs.get(self.slug_url_kwarg))
|
||||
|
||||
photo_key = f'photo_{photo.slug}'
|
||||
if photo_key not in self.request.session:
|
||||
photo.add_view()
|
||||
self.request.session[photo_key] = 0
|
||||
|
||||
return photo
|
||||
|
|
Loading…
Reference in a new issue