Compare commits

...

5 Commits

19 changed files with 192 additions and 6 deletions

3
.gitignore vendored
View File

@ -131,6 +131,9 @@ env.bak/
venv.bak/ venv.bak/
testappenv/ testappenv/
#Directories
media/
# Spyder project settings # Spyder project settings
.spyderproject .spyderproject
.spyproject .spyproject

4
copyStaticScrips.sh Normal file
View File

@ -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

View File

@ -1,4 +1,5 @@
from django.contrib import admin from django.contrib import admin
from .models import Post from .models import Post, ConusFilePDF
# Register your models here. # Register your models here.
admin.site.register(Post) admin.site.register(Post)
admin.site.register(ConusFilePDF)

View File

@ -6,3 +6,8 @@ class CreatePost(forms.ModelForm):
model = models.Post model = models.Post
fields = ['title' , 'body' , 'slug' , 'banner'] fields = ['title' , 'body' , 'slug' , 'banner']
class UploadFileForm(forms.ModelForm):
class Meta:
model=models.ConusFilePDF
fields = [ 'fileName', 'file']

View File

@ -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/')),
],
),
]

View File

@ -1,5 +1,6 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from dynamic_filenames import FilePattern
# Create your models here. # Create your models here.
class Post(models.Model): class Post(models.Model):
@ -13,5 +14,11 @@ class Post(models.Model):
def __str__(self): def __str__(self):
return self.title return self.title
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/")
file = models.FileField(upload_to=upload_to_pattern)

View File

@ -0,0 +1,23 @@
{% extends 'layout.html' %}
{% block title %}
PDF
{% endblock %}
{% block content %}
<section>
<h1>PDFs</h1>
{% for pdf in pdfs %}
<article class="post">
<h2>
<a href="{{ pdf.file.url }}">
{{ pdf.fileName }}
</a>
</h2>
</article>
{% endfor %}
</section>
{% endblock %}

View File

@ -0,0 +1,16 @@
{% extends 'layout.html' %}
{% block title %}
New PDF
{% endblock %}
{% block content %}
<section>
<h1>New PDFt</h1>
<form class="form-with-validation" action="{% url 'post:pdf_page' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button class="form-submit">Add Post</button>
</form>
</section>
{% endblock %}

View File

@ -6,6 +6,9 @@ app_name = 'post'
urlpatterns = [ urlpatterns = [
path('', views.post_list, name="list"), path('', views.post_list, name="list"),
path('new-post/', views.post_new, name="new-post"), path('new-post/', views.post_new, name="new-post"),
path('<slug:slug>', views.post_page, name="page"), path('pdf/', views.pdf_page, name="pdf_page"),
path('pdf-list', views.pdf_list, name="pdf_list"),
path('<slug:slug>', views.post_page, name="page")
] ]

View File

@ -1,5 +1,5 @@
from django.shortcuts import render,redirect from django.shortcuts import render,redirect
from .models import Post from .models import Post, ConusFilePDF
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from . import forms from . import forms
@ -26,3 +26,20 @@ def post_new(request):
else: else:
form = forms.CreatePost() form = forms.CreatePost()
return render(request, 'post/post_new.html', {'form': form}) 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})
def pdf_list(request):
pdfs = ConusFilePDF.objects.all()
return render(request, 'post/pdf_list.html', {'pdfs': pdfs})

0
products/__init__.py Normal file
View File

3
products/admin.py Normal file
View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
products/apps.py Normal file
View File

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ProductsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'products'

View File

68
products/models.py Normal file
View File

@ -0,0 +1,68 @@
from django.db import models
# Create your models here.
class Chapter(models.Model): # chapter first hirachical element Osterosynthese
id = models.IntegerField(primary_key=True) #SetPrimarykey
title = models.CharField(max_length=100) # or name
icon = models.ImageField(default='fallback.png', blank=True)
def __str__(self):
return self.title
class Section(models.Model):# second hirachical element # Oberarm
id = models.IntegerField(primary_key=True) #SetPrimarykey
title = models.CharField(max_length=100) # or name
icon = models.ImageField(default='fallback.png', blank=True)
def __str__(self):
return self.title
class Subsection(models.Model):#Proximaler Oberarm
id = models.IntegerField(primary_key=True) #SetPrimarykey
title = models.CharField(max_length=100) # or name
icon = models.ImageField(default='fallback.png', blank=True)
def __str__(self):
return self.title
class ProductType(models.Model): #Platte
id = models.IntegerField(primary_key=True) #SetPrimarykey
title = models.CharField(max_length=100) # or name
icon = models.ImageField(default='fallback.png', blank=True)
class Manufacturer(models.Model):
id = models.IntegerField(primary_key=True) #SetPrimarykey
name = models.CharField(max_length=100) # or name
icon = models.ImageField(default='fallback.png', blank=True)
class ContactPerson
class Product(models.Model):
id = models.IntegerField(primary_key=True)
ProductType = models.ManyToOneRel(ProductType)
chaper = models.ManyToManyField(Chapter)
section = models.ManyToManyField(Section)
subsection = models.ManyToManyField(Subsection)
title = models.CharField(max_length=75)
name = models.CharField(max_length=75)
description = models.TextField()
slug = models.SlugField()
date = models.DateTimeField(auto_now_add=True)
banner = models.ImageField(default='fallback.png', blank=True)
manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE, default=None) #Kritisch wenn conus medical products are linked to User.objects.get(username='root')company and compony is deleted all products are deleted.
def __str__(self):
return self.title
"""
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/")
file = models.FileField(upload_to=upload_to_pattern)
"""

3
products/tests.py Normal file
View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
products/views.py Normal file
View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@ -7,4 +7,6 @@
{% block content %} {% block content %}
<h1>Home</h1> <h1>Home</h1>
<p>Check out my <a href="/about">About</a> page.</p> <p>Check out my <a href="/about">About</a> page.</p>
<p>Upload a new PDF <a href="{% url 'post:pdf_page' %}">click here</a></p>
<p>show pdfs <a href="{% url 'post:pdf_list' %}">click here</a></p>
{% endblock %} {% endblock %}

View File

@ -71,6 +71,7 @@ TEMPLATES = [
WSGI_APPLICATION = 'testapp.wsgi.application' WSGI_APPLICATION = 'testapp.wsgi.application'
CSRF_TRUSTED_ORIGINS = ['https://develop.artemisneo.com']
# Database # Database
# https://docs.djangoproject.com/en/5.1/ref/settings/#databases # https://docs.djangoproject.com/en/5.1/ref/settings/#databases