Edit admin interface

master
Tait Hoyem 3 years ago
parent aafc478a29
commit eea0aca07c

@ -1,3 +1,16 @@
from django.contrib import admin
from . import models
# Register your models here.
@admin.register(models.BCCEmail)
class BCCEmailAdmin(admin.ModelAdmin):
pass
@admin.register(models.CCEmail)
class CCEmailAdmin(admin.ModelAdmin):
pass
@admin.register(models.PDF)
class PDFAdmin(admin.ModelAdmin):
list_display = ['address', 'upload_date']

@ -0,0 +1,35 @@
# Generated by Django 3.1.4 on 2020-12-04 21:07
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('download', '0012_auto_20201109_2106'),
]
operations = [
migrations.CreateModel(
name='BCCEmail',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('email', models.CharField(max_length=64)),
('active', models.BooleanField(default=False)),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='CCEmail',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('email', models.CharField(max_length=64)),
('active', models.BooleanField(default=False)),
],
options={
'abstract': False,
},
),
]

@ -13,6 +13,9 @@ class Address(models.Model):
'id': self.id
}
def __str__(self):
return self.address
class PDF(models.Model):
path = models.CharField(max_length=64)
code = models.CharField(max_length=8)
@ -21,6 +24,9 @@ class PDF(models.Model):
upload_date = models.DateTimeField(auto_now_add=True, editable=False, null=False, blank=False)
valid = models.BooleanField()
def __str__(self):
return self.address.address
class EmailSent(models.Model):
timestamp = models.DateTimeField(auto_now_add=True, editable=False, null=False, blank=False)
user = models.ForeignKey(QuoteUser, on_delete=models.CASCADE)
@ -34,4 +40,19 @@ class DownloadAttempt(models.Model):
code_correct = models.BooleanField(default=False)
pdf = models.ForeignKey(PDF, on_delete=models.CASCADE, related_name='attempts')
ip = models.GenericIPAddressField()
geolocation = models.CharField(max_length=64)
geolocation = models.CharField(max_length=64)
class AbstractEmail(models.Model):
email = models.CharField(max_length=64)
active = models.BooleanField(default=False)
class Meta:
abstract = True
def __str__(self):
return self.email
class CCEmail(AbstractEmail):
pass
class BCCEmail(AbstractEmail):
pass

@ -1,7 +1,7 @@
from django.shortcuts import render, HttpResponse
from django.http import FileResponse
from django.core.mail import EmailMultiAlternatives
from .models import Address, PDF, EmailSent, DownloadAttempt
from .models import Address, PDF, EmailSent, DownloadAttempt, CCEmail, BCCEmail
from .forms import CodeForm
from core.models import QuoteUser
from django.template.loader import render_to_string
@ -14,6 +14,12 @@ import os
IPINFO_HANDLER = ipinfo.getHandler()
def get_cc_emails():
return [x.email for x in CCEmail.objects.filter(active=True)]
def get_bcc_emails():
return [x.email for x in BCCEmail.objects.filter(active=True)]
# https://stackoverflow.com/a/4581997
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
@ -56,7 +62,8 @@ def send_email(to, addr, pdf, dt_date):
'address': addr.address,
'datetime': dt_date.strftime("%d/%m/%Y %H:%M:%S")
}
email.bcc = [settings.REQUEST_BCC]
email.bcc = get_bcc_emails()
email.cc = get_cc_emails()
email.body = render_to_string('download/email/quote.txt', context)
email.attach_alternative(render_to_string('download/email/quote.html', context), 'text/html')
with open(str(pdf.upload_file), 'rb') as f:

@ -18,6 +18,8 @@ from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
admin.site.site_header = 'Bahn Projects Quote System Administration'
urlpatterns = [
path('admin/', admin.site.urls),
path('download/', include('download.urls')),

Loading…
Cancel
Save