diff --git a/shares/migrations/0001_initial.py b/shares/migrations/0001_initial.py index 0242f0720ce075435b073950bc5ee5b579804448..8f2c55191eb269010c343888a97e1e8f8b28d3cb 100644 --- a/shares/migrations/0001_initial.py +++ b/shares/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.6 on 2021-08-26 14:26 +# Generated by Django 3.2.6 on 2021-08-26 14:41 import datetime from django.conf import settings @@ -23,7 +23,7 @@ class Migration(migrations.Migration): ('created_on', models.DateTimeField(db_index=True, default=datetime.datetime.now, verbose_name='Created on')), ('pwd_hash', models.CharField(max_length=64, verbose_name='Hashed password salt')), ('resource', models.TextField(verbose_name='Resource')), - ('used', models.BooleanField(default=False, verbose_name='Has been used?')), + ('times_used', models.IntegerField(default=0, verbose_name='Visit count')), ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Creator')), ], ), diff --git a/shares/models.py b/shares/models.py index 0c6e9f517e91e32adb4c37ec4fe4740eb80dbd17..d88d3a5e3e2da6d76f1091d76fbcd19b253d3cc1 100644 --- a/shares/models.py +++ b/shares/models.py @@ -30,7 +30,7 @@ class Share(models.Model): pwd_hash = models.CharField(max_length=64, verbose_name='Hashed password salt') # this is either an URL or a f'{UUID}.real_file_name' in /data resource = models.TextField(verbose_name='Resource') - used = models.BooleanField(verbose_name='Has been used?', default=False) + times_used = models.IntegerField(verbose_name='Visit count', default=0) @property def file_name(self) -> str: diff --git a/shares/templates/share/view.html b/shares/templates/share/view.html index 8d2d8dab8551cb64fb40bf5eed171048c2131a72..3f03d24a68b3b1db1bdbde4ee635c6201042382f 100644 --- a/shares/templates/share/view.html +++ b/shares/templates/share/view.html @@ -4,6 +4,9 @@ {% block head %} {% endblock %} {% block body %} + {% if invalid_password %} + <em>The password that you provided was invalid!</em> + {% endif %} <form class="form-group text-left" role="form" action="/shares/{{ share_id }}" method="POST"> {% csrf_token %} {{ form.as_p }} diff --git a/shares/views.py b/shares/views.py index 3ed8c745289c4f0f55101f4af592b625d9c11d5b..f68746668c782e9e51c1c22172e75ef11e3f39a9 100644 --- a/shares/views.py +++ b/shares/views.py @@ -123,7 +123,8 @@ def view_share(request, share_id: str): try: if share.share_type == SHARE_URL: links_visited.runtime(+1) - return redirect(share.resource) + return render(request, 'share/view.html', {'form': form, 'share_id': share_id, + 'invalid_password': True}) else: if not os.path.exists(share.path): raise Http404() @@ -145,7 +146,7 @@ def view_share(request, share_id: str): 'Content-Disposition': cd }) finally: - share.used = True + share.times_used += 1 share.save() else: form = PasswordForm()