Compare commits
2 commits
f21987158b
...
4b74f5d04b
Author | SHA1 | Date | |
---|---|---|---|
4b74f5d04b | |||
ec6a9a7cc1 |
8 changed files with 217 additions and 82 deletions
|
@ -1,6 +1,9 @@
|
||||||
Changelog
|
Changelog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
* :release:`0.15.0 <2023-07-23>
|
||||||
|
* :feature:`10` add disk usage details for mail and web
|
||||||
|
|
||||||
* :release:`0.14.4 <2023-07-22>`
|
* :release:`0.14.4 <2023-07-22>`
|
||||||
* :bug:`-` add customer to disk space detail view
|
* :bug:`-` add customer to disk space detail view
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# import celery_app to initialize it
|
# import celery_app to initialize it
|
||||||
from gnuviechadmin.celery import app as celery_app # NOQA
|
from gnuviechadmin.celery import app as celery_app # NOQA
|
||||||
|
|
||||||
__version__ = "0.14.4"
|
__version__ = "0.15.0"
|
||||||
|
|
|
@ -7,8 +7,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnuviechadmin hostingpackages\n"
|
"Project-Id-Version: gnuviechadmin hostingpackages\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-07-22 20:06+0200\n"
|
"POT-Creation-Date: 2023-07-23 10:23+0200\n"
|
||||||
"PO-Revision-Date: 2023-07-22 20:06+0200\n"
|
"PO-Revision-Date: 2023-07-23 10:24+0200\n"
|
||||||
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
"Last-Translator: Jan Dittberner <jan@dittberner.info>\n"
|
||||||
"Language-Team: Jan Dittberner <jan@dittberner.info>\n"
|
"Language-Team: Jan Dittberner <jan@dittberner.info>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
|
@ -167,78 +167,100 @@ msgstr "Kundenhostingpakete"
|
||||||
msgid "{name} for {customer}"
|
msgid "{name} for {customer}"
|
||||||
msgstr "{name} für {customer}"
|
msgstr "{name} für {customer}"
|
||||||
|
|
||||||
#: hostingpackages/models.py:419 hostingpackages/models.py:446
|
#: hostingpackages/models.py:421 hostingpackages/models.py:448
|
||||||
#: hostingpackages/models.py:511
|
#: hostingpackages/models.py:513
|
||||||
msgid "hosting package"
|
msgid "hosting package"
|
||||||
msgstr "Hostingpaket"
|
msgstr "Hostingpaket"
|
||||||
|
|
||||||
#: hostingpackages/models.py:424
|
#: hostingpackages/models.py:426
|
||||||
msgid "hosting domain"
|
msgid "hosting domain"
|
||||||
msgstr "Hostingdomain"
|
msgstr "Hostingdomain"
|
||||||
|
|
||||||
#: hostingpackages/models.py:451
|
#: hostingpackages/models.py:453
|
||||||
msgid "customer hosting option"
|
msgid "customer hosting option"
|
||||||
msgstr "kundenspezifische Hostingoption"
|
msgstr "kundenspezifische Hostingoption"
|
||||||
|
|
||||||
#: hostingpackages/models.py:452
|
#: hostingpackages/models.py:454
|
||||||
msgid "customer hosting options"
|
msgid "customer hosting options"
|
||||||
msgstr "kundenspezifische Hostingoptionen"
|
msgstr "kundenspezifische Hostingoptionen"
|
||||||
|
|
||||||
#: hostingpackages/models.py:464
|
#: hostingpackages/models.py:466
|
||||||
msgid "disk space option template"
|
msgid "disk space option template"
|
||||||
msgstr "Speicherplatzoptionsvorlage"
|
msgstr "Speicherplatzoptionsvorlage"
|
||||||
|
|
||||||
#: hostingpackages/models.py:466
|
#: hostingpackages/models.py:468
|
||||||
msgid "The disk space option template that this disk space option is based on"
|
msgid "The disk space option template that this disk space option is based on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Speicherplatzoptionsvorlage auf der diese Speicherplatzoption aufgebaut "
|
"Die Speicherplatzoptionsvorlage auf der diese Speicherplatzoption aufgebaut "
|
||||||
"ist"
|
"ist"
|
||||||
|
|
||||||
#: hostingpackages/models.py:481
|
#: hostingpackages/models.py:483
|
||||||
msgid "user database option template"
|
msgid "user database option template"
|
||||||
msgstr "Nutzerdatenbankoptionsvorlage"
|
msgstr "Nutzerdatenbankoptionsvorlage"
|
||||||
|
|
||||||
#: hostingpackages/models.py:483
|
#: hostingpackages/models.py:485
|
||||||
msgid "The user database option template that this database option is based on"
|
msgid "The user database option template that this database option is based on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Nutzerdatenbankoptionsvorlage auf der diese Datenbankoption aufgebaut ist"
|
"Die Nutzerdatenbankoptionsvorlage auf der diese Datenbankoption aufgebaut ist"
|
||||||
|
|
||||||
#: hostingpackages/models.py:498
|
#: hostingpackages/models.py:500
|
||||||
msgid "mailbox option template"
|
msgid "mailbox option template"
|
||||||
msgstr "Postfachoptionsvorlage"
|
msgstr "Postfachoptionsvorlage"
|
||||||
|
|
||||||
#: hostingpackages/models.py:499
|
#: hostingpackages/models.py:501
|
||||||
msgid "The mailbox option template that this mailbox option is based on"
|
msgid "The mailbox option template that this mailbox option is based on"
|
||||||
msgstr "Die Postfachoptionsvorlage auf der diese Postfachoption aufgebaut ist"
|
msgstr "Die Postfachoptionsvorlage auf der diese Postfachoption aufgebaut ist"
|
||||||
|
|
||||||
#: hostingpackages/models.py:512
|
#: hostingpackages/models.py:514
|
||||||
msgid "The hosting package"
|
msgid "The hosting package"
|
||||||
msgstr "Das Hostingpaket"
|
msgstr "Das Hostingpaket"
|
||||||
|
|
||||||
#: hostingpackages/models.py:516
|
#: hostingpackages/models.py:518
|
||||||
msgid "data source"
|
msgid "data source"
|
||||||
msgstr "Datenquelle"
|
msgstr "Datenquelle"
|
||||||
|
|
||||||
#: hostingpackages/models.py:517
|
#: hostingpackages/models.py:520
|
||||||
msgid "disk"
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:202
|
||||||
msgstr "Festplatte"
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:42
|
||||||
|
msgid "Mailbox"
|
||||||
|
msgstr "Postfach"
|
||||||
|
|
||||||
#: hostingpackages/models.py:517
|
#: hostingpackages/models.py:521
|
||||||
msgid "mysql"
|
msgid "Website"
|
||||||
msgstr "MySQL"
|
msgstr "Webauftritt"
|
||||||
|
|
||||||
#: hostingpackages/models.py:517
|
#: hostingpackages/models.py:522
|
||||||
msgid "pgsql"
|
msgid "MariaDB database"
|
||||||
msgstr "PostgreSQL"
|
msgstr "MariaDB-Datenbank"
|
||||||
|
|
||||||
#: hostingpackages/models.py:519
|
#: hostingpackages/models.py:523
|
||||||
|
msgid "PostgreSQL database"
|
||||||
|
msgstr "PostgreSQL-Datenbank"
|
||||||
|
|
||||||
|
#: hostingpackages/models.py:526
|
||||||
msgid "data item"
|
msgid "data item"
|
||||||
msgstr "Dateneinheit"
|
msgstr "Dateneinheit"
|
||||||
|
|
||||||
#: hostingpackages/models.py:521
|
#: hostingpackages/models.py:528
|
||||||
msgid "space used in KiB"
|
msgid "space used in KiB"
|
||||||
msgstr "genutzter Platz in KiB"
|
msgstr "genutzter Platz in KiB"
|
||||||
|
|
||||||
|
#: hostingpackages/models.py:532
|
||||||
|
msgid "mail address"
|
||||||
|
msgstr "E-Mailadresse"
|
||||||
|
|
||||||
|
#: hostingpackages/models.py:533
|
||||||
|
msgid "Assigned mail address"
|
||||||
|
msgstr "Zugeordnete E-Mailadresse"
|
||||||
|
|
||||||
|
#: hostingpackages/models.py:539
|
||||||
|
msgid "website"
|
||||||
|
msgstr "Webauftritt"
|
||||||
|
|
||||||
|
#: hostingpackages/models.py:540
|
||||||
|
msgid "Assigned web site"
|
||||||
|
msgstr "Zugeordneter Webauftritt"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/add_hosting_option.html:4
|
#: hostingpackages/templates/hostingpackages/add_hosting_option.html:4
|
||||||
#: hostingpackages/templates/hostingpackages/add_hosting_option.html:7
|
#: hostingpackages/templates/hostingpackages/add_hosting_option.html:7
|
||||||
#, python-format
|
#, python-format
|
||||||
|
@ -266,20 +288,19 @@ msgstr "OS-Nutzer"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:14
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:14
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:40
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:40
|
||||||
#: hostingpackages/views.py:183
|
#: hostingpackages/views.py:184
|
||||||
msgid "Disk space"
|
msgid "Disk space"
|
||||||
msgstr "Speicherplatz"
|
msgstr "Speicherplatz"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:15
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:15
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:54
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:54
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:48
|
#: hostingpackages/views.py:191
|
||||||
#: hostingpackages/views.py:190
|
|
||||||
msgid "Mailboxes"
|
msgid "Mailboxes"
|
||||||
msgstr "Postfächer"
|
msgstr "Postfächer"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:16
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_admin_list.html:16
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:239
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:239
|
||||||
#: hostingpackages/views.py:197
|
#: hostingpackages/views.py:198
|
||||||
msgid "Databases"
|
msgid "Databases"
|
||||||
msgstr "Datenbanken"
|
msgstr "Datenbanken"
|
||||||
|
|
||||||
|
@ -355,7 +376,7 @@ msgstr ""
|
||||||
"%(disk_space)s für Ihr Hostingpaket"
|
"%(disk_space)s für Ihr Hostingpaket"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:45
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:45
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:27
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:28
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(used_space)s of %(disk_space)s (%(space_level_percent)s%%)"
|
msgid "%(used_space)s of %(disk_space)s (%(space_level_percent)s%%)"
|
||||||
msgstr "%(used_space)s von %(disk_space)s (%(space_level_percent)s%%)"
|
msgstr "%(used_space)s von %(disk_space)s (%(space_level_percent)s%%)"
|
||||||
|
@ -369,7 +390,7 @@ msgid "Details"
|
||||||
msgstr "Details"
|
msgstr "Details"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:49
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:49
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:31
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:32
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"The package contributes %(package_space)s the difference comes from disk "
|
"The package contributes %(package_space)s the difference comes from disk "
|
||||||
|
@ -525,10 +546,6 @@ msgstr "Domain hinzufügen"
|
||||||
msgid "E-Mail-Accounts"
|
msgid "E-Mail-Accounts"
|
||||||
msgstr "E-Mail-Konten"
|
msgstr "E-Mail-Konten"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:202
|
|
||||||
msgid "Mailbox"
|
|
||||||
msgstr "Postfach"
|
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:204
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:204
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:216
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_detail.html:216
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
|
@ -603,7 +620,7 @@ msgstr "Speicherplatznutzung Ihres Hostingpakets %(package)s"
|
||||||
msgid "Disk usage of Hosting Package %(package)s of %(full_name)s"
|
msgid "Disk usage of Hosting Package %(package)s of %(full_name)s"
|
||||||
msgstr "Speicherplatznutzung des Hostingpakets %(package)s von %(full_name)s"
|
msgstr "Speicherplatznutzung des Hostingpakets %(package)s von %(full_name)s"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:16
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:17
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Disk usage of Hosting Package <a href=\"%(package_url)s\">%(package)s</a>"
|
"Disk usage of Hosting Package <a href=\"%(package_url)s\">%(package)s</a>"
|
||||||
|
@ -611,7 +628,7 @@ msgstr ""
|
||||||
"Speicherplatznutzung des Hostingpakets <a "
|
"Speicherplatznutzung des Hostingpakets <a "
|
||||||
"href=\"%(package_url)s\">%(package)s</a>"
|
"href=\"%(package_url)s\">%(package)s</a>"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:22
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:23
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"You use %(used_space)s of the reserved disk space of %(disk_space)s for your "
|
"You use %(used_space)s of the reserved disk space of %(disk_space)s for your "
|
||||||
|
@ -620,42 +637,43 @@ msgstr ""
|
||||||
"Sie nutzen %(used_space)s des reservierten Speicherplatzes von "
|
"Sie nutzen %(used_space)s des reservierten Speicherplatzes von "
|
||||||
"%(disk_space)s für Ihr Hostingpaket."
|
"%(disk_space)s für Ihr Hostingpaket."
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:35
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:36
|
||||||
msgid "Breakdown by usage"
|
msgid "Breakdown by usage"
|
||||||
msgstr "Aufgliederung nach Nutzung"
|
msgstr "Aufgliederung nach Nutzung"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:37
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:38
|
||||||
msgid "Regular file system usage"
|
msgid "Mailbox usage"
|
||||||
msgstr "Reguläre Dateisystemnutzung"
|
msgstr "Postfachnutzung"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:41
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:43
|
||||||
msgid "Origin"
|
msgid "Primary email address"
|
||||||
msgstr "Quelle"
|
msgstr "Primäre E-Mailadresse"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:42
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:44
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:61
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:64
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:78
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:83
|
||||||
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:102
|
||||||
msgid "Used space"
|
msgid "Used space"
|
||||||
msgstr "Genutzter Speicherplatz"
|
msgstr "Genutzter Speicherplatz"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:47
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:59
|
||||||
msgid "Website data"
|
msgid "Website usage"
|
||||||
msgstr "Webseiten-Daten"
|
msgstr "Nutzung für Webauftritte"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:48
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:63
|
||||||
msgid "Other"
|
msgid "Website / Directory"
|
||||||
msgstr "Sonstiges"
|
msgstr "Webauftritt / Verzeichnis"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:56
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:78
|
||||||
msgid "MySQL/MariaDB database usage"
|
msgid "MySQL/MariaDB database usage"
|
||||||
msgstr "MySQL/MariaDB-Datenbanknutzung"
|
msgstr "MySQL/MariaDB-Datenbanknutzung"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:60
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:82
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:77
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:101
|
||||||
msgid "Database"
|
msgid "Database"
|
||||||
msgstr "Datenbank"
|
msgstr "Datenbank"
|
||||||
|
|
||||||
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:73
|
#: hostingpackages/templates/hostingpackages/customerhostingpackage_disk_usage_details.html:97
|
||||||
msgid "PostgreSQL database usage"
|
msgid "PostgreSQL database usage"
|
||||||
msgstr "PostgreSQL-Datenbanknutzung"
|
msgstr "PostgreSQL-Datenbanknutzung"
|
||||||
|
|
||||||
|
@ -668,12 +686,12 @@ msgstr ""
|
||||||
"Wählen Sie eine neue Option für das Hostingpaket %(package)s des Kunden "
|
"Wählen Sie eine neue Option für das Hostingpaket %(package)s des Kunden "
|
||||||
"%(full_name)s"
|
"%(full_name)s"
|
||||||
|
|
||||||
#: hostingpackages/views.py:62 hostingpackages/views.py:96
|
#: hostingpackages/views.py:63 hostingpackages/views.py:97
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Started setup of new hosting package {name}."
|
msgid "Started setup of new hosting package {name}."
|
||||||
msgstr "Einrichtung des Hostingpakets {name} wurde gestartet."
|
msgstr "Einrichtung des Hostingpakets {name} wurde gestartet."
|
||||||
|
|
||||||
#: hostingpackages/views.py:271
|
#: hostingpackages/views.py:272
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "Successfully added option {option} to hosting package {package}."
|
msgid "Successfully added option {option} to hosting package {package}."
|
||||||
msgstr "Option {option} erfolgreich zum Hostingpaket {package} hinzugefügt."
|
msgstr "Option {option} erfolgreich zum Hostingpaket {package} hinzugefügt."
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Generated by Django 4.2.3 on 2023-07-23 07:24
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("managemails", "0004_auto_20150125_1825"),
|
||||||
|
("websites", "0001_initial"),
|
||||||
|
("hostingpackages", "0007_add_disk_usage_table"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="customerpackagediskusage",
|
||||||
|
name="email_address",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
help_text="Assigned mail address",
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="managemails.mailaddress",
|
||||||
|
verbose_name="mail address",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="customerpackagediskusage",
|
||||||
|
name="website",
|
||||||
|
field=models.ForeignKey(
|
||||||
|
help_text="Assigned web site",
|
||||||
|
null=True,
|
||||||
|
on_delete=django.db.models.deletion.CASCADE,
|
||||||
|
to="websites.website",
|
||||||
|
verbose_name="website",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.RunSQL(
|
||||||
|
"DELETE FROM hostingpackages_customerpackagediskusage WHERE source='disk'"
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="customerpackagediskusage",
|
||||||
|
name="source",
|
||||||
|
field=models.CharField(
|
||||||
|
choices=[
|
||||||
|
("mail", "Mailbox"),
|
||||||
|
("web", "Website"),
|
||||||
|
("mysql", "MariaDB database"),
|
||||||
|
("pgsql", "PostgreSQL database"),
|
||||||
|
],
|
||||||
|
verbose_name="data source",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
|
@ -516,12 +516,31 @@ class CustomerPackageDiskUsage(TimeStampedModel):
|
||||||
)
|
)
|
||||||
source = models.CharField(
|
source = models.CharField(
|
||||||
verbose_name=_("data source"),
|
verbose_name=_("data source"),
|
||||||
choices=(("disk", _("disk")), ("mysql", _("mysql")), ("pgsql", _("pgsql"))),
|
choices=(
|
||||||
|
("mail", _("Mailbox")),
|
||||||
|
("web", _("Website")),
|
||||||
|
("mysql", _("MariaDB database")),
|
||||||
|
("pgsql", _("PostgreSQL database")),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
item = models.CharField(verbose_name=_("data item"))
|
item = models.CharField(verbose_name=_("data item"))
|
||||||
used_kb = models.PositiveBigIntegerField(
|
used_kb = models.PositiveBigIntegerField(
|
||||||
verbose_name=_("space used in KiB"), default=0
|
verbose_name=_("space used in KiB"), default=0
|
||||||
)
|
)
|
||||||
|
email_address = models.ForeignKey(
|
||||||
|
"managemails.MailAddress",
|
||||||
|
verbose_name=_("mail address"),
|
||||||
|
help_text=_("Assigned mail address"),
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
null=True,
|
||||||
|
)
|
||||||
|
website = models.ForeignKey(
|
||||||
|
"websites.Website",
|
||||||
|
verbose_name=_("website"),
|
||||||
|
help_text=_("Assigned web site"),
|
||||||
|
on_delete=models.CASCADE,
|
||||||
|
null=True,
|
||||||
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ("package", "source", "item")
|
unique_together = ("package", "source", "item")
|
||||||
|
|
|
@ -13,9 +13,10 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endspaceless %}{% endblock title %}
|
{% endspaceless %}{% endblock title %}
|
||||||
|
|
||||||
{% block page_title %}{% blocktranslate with package=hostingpackage.name package_url=hostingpackage.get_absolute_url trimmed %}
|
{% block page_title %}
|
||||||
Disk usage of Hosting Package <a href="{{ package_url }}">{{ package }}</a>
|
{% blocktranslate with package=hostingpackage.name package_url=hostingpackage.get_absolute_url trimmed %}
|
||||||
{% endblocktranslate %}{% endblock page_title %}
|
Disk usage of Hosting Package <a href="{{ package_url }}">{{ package }}</a>
|
||||||
|
{% endblocktranslate %}{% endblock page_title %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% with used_space=hostingpackage.get_used_disk_space_sum|filesizeformat disk_space=hostingpackage.get_disk_space|filesizeformat package_space=hostingpackage.get_package_space|filesizeformat space_level=hostingpackage.space_level %}
|
{% with used_space=hostingpackage.get_used_disk_space_sum|filesizeformat disk_space=hostingpackage.get_disk_space|filesizeformat package_space=hostingpackage.get_package_space|filesizeformat space_level=hostingpackage.space_level %}
|
||||||
|
@ -33,57 +34,82 @@ The package contributes {{ package_space }} the difference comes from disk space
|
||||||
{% endblocktranslate %}"></i>
|
{% endblocktranslate %}"></i>
|
||||||
</p>
|
</p>
|
||||||
<h2>{% trans "Breakdown by usage" %}</h2>
|
<h2>{% trans "Breakdown by usage" %}</h2>
|
||||||
{% if disk_usage %}
|
{% if mail_usage %}
|
||||||
<h3>{% trans "Regular file system usage" %}</h3>
|
<h3>{% trans "Mailbox usage" %}</h3>
|
||||||
<table class="table table-condensed">
|
<table class="table table-condensed table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% translate "Origin" %}</th>
|
<th>{% translate "Mailbox" %}</th>
|
||||||
|
<th>{% translate "Primary email address" %}</th>
|
||||||
<th class="text-end">{% translate "Used space" %}</th>
|
<th class="text-end">{% translate "Used space" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
{% for line in disk_usage %}
|
<tbody>
|
||||||
|
{% for line in mail_usage %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{% if line.item == "web" %}{% translate "Website data" %}{% elif line.item == "mail" %}
|
<td>{{ line.item }}</td>
|
||||||
{% translate "Mailboxes" %}{% elif line.item == "other" %}{% translate "Other" %}{% else %}
|
<td>{% if line.email_address %}{{ line.email_address }}{% else %}-{% endif %}</td>
|
||||||
{{ line.item }}{% endif %}</td>
|
|
||||||
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% endif %}
|
||||||
|
{% if web_usage %}
|
||||||
|
<h3>{% trans "Website usage" %}</h3>
|
||||||
|
<table class="table table-condensed table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>{% translate "Website / Directory" %}</th>
|
||||||
|
<th class="text-end">{% translate "Used space" %}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for line in web_usage %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ line.item }}</td>
|
||||||
|
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if mysql_usage %}
|
{% if mysql_usage %}
|
||||||
<h3>{% trans "MySQL/MariaDB database usage" %}</h3>
|
<h3>{% trans "MySQL/MariaDB database usage" %}</h3>
|
||||||
<table class="table table-condensed">
|
<table class="table table-condensed table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% translate "Database" %}</th>
|
<th>{% translate "Database" %}</th>
|
||||||
<th class="text-end">{% translate "Used space" %}</th>
|
<th class="text-end">{% translate "Used space" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody>
|
||||||
{% for line in mysql_usage %}
|
{% for line in mysql_usage %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ line.item }}</td>
|
<td>{{ line.item }}</td>
|
||||||
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if pgsql_usage %}
|
{% if pgsql_usage %}
|
||||||
<h3>{% trans "PostgreSQL database usage" %}</h3>
|
<h3>{% trans "PostgreSQL database usage" %}</h3>
|
||||||
<table class="table table-condensed">
|
<table class="table table-condensed table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{% translate "Database" %}</th>
|
<th>{% translate "Database" %}</th>
|
||||||
<th class="text-end">{% translate "Used space" %}</th>
|
<th class="text-end">{% translate "Used space" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody>
|
||||||
{% for line in pgsql_usage %}
|
{% for line in pgsql_usage %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ line.item }}</td>
|
<td>{{ line.item }}</td>
|
||||||
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
<td class="text-end">{{ line.size_in_bytes|filesizeformat }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
|
@ -24,6 +24,7 @@ from rest_framework.views import APIView
|
||||||
|
|
||||||
from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin
|
from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin
|
||||||
|
|
||||||
|
from managemails.models import Mailbox
|
||||||
from .forms import (
|
from .forms import (
|
||||||
AddDiskspaceOptionForm,
|
AddDiskspaceOptionForm,
|
||||||
AddMailboxOptionForm,
|
AddMailboxOptionForm,
|
||||||
|
@ -40,7 +41,7 @@ from .models import (
|
||||||
)
|
)
|
||||||
from .serializers import DiskUsageSerializer
|
from .serializers import DiskUsageSerializer
|
||||||
|
|
||||||
logger = logging.getLogger("gnuviechadmin.hostingpackages")
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class CreateHostingPackage(PermissionRequiredMixin, CreateView):
|
class CreateHostingPackage(PermissionRequiredMixin, CreateView):
|
||||||
|
@ -290,6 +291,7 @@ class UploadCustomerPackageDiskUsage(APIView):
|
||||||
def post(self, request: rest_framework.request.Request, format=None):
|
def post(self, request: rest_framework.request.Request, format=None):
|
||||||
if request.content_type != "application/json":
|
if request.content_type != "application/json":
|
||||||
return Response("Unacceptable", status=http.HTTPStatus.BAD_REQUEST)
|
return Response("Unacceptable", status=http.HTTPStatus.BAD_REQUEST)
|
||||||
|
|
||||||
for row in request.data:
|
for row in request.data:
|
||||||
user = row["user"]
|
user = row["user"]
|
||||||
for key in row:
|
for key in row:
|
||||||
|
@ -310,13 +312,22 @@ class UploadCustomerPackageDiskUsage(APIView):
|
||||||
item=item,
|
item=item,
|
||||||
)
|
)
|
||||||
metric.used_kb = size
|
metric.used_kb = size
|
||||||
|
|
||||||
|
if key == "mail":
|
||||||
|
try:
|
||||||
|
ma_mb = package.mailboxes.get(username=item).mailaddressmailbox_set.first()
|
||||||
|
if ma_mb:
|
||||||
|
metric.email_address_id = ma_mb.mailaddress_id
|
||||||
|
except Mailbox.DoesNotExist:
|
||||||
|
logger.warning("mail box %s does not exist", item)
|
||||||
|
|
||||||
metric.save()
|
metric.save()
|
||||||
except CustomerHostingPackage.DoesNotExist:
|
except CustomerHostingPackage.DoesNotExist:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"hosting package for user %s does not exist", user
|
"hosting package for user %s does not exist", user
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info("usage date submitted by %s", request.user)
|
logger.info("usage data submitted by %s", request.user)
|
||||||
|
|
||||||
return Response("Accepted", status=http.HTTPStatus.ACCEPTED)
|
return Response("Accepted", status=http.HTTPStatus.ACCEPTED)
|
||||||
|
|
||||||
|
@ -342,13 +353,17 @@ class CustomerHostingPackageDiskUsageDetails(StaffOrSelfLoginRequiredMixin, Deta
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context_data = super().get_context_data(**kwargs)
|
context_data = super().get_context_data(**kwargs)
|
||||||
|
|
||||||
disk_usage, mysql_usage, pgsql_usage = [], [], []
|
mail_usage, web_usage, mysql_usage, pgsql_usage = [], [], [], []
|
||||||
|
|
||||||
for usage in self.get_object().customerpackagediskusage_set.order_by(
|
for usage in self.get_object().customerpackagediskusage_set.order_by(
|
||||||
"-used_kb"
|
"-used_kb"
|
||||||
):
|
):
|
||||||
if usage.source == "disk":
|
if usage.used_kb <= 0:
|
||||||
disk_usage.append(usage)
|
continue
|
||||||
|
if usage.source == "mail":
|
||||||
|
mail_usage.append(usage)
|
||||||
|
elif usage.source == "web":
|
||||||
|
web_usage.append(usage)
|
||||||
elif usage.source == "mysql":
|
elif usage.source == "mysql":
|
||||||
mysql_usage.append(usage)
|
mysql_usage.append(usage)
|
||||||
elif usage.source == "pgsql":
|
elif usage.source == "pgsql":
|
||||||
|
@ -357,7 +372,8 @@ class CustomerHostingPackageDiskUsageDetails(StaffOrSelfLoginRequiredMixin, Deta
|
||||||
context_data.update(
|
context_data.update(
|
||||||
{
|
{
|
||||||
"customer": self.get_customer_object(),
|
"customer": self.get_customer_object(),
|
||||||
"disk_usage": disk_usage,
|
"mail_usage": mail_usage,
|
||||||
|
"web_usage": web_usage,
|
||||||
"mysql_usage": mysql_usage,
|
"mysql_usage": mysql_usage,
|
||||||
"pgsql_usage": pgsql_usage,
|
"pgsql_usage": pgsql_usage,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "gva"
|
name = "gva"
|
||||||
version = "0.14.4"
|
version = "0.15.0"
|
||||||
description = "gnuviechadmin web interface"
|
description = "gnuviechadmin web interface"
|
||||||
authors = ["Jan Dittberner <jan@dittberner.info>"]
|
authors = ["Jan Dittberner <jan@dittberner.info>"]
|
||||||
license = "AGPL-3+"
|
license = "AGPL-3+"
|
||||||
|
|
Loading…
Reference in a new issue