From b19c7ab4485c523eaf41e50b71527bb8272906ab Mon Sep 17 00:00:00 2001 From: Alexander Schulz Date: Sat, 31 Aug 2024 01:29:03 +0200 Subject: [PATCH 1/3] pdf upload works --- .gitignore | 3 +++ post/admin.py | 5 +++-- post/forms.py | 5 +++++ post/migrations/0009_conusfilepdf.py | 21 +++++++++++++++++++++ post/models.py | 6 +++++- post/templates/post/pdf_page.html | 16 ++++++++++++++++ post/urls.py | 4 +++- post/views.py | 14 +++++++++++++- templates/home.html | 2 ++ 9 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 post/migrations/0009_conusfilepdf.py create mode 100644 post/templates/post/pdf_page.html diff --git a/.gitignore b/.gitignore index b9f1e6d..278bd79 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,9 @@ env.bak/ venv.bak/ testappenv/ +#Directories +media/ + # Spyder project settings .spyderproject .spyproject diff --git a/post/admin.py b/post/admin.py index 28e3125..fb88761 100644 --- a/post/admin.py +++ b/post/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin -from .models import Post +from .models import Post, ConusFilePDF # Register your models here. -admin.site.register(Post) \ No newline at end of file +admin.site.register(Post) +admin.site.register(ConusFilePDF) \ No newline at end of file diff --git a/post/forms.py b/post/forms.py index fad483c..a719b9c 100644 --- a/post/forms.py +++ b/post/forms.py @@ -6,3 +6,8 @@ class CreatePost(forms.ModelForm): model = models.Post fields = ['title' , 'body' , 'slug' , 'banner'] + +class UploadFileForm(forms.ModelForm): + class Meta: + model=models.ConusFilePDF + fields = [ 'fileName', 'file'] \ No newline at end of file diff --git a/post/migrations/0009_conusfilepdf.py b/post/migrations/0009_conusfilepdf.py new file mode 100644 index 0000000..dae4446 --- /dev/null +++ b/post/migrations/0009_conusfilepdf.py @@ -0,0 +1,21 @@ +# Generated by Django 5.1 on 2024-08-30 23:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('post', '0008_post_author'), + ] + + operations = [ + migrations.CreateModel( + name='ConusFilePDF', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fileName', models.CharField(max_length=32)), + ('file', models.FileField(upload_to='PDFuploads/')), + ], + ), + ] diff --git a/post/models.py b/post/models.py index 7a927cd..0058cf5 100644 --- a/post/models.py +++ b/post/models.py @@ -13,5 +13,9 @@ class Post(models.Model): def __str__(self): return self.title +def user_directory_path(instance, filename): + return "user_{0}/{1}".format(instance.user.id, filename) - +class ConusFilePDF(models.Model): + fileName = models.CharField(max_length=32) + file = models.FileField(upload_to="PDFuploads/") \ No newline at end of file diff --git a/post/templates/post/pdf_page.html b/post/templates/post/pdf_page.html new file mode 100644 index 0000000..0681f16 --- /dev/null +++ b/post/templates/post/pdf_page.html @@ -0,0 +1,16 @@ +{% extends 'layout.html' %} + +{% block title %} + New PDF +{% endblock %} + +{% block content %} +
+

New PDFt

+
+ {% csrf_token %} + {{ form }} + +
+
+{% endblock %} \ No newline at end of file diff --git a/post/urls.py b/post/urls.py index 830e45c..50300e7 100644 --- a/post/urls.py +++ b/post/urls.py @@ -6,6 +6,8 @@ app_name = 'post' urlpatterns = [ path('', views.post_list, name="list"), path('new-post/', views.post_new, name="new-post"), - path('', views.post_page, name="page"), + path('pdf/', views.pdf_page, name="pdf_page"), + path('', views.post_page, name="page") + ] \ No newline at end of file diff --git a/post/views.py b/post/views.py index 7c30a87..8abf0ce 100644 --- a/post/views.py +++ b/post/views.py @@ -25,4 +25,16 @@ def post_new(request): return redirect('post:list') else: form = forms.CreatePost() - return render(request, 'post/post_new.html', {'form': form}) \ No newline at end of file + return render(request, 'post/post_new.html', {'form': form}) + + +def pdf_page(request): + if request.method == "POST": + form = forms.UploadFileForm(request.POST, request.FILES) + if form.is_valid(): + #Handleuploaded file + form.save() + return redirect('post:pdf_page') + else: + form = forms.UploadFileForm() + return render(request, 'post/pdf_page.html', {'form' : form}) \ No newline at end of file diff --git a/templates/home.html b/templates/home.html index bb50031..4caf547 100644 --- a/templates/home.html +++ b/templates/home.html @@ -7,4 +7,6 @@ {% block content %}

Home

Check out my About page.

+

Upload a new PDF click here

+

show pdfs click here

{% endblock %} \ No newline at end of file From 3d8803a54bd40d0ec45a47dca499164f470dec47 Mon Sep 17 00:00:00 2001 From: Alexander Schulz Date: Sat, 31 Aug 2024 12:46:16 +0200 Subject: [PATCH 2/3] added CSRF Trusted origins instead csrf test failes after reverse proxy --- testapp/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/testapp/settings.py b/testapp/settings.py index 60e0f48..14573bc 100644 --- a/testapp/settings.py +++ b/testapp/settings.py @@ -71,6 +71,7 @@ TEMPLATES = [ WSGI_APPLICATION = 'testapp.wsgi.application' +CSRF_TRUSTED_ORIGINS = ['https://develop.artemisneo.com'] # Database # https://docs.djangoproject.com/en/5.1/ref/settings/#databases From 69c723d20d10eade68d9fd5cff87e4e4a40eb7a4 Mon Sep 17 00:00:00 2001 From: Alexander Schulz Date: Sat, 31 Aug 2024 15:56:15 +0200 Subject: [PATCH 3/3] added pdf liste and pdf can now be viewed. added filname uuid added copy static script --- copyStaticScrips.sh | 4 ++++ post/models.py | 5 ++++- post/templates/post/pdf_list.html | 23 +++++++++++++++++++++++ post/urls.py | 1 + post/views.py | 9 +++++++-- templates/home.html | 2 +- 6 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 copyStaticScrips.sh create mode 100644 post/templates/post/pdf_list.html diff --git a/copyStaticScrips.sh b/copyStaticScrips.sh new file mode 100644 index 0000000..6a43603 --- /dev/null +++ b/copyStaticScrips.sh @@ -0,0 +1,4 @@ +rm -d -r /var/www/testapp/ +mkdir /var/www/testapp +cp -a /root/appdirectory/assets/. /var/www/testapp/static +chown -R www-data:www-data /var/www diff --git a/post/models.py b/post/models.py index 0058cf5..c9e7905 100644 --- a/post/models.py +++ b/post/models.py @@ -1,5 +1,6 @@ from django.db import models from django.contrib.auth.models import User +from dynamic_filenames import FilePattern # Create your models here. class Post(models.Model): @@ -16,6 +17,8 @@ class Post(models.Model): def user_directory_path(instance, filename): return "user_{0}/{1}".format(instance.user.id, filename) +upload_to_pattern = FilePattern(filename_pattern='PDFuploads/{app_label:.25}/{model_name:.30}/{uuid:base32}{ext}') class ConusFilePDF(models.Model): fileName = models.CharField(max_length=32) - file = models.FileField(upload_to="PDFuploads/") \ No newline at end of file + #file = models.FileField(upload_to="PDFuploads/") + file = models.FileField(upload_to=upload_to_pattern) \ No newline at end of file diff --git a/post/templates/post/pdf_list.html b/post/templates/post/pdf_list.html new file mode 100644 index 0000000..bac16c5 --- /dev/null +++ b/post/templates/post/pdf_list.html @@ -0,0 +1,23 @@ +{% extends 'layout.html' %} + +{% block title %} + PDF +{% endblock %} + +{% block content %} +
+

PDFs

+ + {% for pdf in pdfs %} + + {% endfor %} +
+{% endblock %} \ No newline at end of file diff --git a/post/urls.py b/post/urls.py index 50300e7..caec112 100644 --- a/post/urls.py +++ b/post/urls.py @@ -7,6 +7,7 @@ urlpatterns = [ path('', views.post_list, name="list"), path('new-post/', views.post_new, name="new-post"), path('pdf/', views.pdf_page, name="pdf_page"), + path('pdf-list', views.pdf_list, name="pdf_list"), path('', views.post_page, name="page") diff --git a/post/views.py b/post/views.py index 8abf0ce..a1fca85 100644 --- a/post/views.py +++ b/post/views.py @@ -1,5 +1,5 @@ from django.shortcuts import render,redirect -from .models import Post +from .models import Post, ConusFilePDF from django.contrib.auth.decorators import login_required from . import forms @@ -37,4 +37,9 @@ def pdf_page(request): return redirect('post:pdf_page') else: form = forms.UploadFileForm() - return render(request, 'post/pdf_page.html', {'form' : form}) \ No newline at end of file + return render(request, 'post/pdf_page.html', {'form' : form}) + + +def pdf_list(request): + pdfs = ConusFilePDF.objects.all() + return render(request, 'post/pdf_list.html', {'pdfs': pdfs}) \ No newline at end of file diff --git a/templates/home.html b/templates/home.html index 4caf547..8165290 100644 --- a/templates/home.html +++ b/templates/home.html @@ -8,5 +8,5 @@

Home

Check out my About page.

Upload a new PDF click here

-

show pdfs click here

+

show pdfs click here

{% endblock %} \ No newline at end of file