From 1dd4ac8088f8c649e2ed142f3c49cf42e57c52a1 Mon Sep 17 00:00:00 2001 From: TheOrangeOne Date: Tue, 6 Sep 2016 08:49:02 +0100 Subject: [PATCH] create basic POC views --- project/files/urls.py | 7 +++++++ project/files/views.py | 26 ++++++++++++++++++++++++-- project/urls.py | 5 +++-- templates/file.html | 8 ++++++++ 4 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 project/files/urls.py create mode 100644 templates/file.html diff --git a/project/files/urls.py b/project/files/urls.py new file mode 100644 index 0000000..4c8782b --- /dev/null +++ b/project/files/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url +from . import views + +urlpatterns = [ + url(r'^(?P.*)/(?P.*)/$', views.file_download, name="file_download"), + url(r'^(?P.*)/$', views.SharedFileDetails.as_view(), name="file"), +] diff --git a/project/files/views.py b/project/files/views.py index 91ea44a..3f686ef 100644 --- a/project/files/views.py +++ b/project/files/views.py @@ -1,3 +1,25 @@ -from django.shortcuts import render +from django.views.generic import TemplateView +from django.shortcuts import get_object_or_404 +from django.http import HttpResponse +from .models import SharedFile, FileToken +import datetime +from django.utils import timezone -# Create your views here. + +class SharedFileDetails(TemplateView): + template_name = "file.html" + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['file'] = get_object_or_404(SharedFile, short_id=kwargs['id']) + context['token'] = FileToken.objects.create(file=context['file']) + return context + + +def file_download(request, token, id): + time_threshold = timezone.now() - FileToken.valid_time + FileToken.objects.filter(created__lt=time_threshold) + file = get_object_or_404(SharedFile, short_id=id) + token = get_object_or_404(FileToken, token=token, file=file) + token.delete() # delete after used + return HttpResponse(file.file.name) diff --git a/project/urls.py b/project/urls.py index 450b502..739d638 100644 --- a/project/urls.py +++ b/project/urls.py @@ -1,12 +1,13 @@ from django.conf.urls import include, url from django.contrib import admin from django.contrib.staticfiles.urls import staticfiles_urlpatterns - +from project.files import views urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^admin_resumable/', include('admin_resumable.urls')), - url(r'', include("project.pages.urls", namespace="pages")) + url(r'^files/', include('project.files.urls', namespace="files")) + url(r'', include("project.pages.urls", namespace="pages")), ] diff --git a/templates/file.html b/templates/file.html new file mode 100644 index 0000000..fde7141 --- /dev/null +++ b/templates/file.html @@ -0,0 +1,8 @@ +{% extends 'base.html' %} + +{% block title %}file {{ file.get_original_filename }}{% endblock %} + +{% block content %} +

{{ file }}

+

{{ token.token }}

+{% endblock %}