mirror of
https://github.com/boostorg/website-v2.git
synced 2026-01-19 04:42:17 +00:00
Add more info to captured email table and allow csv upload (#1998)
This commit is contained in:
@@ -75,6 +75,7 @@ INSTALLED_APPS += [
|
||||
"health_check.db",
|
||||
"health_check.contrib.celery",
|
||||
"imagekit",
|
||||
"import_export",
|
||||
"django_countries",
|
||||
# Allows authentication for Mailman
|
||||
"oauth2_provider",
|
||||
|
||||
@@ -1,9 +1,53 @@
|
||||
from django.contrib import admin
|
||||
from import_export.admin import ImportExportModelAdmin
|
||||
from import_export import resources, fields
|
||||
|
||||
from marketing.models import CapturedEmail
|
||||
|
||||
|
||||
class CapturedEmailResource(resources.ModelResource):
|
||||
email = fields.Field(column_name="Email", attribute="email")
|
||||
first_name = fields.Field(column_name="Name (First Name)", attribute="first_name")
|
||||
last_name = fields.Field(column_name="Name (Last Name)", attribute="last_name")
|
||||
mi = fields.Field(column_name="Name (M.I.)", attribute="mi")
|
||||
title = fields.Field(column_name="Title", attribute="title")
|
||||
company = fields.Field(column_name="Company", attribute="company")
|
||||
address_city = fields.Field(column_name="Address (City)", attribute="address_city")
|
||||
address_state = fields.Field(
|
||||
column_name="Address (State)", attribute="address_state"
|
||||
)
|
||||
address_country = fields.Field(
|
||||
column_name="Address (Country)", attribute="address_country"
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = CapturedEmail
|
||||
# Use email as the natural key so re-imports update instead of duplicating
|
||||
import_id_fields = ["email"]
|
||||
skip_unchanged = True
|
||||
report_skipped = True
|
||||
fields = (
|
||||
"email",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"mi",
|
||||
"title",
|
||||
"company",
|
||||
"address_city",
|
||||
"address_state",
|
||||
"address_country",
|
||||
)
|
||||
|
||||
|
||||
@admin.register(CapturedEmail)
|
||||
class CapturedEmailAdmin(admin.ModelAdmin):
|
||||
model = CapturedEmail
|
||||
list_display = ("email", "referrer", "page")
|
||||
class CapturedEmailAdmin(ImportExportModelAdmin):
|
||||
resource_class = CapturedEmailResource
|
||||
list_display = (
|
||||
"email",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"company",
|
||||
"address_city",
|
||||
"address_state",
|
||||
"address_country",
|
||||
)
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-04 22:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("marketing", "0002_detailpage_outreachhomepage_programpage_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="address_city",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="address_country",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="address_state",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="company",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="first_name",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="last_name",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="mi",
|
||||
field=models.CharField(blank=True, default="", verbose_name="M.I."),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="opted_out",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="capturedemail",
|
||||
name="title",
|
||||
field=models.CharField(blank=True, default=""),
|
||||
),
|
||||
]
|
||||
@@ -26,6 +26,16 @@ RICH_TEXT_FEATURES = [
|
||||
|
||||
class CapturedEmail(models.Model):
|
||||
email = models.EmailField()
|
||||
first_name = models.CharField(blank=True, default="")
|
||||
last_name = models.CharField(blank=True, default="")
|
||||
mi = models.CharField(blank=True, default="", verbose_name="M.I.")
|
||||
title = models.CharField(blank=True, default="")
|
||||
company = models.CharField(blank=True, default="")
|
||||
address_city = models.CharField(blank=True, default="")
|
||||
address_state = models.CharField(blank=True, default="")
|
||||
address_country = models.CharField(blank=True, default="")
|
||||
opted_out = models.BooleanField(default=False)
|
||||
|
||||
referrer = models.CharField(blank=True, default="")
|
||||
page = models.ForeignKey(
|
||||
Page,
|
||||
|
||||
@@ -10,6 +10,7 @@ django-db-geventpool
|
||||
django-extensions
|
||||
django-health-check
|
||||
django-imagekit
|
||||
django-import-export
|
||||
django-oauth-toolkit
|
||||
django-redis
|
||||
django-upgrade
|
||||
|
||||
@@ -109,6 +109,8 @@ cycler==0.12.1
|
||||
# via matplotlib
|
||||
decorator==5.2.1
|
||||
# via ipython
|
||||
diff-match-patch==20241021
|
||||
# via django-import-export
|
||||
defusedxml==0.7.1
|
||||
# via willow
|
||||
distlib==0.4.0
|
||||
@@ -132,6 +134,7 @@ django==5.2.8
|
||||
# django-filter
|
||||
# django-haystack
|
||||
# django-health-check
|
||||
# django-import-export
|
||||
# django-js-asset
|
||||
# django-modelcluster
|
||||
# django-oauth-toolkit
|
||||
@@ -177,6 +180,8 @@ django-health-check==3.20.0
|
||||
# via -r ./requirements.in
|
||||
django-imagekit==6.0.0
|
||||
# via -r ./requirements.in
|
||||
django-import-export==4.3.13
|
||||
# via -r ./requirements.in
|
||||
django-js-asset==3.1.2
|
||||
# via django-mptt
|
||||
django-modelcluster==6.4
|
||||
@@ -483,6 +488,8 @@ stack-data==0.6.3
|
||||
# via ipython
|
||||
structlog==25.5.0
|
||||
# via -r ./requirements.in
|
||||
tablib==3.9.0
|
||||
# via django-import-export
|
||||
tabulate==0.9.0
|
||||
# via interrogate
|
||||
telepath==0.3.1
|
||||
|
||||
Reference in New Issue
Block a user