From 19548b2b07906d43984439629fdf8631d275f19b Mon Sep 17 00:00:00 2001 From: Reto Aebersold Date: Wed, 24 Jan 2024 21:00:26 +0100 Subject: [PATCH 01/22] feat: move models for profile page --- .../components/header/AccountMenuContent.vue | 7 +- .../personalProfile/PersonalProfilePage.vue | 93 ++++ client/src/router/index.ts | 5 + server/vbv_lernwelt/api/directory.py | 6 +- .../api/tests/test_entities_api.py | 3 +- server/vbv_lernwelt/api/tests/test_me_api.py | 3 +- server/vbv_lernwelt/core/admin.py | 41 +- .../core/migrations/0005_country.py | 29 ++ .../migrations/0006_auto_20240124_2053.py | 80 ++++ server/vbv_lernwelt/core/model_utils.py | 429 ++++++++++++++++++ server/vbv_lernwelt/core/models.py | 40 ++ server/vbv_lernwelt/core/serializers.py | 8 +- server/vbv_lernwelt/shop/admin.py | 12 +- .../migrations/0003_auto_20231114_2036.py | 3 - .../shop/migrations/0012_delete_country.py | 15 + server/vbv_lernwelt/shop/model_utils.py | 427 ----------------- server/vbv_lernwelt/shop/models.py | 15 - server/vbv_lernwelt/shop/serializers.py | 8 +- 18 files changed, 748 insertions(+), 476 deletions(-) create mode 100644 client/src/pages/personalProfile/PersonalProfilePage.vue create mode 100644 server/vbv_lernwelt/core/migrations/0005_country.py create mode 100644 server/vbv_lernwelt/core/migrations/0006_auto_20240124_2053.py create mode 100644 server/vbv_lernwelt/shop/migrations/0012_delete_country.py delete mode 100644 server/vbv_lernwelt/shop/model_utils.py diff --git a/client/src/components/header/AccountMenuContent.vue b/client/src/components/header/AccountMenuContent.vue index 91f12f17..ed41a6e4 100644 --- a/client/src/components/header/AccountMenuContent.vue +++ b/client/src/components/header/AccountMenuContent.vue @@ -18,14 +18,17 @@ const emit = defineEmits(["selectCourseSession", "logout"]);

{{ user.first_name }} {{ user.last_name }}

-
{{ user.email }}
+
{{ user.email }}
+ + Profil anzeigen +
diff --git a/client/src/pages/personalProfile/PersonalProfilePage.vue b/client/src/pages/personalProfile/PersonalProfilePage.vue new file mode 100644 index 00000000..0b944b4f --- /dev/null +++ b/client/src/pages/personalProfile/PersonalProfilePage.vue @@ -0,0 +1,93 @@ + + + diff --git a/client/src/router/index.ts b/client/src/router/index.ts index 44eeb299..e157b92d 100644 --- a/client/src/router/index.ts +++ b/client/src/router/index.ts @@ -312,6 +312,11 @@ const router = createRouter({ path: "/messages", component: () => import("@/pages/MessagesPage.vue"), }, + { + path: "/profile", + component: () => import("@/pages/personalProfile/PersonalProfilePage.vue"), + name: "personalProfile", + }, { path: "/settings", component: () => import("@/pages/SettingsPage.vue"), diff --git a/server/vbv_lernwelt/api/directory.py b/server/vbv_lernwelt/api/directory.py index 502dae55..2b06a74c 100644 --- a/server/vbv_lernwelt/api/directory.py +++ b/server/vbv_lernwelt/api/directory.py @@ -2,10 +2,8 @@ from rest_framework.decorators import api_view, permission_classes from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response -from vbv_lernwelt.core.models import Organisation -from vbv_lernwelt.core.serializers import OrganisationSerializer -from vbv_lernwelt.shop.models import Country -from vbv_lernwelt.shop.serializers import CountrySerializer +from vbv_lernwelt.core.models import Country, Organisation +from vbv_lernwelt.core.serializers import CountrySerializer, OrganisationSerializer @api_view(["GET"]) diff --git a/server/vbv_lernwelt/api/tests/test_entities_api.py b/server/vbv_lernwelt/api/tests/test_entities_api.py index df6f90a3..83757a1e 100644 --- a/server/vbv_lernwelt/api/tests/test_entities_api.py +++ b/server/vbv_lernwelt/api/tests/test_entities_api.py @@ -2,9 +2,8 @@ from django.urls import reverse from rest_framework import status from rest_framework.test import APITestCase -from vbv_lernwelt.core.model_utils import add_organisations +from vbv_lernwelt.core.model_utils import add_countries, add_organisations from vbv_lernwelt.core.models import Organisation, User -from vbv_lernwelt.shop.model_utils import add_countries class EntitiesViewTest(APITestCase): diff --git a/server/vbv_lernwelt/api/tests/test_me_api.py b/server/vbv_lernwelt/api/tests/test_me_api.py index a19fdfec..2e6442f9 100644 --- a/server/vbv_lernwelt/api/tests/test_me_api.py +++ b/server/vbv_lernwelt/api/tests/test_me_api.py @@ -2,9 +2,8 @@ from django.urls import reverse from rest_framework import status from rest_framework.test import APITestCase -from vbv_lernwelt.core.model_utils import add_organisations +from vbv_lernwelt.core.model_utils import add_countries, add_organisations from vbv_lernwelt.core.models import User -from vbv_lernwelt.shop.model_utils import add_countries class MeUserViewTest(APITestCase): diff --git a/server/vbv_lernwelt/core/admin.py b/server/vbv_lernwelt/core/admin.py index 2fb286cc..a090accd 100644 --- a/server/vbv_lernwelt/core/admin.py +++ b/server/vbv_lernwelt/core/admin.py @@ -2,7 +2,7 @@ from django.contrib import admin from django.contrib.auth import admin as auth_admin, get_user_model from django.utils.translation import gettext_lazy as _ -from vbv_lernwelt.core.models import JobLog, Organisation +from vbv_lernwelt.core.models import Country, JobLog, Organisation from vbv_lernwelt.core.utils import pretty_print_json User = get_user_model() @@ -43,7 +43,34 @@ class UserAdmin(auth_admin.UserAdmin): }, ), (_("Important dates"), {"fields": ("last_login", "date_joined")}), - (_("Profile"), {"fields": ("organisation", "language", "avatar")}), + ( + _("Profile"), + { + "fields": ( + "organisation", + "language", + "avatar", + "street", + "street_number", + "postal_code", + "city", + "country", + ) + }, + ), + ( + _("Invoice"), + { + "fields": ( + "invoice_name", + "invoice_street", + "invoice_street_number", + "invoice_postal_code", + "invoice_city", + "invoice_country", + ) + }, + ), (_("Additional data"), {"fields": ("additional_json_data",)}), ) list_display = [ @@ -89,3 +116,13 @@ class OrganisationAdmin(admin.ModelAdmin): "name_fr", "name_it", ) + + +@admin.register(Country) +class CountryAdmin(admin.ModelAdmin): + list_display = ( + "country_id", + "name_de", + "name_fr", + "name_it", + ) diff --git a/server/vbv_lernwelt/core/migrations/0005_country.py b/server/vbv_lernwelt/core/migrations/0005_country.py new file mode 100644 index 00000000..a3e4ac5a --- /dev/null +++ b/server/vbv_lernwelt/core/migrations/0005_country.py @@ -0,0 +1,29 @@ +# Generated by Django 3.2.20 on 2024-01-24 19:40 + +from django.db import migrations, models + +from vbv_lernwelt.core.model_utils import add_countries, remove_countries + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0004_auto_20240108_0943"), + ] + + operations = [ + migrations.CreateModel( + name="Country", + fields=[ + ("country_id", models.IntegerField(primary_key=True, serialize=False)), + ("name_de", models.CharField(max_length=255)), + ("name_fr", models.CharField(max_length=255)), + ("name_it", models.CharField(max_length=255)), + ], + options={ + "verbose_name": "Country", + "verbose_name_plural": "Countries", + "ordering": ["country_id"], + }, + ), + migrations.RunPython(add_countries, remove_countries), + ] diff --git a/server/vbv_lernwelt/core/migrations/0006_auto_20240124_2053.py b/server/vbv_lernwelt/core/migrations/0006_auto_20240124_2053.py new file mode 100644 index 00000000..d38bc02e --- /dev/null +++ b/server/vbv_lernwelt/core/migrations/0006_auto_20240124_2053.py @@ -0,0 +1,80 @@ +# Generated by Django 3.2.20 on 2024-01-24 19:53 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("core", "0005_country"), + ] + + operations = [ + migrations.AddField( + model_name="user", + name="city", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="country", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="user_country", + to="core.country", + ), + ), + migrations.AddField( + model_name="user", + name="invoice_city", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="invoice_country", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="invoice_country", + to="core.country", + ), + ), + migrations.AddField( + model_name="user", + name="invoice_name", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="invoice_postal_code", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="invoice_street", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="invoice_street_number", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="postal_code", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="street", + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name="user", + name="street_number", + field=models.CharField(blank=True, max_length=255), + ), + ] diff --git a/server/vbv_lernwelt/core/model_utils.py b/server/vbv_lernwelt/core/model_utils.py index f363f917..4098996a 100644 --- a/server/vbv_lernwelt/core/model_utils.py +++ b/server/vbv_lernwelt/core/model_utils.py @@ -182,3 +182,432 @@ def migrate_avatars(apps=None, schema_editor=None): user.save() except FileNotFoundError: pass + + +countries = { + 1: {"de": "Afghanistan", "fr": "Afghanistan", "it": "Afghanistan"}, + 2: {"de": "Albanien", "fr": "Albanie", "it": "Albania"}, + 3: {"de": "Algerien", "fr": "Algérie", "it": "Algeria"}, + 5: {"de": "Andorra", "fr": "Andorra", "it": "Andorra"}, + 6: {"de": "Angola", "fr": "Angola", "it": "Angola"}, + 9: { + "de": "Antigua und Barbuda", + "fr": "Antigua et Barbuda", + "it": "Antigua e Barbuda", + }, + 10: {"de": "Argentinien", "fr": "Argentine", "it": "Argentina"}, + 11: {"de": "Armenien", "fr": "Armenia", "it": "Armenia"}, + 13: {"de": "Australien", "fr": "Australie", "it": "Australia"}, + 14: {"de": "Österreich", "fr": "Autriche", "it": "Austria"}, + 15: {"de": "Aserbaidschan", "fr": "Azerbaïdjan", "it": "Azerbaijan"}, + 16: {"de": "Bahamas", "fr": "Bahamas", "it": "Bahamas"}, + 17: {"de": "Bahrain", "fr": "Bahrain", "it": "Bahrain"}, + 18: {"de": "Bangladesh", "fr": "Bangladesh", "it": "Bangladesh"}, + 19: {"de": "Barbados", "fr": "Barbados", "it": "Barbados"}, + 20: {"de": "Belarus", "fr": "Belarus", "it": "Belarus"}, + 21: {"de": "Belgien", "fr": "Belgique", "it": "Belgio"}, + 22: {"de": "Belize", "fr": "Belize", "it": "Belize"}, + 23: {"de": "Benin", "fr": "Benin", "it": "Benin"}, + 25: {"de": "Bhutan", "fr": "Bhutan", "it": "Bhutan"}, + 26: {"de": "Bolivien", "fr": "Bolivia", "it": "Bolivia"}, + 27: { + "de": "Bosnien und Herzegowina", + "fr": "Bosnia et Herzegowina", + "it": "Bosnia e Herzegovina", + }, + 28: {"de": "Botswana", "fr": "Botswana", "it": "Botswana"}, + 30: {"de": "Brasilien", "fr": "Brésil", "it": "Brasile"}, + 32: {"de": "Brunei", "fr": "Brunei", "it": "Brunei"}, + 33: {"de": "Bulgarien", "fr": "Bulgarie", "it": "Bulgaria"}, + 34: {"de": "Burkina Faso", "fr": "Burkina Faso", "it": "Burkina Faso"}, + 35: {"de": "Burundi", "fr": "Burundi", "it": "Burundi"}, + 36: {"de": "Kambodscha", "fr": "Cambodia", "it": "Cambogia"}, + 37: {"de": "Kamerun", "fr": "Cameroon", "it": "Camerun"}, + 38: {"de": "Kanada", "fr": "Canada", "it": "Canada"}, + 39: {"de": "Kap Verde", "fr": "Cap Vert", "it": "Capo Verde"}, + 41: { + "de": "Zentralafrikanische Republik", + "fr": "Centrafricaine (République)", + "it": "Repubblica Centrafricana", + }, + 42: {"de": "Tschad", "fr": "Tchad", "it": "Ciad"}, + 43: {"de": "Chile", "fr": "Chile", "it": "Cile"}, + 44: {"de": "Volksrepublik China", "fr": "Chine (Rép. pop.)", "it": "Cina"}, + 47: {"de": "Kolumbien", "fr": "Colombia", "it": "Colombia"}, + 48: {"de": "Komoren", "fr": "Comoros", "it": "Comoros"}, + 49: { + "de": "Kongo, Republik", + "fr": "Congo, Republic of the", + "it": "Congo, Repubblica del", + }, + 50: { + "de": "Kongo, Demokratische Republik", + "fr": "Congo, The Democratic Republic of the", + "it": "Congo, Repubblica Democratica del", + }, + 51: {"de": "Grenada", "fr": "Grenade", "it": "Grenada"}, + 52: {"de": "Costa Rica", "fr": "Costa Rica", "it": "Costa Rica"}, + 53: {"de": "Elfenbeinküste", "fr": "Côte d´Ivoire", "it": "Costa d´Avorio"}, + 54: {"de": "Kroatien", "fr": "Croatia", "it": "Croazia"}, + 55: {"de": "Kuba", "fr": "Cuba", "it": "Cuba"}, + 56: {"de": "Zypern", "fr": "Cyprus", "it": "Cipro"}, + 57: { + "de": "Tschechische Republik", + "fr": "Czech Rebublic", + "it": "Repubblica Ceca", + }, + 58: {"de": "Dänemark", "fr": "Danemark", "it": "Danimarca"}, + 59: {"de": "Dschibuti", "fr": "Djibouti", "it": "Gibuti"}, + 60: {"de": "Dominica", "fr": "Dominique", "it": "Dominica"}, + 61: { + "de": "Dominikanische Republik", + "fr": "République Dominicaine", + "it": "Repubblica Dominicana", + }, + 62: {"de": "Ost Timor", "fr": "Timor Oriental", "it": "Timor Est"}, + 63: {"de": "Ecuador", "fr": "Équateur", "it": "Ecuador"}, + 64: {"de": "Ägypten", "fr": "Égyptien", "it": "Egitto"}, + 65: {"de": "El Salvador", "fr": "Salvador", "it": "El Salvador"}, + 66: { + "de": "Äquatorialguniea", + "fr": "Guinée équatoriale", + "it": "Guinea Equatoriale", + }, + 67: {"de": "Eritrea", "fr": "Érythrée", "it": "Eritrea"}, + 68: {"de": "Estland", "fr": "Estonia", "it": "Estonia"}, + 69: {"de": "Äthiopien", "fr": "Éthiopie", "it": "Etiopia"}, + 72: {"de": "Fidschi-Inseln", "fr": "Iles Fidji", "it": "Isole Figi"}, + 73: {"de": "Finnland", "fr": "Finlande", "it": "Finlandia"}, + 74: {"de": "Frankreich", "fr": "France", "it": "Francia"}, + 79: {"de": "Gabun", "fr": "Gabon", "it": "Gabon"}, + 80: {"de": "Gambia", "fr": "Gambie", "it": "Gambia"}, + 81: {"de": "Georgien", "fr": "Géorgie", "it": "Georgia"}, + 82: {"de": "Deutschland", "fr": "Allemagne", "it": "Germania"}, + 83: {"de": "Ghana", "fr": "Ghana", "it": "Ghana"}, + 85: {"de": "Griechenland", "fr": "Grèce", "it": "Grecia"}, + 90: {"de": "Guatemala", "fr": "Guatemala", "it": "Guatemala"}, + 92: {"de": "Guinea", "fr": "Guinée", "it": "Guinea"}, + 93: {"de": "Guinea-Bissau", "fr": "Guinée-Bissau", "it": "Guinea-Bissau"}, + 94: {"de": "Guyana", "fr": "Guyana", "it": "Guyana"}, + 95: {"de": "Haiti", "fr": "Haïti", "it": "Haiti"}, + 97: {"de": "Honduras", "fr": "Honduras", "it": "Honduras"}, + 99: {"de": "Ungarn", "fr": "Hongrie", "it": "Ungheria"}, + 100: {"de": "Island", "fr": "Icelande", "it": "Islanda"}, + 101: {"de": "Indien", "fr": "India", "it": "India"}, + 102: {"de": "Indonesien", "fr": "Indonésie", "it": "Indonesia"}, + 103: {"de": "Iran", "fr": "Iran", "it": "Iran"}, + 104: {"de": "Irak", "fr": "Irak", "it": "Iraq"}, + 105: {"de": "Irland", "fr": "Irlande", "it": "Irlanda"}, + 107: {"de": "Israel", "fr": "Israël", "it": "Israele"}, + 108: {"de": "Italien", "fr": "Italie", "it": "Italia"}, + 109: {"de": "Jamaika", "fr": "Jamaïque", "it": "Giamaica"}, + 110: {"de": "Japan", "fr": "Japon", "it": "Giappone"}, + 112: {"de": "Jordanien", "fr": "Jordanie", "it": "Giordania"}, + 113: {"de": "Kasachstan", "fr": "Kazakstan", "it": "Kazakistan"}, + 114: {"de": "Kenia", "fr": "Kénia", "it": "Kenia"}, + 115: {"de": "Kiribati", "fr": "Kiribati", "it": "Kiribati"}, + 116: { + "de": "Korea, Demokratische Volksrepublik", + "fr": "Corée du Nord", + "it": "Corea, Repubblica Popolare Democratica", + }, + 117: { + "de": "Korea, Republik (auch: Südkorea)", + "fr": "Corée du Sud", + "it": "Corea, Repubblica (anche: Corea del Sud)", + }, + 118: {"de": "Kuwait", "fr": "Koweït", "it": "Kuwait"}, + 119: {"de": "Kirgisistan", "fr": "Kirgistan", "it": "Kirghizistan"}, + 120: {"de": "Laos", "fr": "Laos", "it": "Laos"}, + 121: {"de": "Lettland", "fr": "Lettonie", "it": "Lettonia"}, + 122: {"de": "Libanon", "fr": "Lebanon", "it": "Libano"}, + 123: {"de": "Lesotho", "fr": "Lesotho", "it": "Lesotho"}, + 124: {"de": "Liberia", "fr": "Liberia", "it": "Liberia"}, + 125: {"de": "Libyen", "fr": "Libye", "it": "Libia"}, + 126: {"de": "Liechtenstein", "fr": "Liechtenstein", "it": "Liechtenstein"}, + 127: {"de": "Litauen", "fr": "Lituanie", "it": "Lituania"}, + 128: {"de": "Luxembourg", "fr": "Luxembourg", "it": "Lussemburgo"}, + 130: { + "de": "Nordmazedonien", + "fr": "Macédoine du Nord", + "it": "Macedonia del Nord", + }, + 131: {"de": "Madagaskar", "fr": "Madagascar", "it": "Madagascar"}, + 132: {"de": "Malawi", "fr": "Malawi", "it": "Malawi"}, + 133: {"de": "Malaysia", "fr": "Malaisie", "it": "Malesia"}, + 134: {"de": "Malediven", "fr": "Maldives", "it": "Maldive"}, + 135: {"de": "Mali", "fr": "Mali", "it": "Mali"}, + 136: {"de": "Malta", "fr": "Malte", "it": "Malta"}, + 137: {"de": "Marshall Inseln", "fr": "Iles Marshall", "it": "Isole Marshall"}, + 139: {"de": "Mauretanien", "fr": "Mauritanie", "it": "Mauritania"}, + 140: {"de": "Mauritius", "fr": "Ile Maurice", "it": "Mauritius"}, + 142: {"de": "Mexico", "fr": "Mexique", "it": "Messico"}, + 143: {"de": "Mikronesien", "fr": "Micronésie", "it": "Micronesia"}, + 144: {"de": "Moldavien", "fr": "Moldavie", "it": "Moldova"}, + 145: {"de": "Monaco", "fr": "Monaco", "it": "Monaco"}, + 146: {"de": "Mongolei", "fr": "Mongolie", "it": "Mongolia"}, + 148: {"de": "Marokko", "fr": "Morocco", "it": "Marocco"}, + 149: {"de": "Mosambik", "fr": "Mozambique", "it": "Mozambico"}, + 150: {"de": "Myanmar", "fr": "Myanmar", "it": "Myanmar"}, + 151: {"de": "Namibia", "fr": "Namibie", "it": "Namibia"}, + 152: {"de": "Nauru", "fr": "Nauru", "it": "Nauru"}, + 153: {"de": "Nepal", "fr": "Népal", "it": "Nepal"}, + 154: {"de": "Niederlande", "fr": "Pays-Bas", "it": "Paesi Bassi"}, + 157: {"de": "Neuseeland", "fr": "Nouvelle-Zélande", "it": "Nuova Zelanda"}, + 158: {"de": "Nicaragua", "fr": "Nicaragua", "it": "Nicaragua"}, + 159: {"de": "Niger", "fr": "Niger", "it": "Niger"}, + 160: {"de": "Nigeria", "fr": "Nigeria", "it": "Nigeria"}, + 164: {"de": "Norwegen", "fr": "Norvège", "it": "Norvegia"}, + 165: {"de": "Oman", "fr": "Oman", "it": "Oman"}, + 166: {"de": "Pakistan", "fr": "Pakistan", "it": "Pakistan"}, + 167: {"de": "Palau", "fr": "Palau", "it": "Palau"}, + 168: {"de": "Panama", "fr": "Panama", "it": "Panama"}, + 170: { + "de": "Papua-Neuguinea", + "fr": "Papouasie Nouvelle-Guinée", + "it": "Papua Nuova Guinea", + }, + 171: {"de": "Paraguay", "fr": "Paraguay", "it": "Paraguay"}, + 172: {"de": "Peru", "fr": "Pérou", "it": "Perù"}, + 173: {"de": "Philippinen", "fr": "Philippines", "it": "Filippine"}, + 175: {"de": "Polen", "fr": "Pologne", "it": "Polonia"}, + 176: {"de": "Portugal", "fr": "Portugal", "it": "Portogallo"}, + 178: {"de": "Katar", "fr": "Qatar", "it": "Qatar"}, + 180: {"de": "Rumänien", "fr": "Roumanie", "it": "Romania"}, + 181: {"de": "Russische Föderation", "fr": "Russie", "it": "Russia"}, + 182: {"de": "Ruanda", "fr": "Ruanda", "it": "Ruanda"}, + 183: { + "de": "Saint Kitts und Nevis", + "fr": "Saint-Kitts-et-Nevis", + "it": "Saint Kitts e Nevis", + }, + 184: {"de": "St. Lucia", "fr": "Sainte-Lucie", "it": "Santa Lucia"}, + 185: { + "de": "St. Vincent und die Grenadinen", + "fr": "Saint-Vincent-et-Les Grenadines", + "it": "Saint Vincent e Grenadine", + }, + 186: {"de": "Samoa", "fr": "Samoa", "it": "Samoa"}, + 187: {"de": "San Marino", "fr": "San Marino", "it": "San Marino"}, + 188: { + "de": "Sao Tome und Principe", + "fr": "Sao Tomé-et-Principe", + "it": "São Tomé e Principe", + }, + 189: {"de": "Saudi-Arabien", "fr": "Arabie Saoudite", "it": "Arabia Saudita"}, + 190: {"de": "Senegal", "fr": "Sénégal", "it": "Senegal"}, + 191: {"de": "Seychellen", "fr": "Seychelles", "it": "Seychelles"}, + 192: {"de": "Sierra Leone", "fr": "Sierra Leone", "it": "Sierra Leone"}, + 193: {"de": "Singapur", "fr": "Singapour", "it": "Singapore"}, + 194: {"de": "Slowakei", "fr": "Slovaquie", "it": "Slovacchia"}, + 195: {"de": "Slowenien", "fr": "Slovénie", "it": "Slovenia"}, + 196: {"de": "Salomonen", "fr": "Iles Salomon", "it": "Salomone"}, + 197: {"de": "Somalia", "fr": "Somalie", "it": "Somalia"}, + 198: {"de": "Südafrika", "fr": "Afrique du Sud", "it": "Africa del Sud"}, + 200: {"de": "Spanien", "fr": "Espagne", "it": "Spagna"}, + 201: {"de": "Sri Lanka", "fr": "Sri Lanka", "it": "Sri Lanka"}, + 204: {"de": "Sudan", "fr": "Soudan", "it": "Sudan"}, + 205: {"de": "Suriname", "fr": "Suriname", "it": "Suriname"}, + 207: {"de": "Swasiland", "fr": "Swaziland", "it": "Swaziland"}, + 208: {"de": "Schweden", "fr": "Suède", "it": "Svezia"}, + 209: {"de": "Schweiz", "fr": "Suisse", "it": "Svizzera"}, + 210: {"de": "Syrien", "fr": "Syrie", "it": "Siria"}, + 211: {"de": "Taiwan", "fr": "Taïwan", "it": "Taiwan"}, + 212: {"de": "Tadschikistan", "fr": "Tadjikistan", "it": "Tagikistan"}, + 213: {"de": "Tansania", "fr": "Tanzanie", "it": "Tanzania"}, + 214: {"de": "Thailand", "fr": "Thaïlande", "it": "Tailandia"}, + 215: {"de": "Togo", "fr": "Togo", "it": "Togo"}, + 217: {"de": "Tonga", "fr": "Tonga", "it": "Tonga"}, + 218: { + "de": "Trinidad und Tobago", + "fr": "Trinité-et-Tobago", + "it": "Trinidad e Tobago", + }, + 219: {"de": "Tunesien", "fr": "Tunisie", "it": "Tunisia"}, + 220: {"de": "Türkei", "fr": "Turchia", "it": "Turchia"}, + 221: {"de": "Turkmenistan", "fr": "Turkménistan", "it": "Turkmenistan"}, + 223: {"de": "Tuvalu", "fr": "Tuvalu", "it": "Tuvalu"}, + 224: {"de": "Uganda", "fr": "Ouganda", "it": "Uganda"}, + 225: {"de": "Ukraine", "fr": "Ukraine", "it": "Ucraina"}, + 226: { + "de": "Vereinigte Arabische Emirate", + "fr": "Émirats Arabes Unis", + "it": "Emirati Arabi Uniti", + }, + 227: {"de": "Großbritannien", "fr": "Royaume-Uni", "it": "Regno Unito"}, + 228: {"de": "USA", "fr": "États-Unis", "it": "Stati Uniti d´ America"}, + 230: {"de": "Uruguay", "fr": "Uruguay", "it": "Uruguay"}, + 231: {"de": "Usbekistan", "fr": "Ouzbékistan", "it": "Uzbekistan"}, + 232: {"de": "Vanuatu", "fr": "Vanuatu", "it": "Vanuatu"}, + 233: {"de": "Vatikanstadt", "fr": "Vatican", "it": "Città del Vaticano"}, + 234: {"de": "Venezuela", "fr": "Venezuela", "it": "Venezuela"}, + 235: {"de": "Vietnam", "fr": "Viêtnam", "it": "Vietnam"}, + 239: {"de": "Sahara", "fr": "Sahara", "it": "Sahara"}, + 240: {"de": "Jemen", "fr": "Yémen", "it": "Yemen"}, + 241: {"de": "Serbien", "fr": "Serbie", "it": "Serbia"}, + 242: {"de": "Montenegro", "fr": "Monténégro", "it": "Montenegro"}, + 243: {"de": "Sambia", "fr": "Zambie", "it": "Zambia"}, + 244: {"de": "Simbabwe", "fr": "Zimbabwe", "it": "Zimbabwe"}, + 245: {"de": "Hong Kong", "fr": "Hong Kong", "it": "Hong Kong"}, + 246: {"de": "Falkland Inseln", "fr": "Îles Malouines", "it": "Isole Falkland"}, + 247: {"de": "Aruba", "fr": "Aruba", "it": "Aruba"}, + 248: {"de": "Bermuda", "fr": "Bermudes", "it": "Bermuda"}, + 249: { + "de": "Britische Jungferninseln", + "fr": "Îles Vierges britanniques", + "it": "Isole Vergini britanniche", + }, + 250: {"de": "Curaçao", "fr": "Curaçao", "it": "Curaçao"}, + 251: {"de": "Anguilla", "fr": "Anguilla", "it": "Anguilla"}, + 252: {"de": "Montserrat", "fr": "Montserrat", "it": "Montserrat"}, + 253: { + "de": "Bonaire, Sint Eustatius und Saba", + "fr": "Bonaire, Saint-Eustache et Saba", + "it": "Bonaire, Sint Eustatius e Saba", + }, + 254: {"de": "Cayman Inseln", "fr": "Îles Caïmans", "it": "Isole Cayman"}, + 255: {"de": "Sint Maarten", "fr": "Saint-Martin", "it": "Sint Maarten"}, + 256: { + "de": "Turks- und Caicos-Inseln", + "fr": "Îles Turks et Caïques", + "it": "Turks e Caicos", + }, + 257: {"de": "Saint-Barth", "fr": "Saint-Barthélemy", "it": "Saint-Barth"}, + 258: { + "de": "Palästinensisches Gebiet", + "fr": "Territoires palestiniens occupés", + "it": "Territori palestinesi", + }, + 259: {"de": "Kosovo", "fr": "Kosovo", "it": "Kosovo"}, + 260: {"de": "Gibraltar", "fr": "Gibraltar", "it": "Gibilterra"}, + 261: {"de": "Neukaledonien", "fr": "Nouvelle-Calédonie", "it": "Nuova Caledonia"}, + 262: { + "de": "Französisch-Polynesien", + "fr": "Polynésie française", + "it": "Polinesia francese", + }, + 310: { + "de": "Niederländische Antillen", + "fr": "Antilles néerlandaises", + "it": "Antille olandesi", + }, + 311: {"de": "Antarktika", "fr": "Antarctique", "it": "Antartide"}, + 312: { + "de": "Amerikanisch-Samoa", + "fr": "Samoa américaines", + "it": "Samoa americane", + }, + 313: {"de": "Åland", "fr": "Åland", "it": "Åland"}, + 314: {"de": "Bouvetinsel", "fr": "Île Bouvet", "it": "Isola Bouvet"}, + 315: {"de": "Kokosinseln", "fr": "Îles Cocos", "it": "Isole Cocos (Keeling)"}, + 316: {"de": "Cookinseln", "fr": "Îles Cook", "it": "Isole Cook"}, + 317: { + "de": "Clipperton-Insel", + "fr": "Île de Clipperton", + "it": "Isola di Clipperton", + }, + 318: {"de": "Weihnachtsinsel", "fr": "Île Christmas", "it": "Isola di Natale"}, + 319: {"de": "Färöer-Inseln", "fr": "Îles Féroé", "it": "Isole Färöer"}, + 320: { + "de": "Französisch-Guayana", + "fr": "Guyane française", + "it": "Guyana francese", + }, + 321: {"de": "Guernsey", "fr": "Guernsey", "it": "Guernsey"}, + 322: {"de": "Grönland", "fr": "Groenland", "it": "Groenlandia"}, + 323: {"de": "Guadeloupe", "fr": "Guadeloupe", "it": "Guadalupa"}, + 324: { + "de": "Südgeorgien und die Südlichen Sandwichinseln", + "fr": "Géorgie du Sud et Îles Sandwich du Sud", + "it": "Georgia del Sud e Sandwich Australi", + }, + 325: {"de": "Guam", "fr": "Guam", "it": "Guam"}, + 326: { + "de": "Heard und McDonaldinseln", + "fr": "Îles Heard et McDonald", + "it": "Isola Heard e Isole McDonald", + }, + 327: {"de": "Insel Man", "fr": "Île de Man", "it": "Isola di Man"}, + 328: { + "de": "Britisches Territorium im Indischen Ozean", + "fr": "Territoire britannique de l´océan Indien", + "it": "Territori Britannici dell´Oceano Indiano", + }, + 329: {"de": "Jersey", "fr": "Jersey", "it": "Jersey"}, + 330: {"de": "Saint-Martin", "fr": "Saint-Martin", "it": "Saint Martin"}, + 331: {"de": "Macau", "fr": "Macao", "it": "Macao"}, + 332: { + "de": "Nördliche Marianen", + "fr": "Îles Mariannes du Nord", + "it": "Isole Marianne Settentrionali", + }, + 333: {"de": "Martinique", "fr": "Martinique", "it": "Martinica"}, + 334: {"de": "Norfolkinsel", "fr": "Île Norfolk", "it": "Isola Norfolk"}, + 335: {"de": "Niue", "fr": "Niue", "it": "Niue"}, + 336: { + "de": "Saint-Pierre und Miquelon", + "fr": "Saint-Pierre-et-Miquelon", + "it": "Saint-Pierre e Miquelon", + }, + 337: {"de": "Pitcairninseln", "fr": "Îles Pitcairn", "it": "Isole Pitcairn"}, + 338: {"de": "Puerto Rico", "fr": "Porto Rico", "it": "Porto Rico"}, + 339: {"de": "La Réunion", "fr": "La Réunion", "it": "Isola della Riunione"}, + 340: { + "de": "St. Helena, Ascension und Tristan da Cunha", + "fr": "Sainte-Hélène, Ascension et Tristan da Cunha", + "it": "Sant´Elena, Ascensione e Tristan da Cunha", + }, + 341: { + "de": "Spitzbergen, Jan Mayen", + "fr": "Spitzberg, Jan Mayen", + "it": "Svalbard e Jan Mayen", + }, + 342: {"de": "Südsudan", "fr": "Sud-Soudan", "it": "Sudan del Sud"}, + 343: { + "de": "Französische Süd- und Antarktisgebiete", + "fr": "Terres australes et antarctiques françaises", + "it": "Territori australi e antartico francese", + }, + 344: {"de": "Tokelau", "fr": "Tokelau", "it": "Tokelau"}, + 345: { + "de": "United States Minor Outlying Islands", + "fr": "Îles mineures éloignées des États-Unis", + "it": "Isole Minori Esterne degli Stati Uniti", + }, + 346: { + "de": "Amerikanische Jungferninseln", + "fr": "Îles Vierges américaines", + "it": "Isole Vergini Americane", + }, + 347: {"de": "Wallis und Futuna", "fr": "Wallis et Futuna", "it": "Wallis e Futuna"}, + 348: {"de": "Mayotte", "fr": "Mayotte", "it": "Mayotte"}, +} + + +def add_countries(apps=None, schema_editor=None): + if apps is None: + # pylint: disable=import-outside-toplevel + from vbv_lernwelt.core.models import Country + else: + Country = apps.get_model("core", "Country") + + for country_id, country_name in countries.items(): + Country.objects.get_or_create( + country_id=country_id, + name_de=country_name["de"], + name_fr=country_name["fr"], + name_it=country_name["it"], + ) + + +def remove_countries(apps=None, schema_editor=None): + if apps is None: + # pylint: disable=import-outside-toplevel + from vbv_lernwelt.core.models import Country + else: + Country = apps.get_model("core", "Country") + + for country_id in countries.keys(): + Country.objects.filter( + country_id=country_id, + ).delete() diff --git a/server/vbv_lernwelt/core/models.py b/server/vbv_lernwelt/core/models.py index d8a9bb2c..f90b8b70 100644 --- a/server/vbv_lernwelt/core/models.py +++ b/server/vbv_lernwelt/core/models.py @@ -21,6 +21,21 @@ class Organisation(models.Model): ordering = ["organisation_id"] +class Country(models.Model): + country_id = models.IntegerField(primary_key=True) + name_de = models.CharField(max_length=255) + name_fr = models.CharField(max_length=255) + name_it = models.CharField(max_length=255) + + def __str__(self): + return f"{self.name_de} ({self.country_id})" + + class Meta: + verbose_name = "Country" + verbose_name_plural = "Countries" + ordering = ["country_id"] + + class User(AbstractUser): """ Default custom user model for VBV Lernwelt. @@ -54,6 +69,31 @@ class User(AbstractUser): Organisation, on_delete=models.SET_NULL, null=True, blank=True ) + street = models.CharField(max_length=255, blank=True) + street_number = models.CharField(max_length=255, blank=True) + postal_code = models.CharField(max_length=255, blank=True) + city = models.CharField(max_length=255, blank=True) + country = models.ForeignKey( + Country, + related_name="user_country", + on_delete=models.SET_NULL, + null=True, + blank=True, + ) + + invoice_name = models.CharField(max_length=255, blank=True) + invoice_street = models.CharField(max_length=255, blank=True) + invoice_street_number = models.CharField(max_length=255, blank=True) + invoice_postal_code = models.CharField(max_length=255, blank=True) + invoice_city = models.CharField(max_length=255, blank=True) + invoice_country = models.ForeignKey( + Country, + related_name="invoice_country", + on_delete=models.SET_NULL, + null=True, + blank=True, + ) + @property def avatar_url(self): if self.avatar: diff --git a/server/vbv_lernwelt/core/serializers.py b/server/vbv_lernwelt/core/serializers.py index 31483733..86f11fe0 100644 --- a/server/vbv_lernwelt/core/serializers.py +++ b/server/vbv_lernwelt/core/serializers.py @@ -3,7 +3,7 @@ from typing import List from rest_framework import serializers from rest_framework.renderers import JSONRenderer -from vbv_lernwelt.core.models import Organisation, User +from vbv_lernwelt.core.models import Country, Organisation, User from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.course_session_group.models import CourseSessionGroup @@ -59,3 +59,9 @@ class OrganisationSerializer(serializers.ModelSerializer): class Meta: model = Organisation fields = "__all__" + + +class CountrySerializer(serializers.ModelSerializer): + class Meta: + model = Country + fields = "__all__" diff --git a/server/vbv_lernwelt/shop/admin.py b/server/vbv_lernwelt/shop/admin.py index 4bbf4168..e3330232 100644 --- a/server/vbv_lernwelt/shop/admin.py +++ b/server/vbv_lernwelt/shop/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from vbv_lernwelt.shop.models import CheckoutInformation, Country, Product +from vbv_lernwelt.shop.models import CheckoutInformation, Product from vbv_lernwelt.shop.services import get_transaction_state @@ -37,16 +37,6 @@ class CheckoutInformationAdmin(admin.ModelAdmin): actions = [generate_invoice, sync_transaction_state] -@admin.register(Country) -class CountryAdmin(admin.ModelAdmin): - list_display = ( - "country_id", - "name_de", - "name_fr", - "name_it", - ) - - @admin.register(Product) class ProductAdmin(admin.ModelAdmin): list_display = ( diff --git a/server/vbv_lernwelt/shop/migrations/0003_auto_20231114_2036.py b/server/vbv_lernwelt/shop/migrations/0003_auto_20231114_2036.py index 2757d89b..fdc29b1a 100644 --- a/server/vbv_lernwelt/shop/migrations/0003_auto_20231114_2036.py +++ b/server/vbv_lernwelt/shop/migrations/0003_auto_20231114_2036.py @@ -2,8 +2,6 @@ from django.db import migrations, models -from vbv_lernwelt.shop.model_utils import add_countries, remove_countries - class Migration(migrations.Migration): dependencies = [ @@ -39,5 +37,4 @@ class Migration(migrations.Migration): name="sku", field=models.CharField(max_length=255, primary_key=True, serialize=False), ), - migrations.RunPython(add_countries, remove_countries), ] diff --git a/server/vbv_lernwelt/shop/migrations/0012_delete_country.py b/server/vbv_lernwelt/shop/migrations/0012_delete_country.py new file mode 100644 index 00000000..d36492ed --- /dev/null +++ b/server/vbv_lernwelt/shop/migrations/0012_delete_country.py @@ -0,0 +1,15 @@ +# Generated by Django 3.2.20 on 2024-01-24 19:40 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("shop", "0011_alter_checkoutinformation_state"), + ] + + operations = [ + migrations.DeleteModel( + name="Country", + ), + ] diff --git a/server/vbv_lernwelt/shop/model_utils.py b/server/vbv_lernwelt/shop/model_utils.py deleted file mode 100644 index ec959b86..00000000 --- a/server/vbv_lernwelt/shop/model_utils.py +++ /dev/null @@ -1,427 +0,0 @@ -countries = { - 1: {"de": "Afghanistan", "fr": "Afghanistan", "it": "Afghanistan"}, - 2: {"de": "Albanien", "fr": "Albanie", "it": "Albania"}, - 3: {"de": "Algerien", "fr": "Algérie", "it": "Algeria"}, - 5: {"de": "Andorra", "fr": "Andorra", "it": "Andorra"}, - 6: {"de": "Angola", "fr": "Angola", "it": "Angola"}, - 9: { - "de": "Antigua und Barbuda", - "fr": "Antigua et Barbuda", - "it": "Antigua e Barbuda", - }, - 10: {"de": "Argentinien", "fr": "Argentine", "it": "Argentina"}, - 11: {"de": "Armenien", "fr": "Armenia", "it": "Armenia"}, - 13: {"de": "Australien", "fr": "Australie", "it": "Australia"}, - 14: {"de": "Österreich", "fr": "Autriche", "it": "Austria"}, - 15: {"de": "Aserbaidschan", "fr": "Azerbaïdjan", "it": "Azerbaijan"}, - 16: {"de": "Bahamas", "fr": "Bahamas", "it": "Bahamas"}, - 17: {"de": "Bahrain", "fr": "Bahrain", "it": "Bahrain"}, - 18: {"de": "Bangladesh", "fr": "Bangladesh", "it": "Bangladesh"}, - 19: {"de": "Barbados", "fr": "Barbados", "it": "Barbados"}, - 20: {"de": "Belarus", "fr": "Belarus", "it": "Belarus"}, - 21: {"de": "Belgien", "fr": "Belgique", "it": "Belgio"}, - 22: {"de": "Belize", "fr": "Belize", "it": "Belize"}, - 23: {"de": "Benin", "fr": "Benin", "it": "Benin"}, - 25: {"de": "Bhutan", "fr": "Bhutan", "it": "Bhutan"}, - 26: {"de": "Bolivien", "fr": "Bolivia", "it": "Bolivia"}, - 27: { - "de": "Bosnien und Herzegowina", - "fr": "Bosnia et Herzegowina", - "it": "Bosnia e Herzegovina", - }, - 28: {"de": "Botswana", "fr": "Botswana", "it": "Botswana"}, - 30: {"de": "Brasilien", "fr": "Brésil", "it": "Brasile"}, - 32: {"de": "Brunei", "fr": "Brunei", "it": "Brunei"}, - 33: {"de": "Bulgarien", "fr": "Bulgarie", "it": "Bulgaria"}, - 34: {"de": "Burkina Faso", "fr": "Burkina Faso", "it": "Burkina Faso"}, - 35: {"de": "Burundi", "fr": "Burundi", "it": "Burundi"}, - 36: {"de": "Kambodscha", "fr": "Cambodia", "it": "Cambogia"}, - 37: {"de": "Kamerun", "fr": "Cameroon", "it": "Camerun"}, - 38: {"de": "Kanada", "fr": "Canada", "it": "Canada"}, - 39: {"de": "Kap Verde", "fr": "Cap Vert", "it": "Capo Verde"}, - 41: { - "de": "Zentralafrikanische Republik", - "fr": "Centrafricaine (République)", - "it": "Repubblica Centrafricana", - }, - 42: {"de": "Tschad", "fr": "Tchad", "it": "Ciad"}, - 43: {"de": "Chile", "fr": "Chile", "it": "Cile"}, - 44: {"de": "Volksrepublik China", "fr": "Chine (Rép. pop.)", "it": "Cina"}, - 47: {"de": "Kolumbien", "fr": "Colombia", "it": "Colombia"}, - 48: {"de": "Komoren", "fr": "Comoros", "it": "Comoros"}, - 49: { - "de": "Kongo, Republik", - "fr": "Congo, Republic of the", - "it": "Congo, Repubblica del", - }, - 50: { - "de": "Kongo, Demokratische Republik", - "fr": "Congo, The Democratic Republic of the", - "it": "Congo, Repubblica Democratica del", - }, - 51: {"de": "Grenada", "fr": "Grenade", "it": "Grenada"}, - 52: {"de": "Costa Rica", "fr": "Costa Rica", "it": "Costa Rica"}, - 53: {"de": "Elfenbeinküste", "fr": "Côte d´Ivoire", "it": "Costa d´Avorio"}, - 54: {"de": "Kroatien", "fr": "Croatia", "it": "Croazia"}, - 55: {"de": "Kuba", "fr": "Cuba", "it": "Cuba"}, - 56: {"de": "Zypern", "fr": "Cyprus", "it": "Cipro"}, - 57: { - "de": "Tschechische Republik", - "fr": "Czech Rebublic", - "it": "Repubblica Ceca", - }, - 58: {"de": "Dänemark", "fr": "Danemark", "it": "Danimarca"}, - 59: {"de": "Dschibuti", "fr": "Djibouti", "it": "Gibuti"}, - 60: {"de": "Dominica", "fr": "Dominique", "it": "Dominica"}, - 61: { - "de": "Dominikanische Republik", - "fr": "République Dominicaine", - "it": "Repubblica Dominicana", - }, - 62: {"de": "Ost Timor", "fr": "Timor Oriental", "it": "Timor Est"}, - 63: {"de": "Ecuador", "fr": "Équateur", "it": "Ecuador"}, - 64: {"de": "Ägypten", "fr": "Égyptien", "it": "Egitto"}, - 65: {"de": "El Salvador", "fr": "Salvador", "it": "El Salvador"}, - 66: { - "de": "Äquatorialguniea", - "fr": "Guinée équatoriale", - "it": "Guinea Equatoriale", - }, - 67: {"de": "Eritrea", "fr": "Érythrée", "it": "Eritrea"}, - 68: {"de": "Estland", "fr": "Estonia", "it": "Estonia"}, - 69: {"de": "Äthiopien", "fr": "Éthiopie", "it": "Etiopia"}, - 72: {"de": "Fidschi-Inseln", "fr": "Iles Fidji", "it": "Isole Figi"}, - 73: {"de": "Finnland", "fr": "Finlande", "it": "Finlandia"}, - 74: {"de": "Frankreich", "fr": "France", "it": "Francia"}, - 79: {"de": "Gabun", "fr": "Gabon", "it": "Gabon"}, - 80: {"de": "Gambia", "fr": "Gambie", "it": "Gambia"}, - 81: {"de": "Georgien", "fr": "Géorgie", "it": "Georgia"}, - 82: {"de": "Deutschland", "fr": "Allemagne", "it": "Germania"}, - 83: {"de": "Ghana", "fr": "Ghana", "it": "Ghana"}, - 85: {"de": "Griechenland", "fr": "Grèce", "it": "Grecia"}, - 90: {"de": "Guatemala", "fr": "Guatemala", "it": "Guatemala"}, - 92: {"de": "Guinea", "fr": "Guinée", "it": "Guinea"}, - 93: {"de": "Guinea-Bissau", "fr": "Guinée-Bissau", "it": "Guinea-Bissau"}, - 94: {"de": "Guyana", "fr": "Guyana", "it": "Guyana"}, - 95: {"de": "Haiti", "fr": "Haïti", "it": "Haiti"}, - 97: {"de": "Honduras", "fr": "Honduras", "it": "Honduras"}, - 99: {"de": "Ungarn", "fr": "Hongrie", "it": "Ungheria"}, - 100: {"de": "Island", "fr": "Icelande", "it": "Islanda"}, - 101: {"de": "Indien", "fr": "India", "it": "India"}, - 102: {"de": "Indonesien", "fr": "Indonésie", "it": "Indonesia"}, - 103: {"de": "Iran", "fr": "Iran", "it": "Iran"}, - 104: {"de": "Irak", "fr": "Irak", "it": "Iraq"}, - 105: {"de": "Irland", "fr": "Irlande", "it": "Irlanda"}, - 107: {"de": "Israel", "fr": "Israël", "it": "Israele"}, - 108: {"de": "Italien", "fr": "Italie", "it": "Italia"}, - 109: {"de": "Jamaika", "fr": "Jamaïque", "it": "Giamaica"}, - 110: {"de": "Japan", "fr": "Japon", "it": "Giappone"}, - 112: {"de": "Jordanien", "fr": "Jordanie", "it": "Giordania"}, - 113: {"de": "Kasachstan", "fr": "Kazakstan", "it": "Kazakistan"}, - 114: {"de": "Kenia", "fr": "Kénia", "it": "Kenia"}, - 115: {"de": "Kiribati", "fr": "Kiribati", "it": "Kiribati"}, - 116: { - "de": "Korea, Demokratische Volksrepublik", - "fr": "Corée du Nord", - "it": "Corea, Repubblica Popolare Democratica", - }, - 117: { - "de": "Korea, Republik (auch: Südkorea)", - "fr": "Corée du Sud", - "it": "Corea, Repubblica (anche: Corea del Sud)", - }, - 118: {"de": "Kuwait", "fr": "Koweït", "it": "Kuwait"}, - 119: {"de": "Kirgisistan", "fr": "Kirgistan", "it": "Kirghizistan"}, - 120: {"de": "Laos", "fr": "Laos", "it": "Laos"}, - 121: {"de": "Lettland", "fr": "Lettonie", "it": "Lettonia"}, - 122: {"de": "Libanon", "fr": "Lebanon", "it": "Libano"}, - 123: {"de": "Lesotho", "fr": "Lesotho", "it": "Lesotho"}, - 124: {"de": "Liberia", "fr": "Liberia", "it": "Liberia"}, - 125: {"de": "Libyen", "fr": "Libye", "it": "Libia"}, - 126: {"de": "Liechtenstein", "fr": "Liechtenstein", "it": "Liechtenstein"}, - 127: {"de": "Litauen", "fr": "Lituanie", "it": "Lituania"}, - 128: {"de": "Luxembourg", "fr": "Luxembourg", "it": "Lussemburgo"}, - 130: { - "de": "Nordmazedonien", - "fr": "Macédoine du Nord", - "it": "Macedonia del Nord", - }, - 131: {"de": "Madagaskar", "fr": "Madagascar", "it": "Madagascar"}, - 132: {"de": "Malawi", "fr": "Malawi", "it": "Malawi"}, - 133: {"de": "Malaysia", "fr": "Malaisie", "it": "Malesia"}, - 134: {"de": "Malediven", "fr": "Maldives", "it": "Maldive"}, - 135: {"de": "Mali", "fr": "Mali", "it": "Mali"}, - 136: {"de": "Malta", "fr": "Malte", "it": "Malta"}, - 137: {"de": "Marshall Inseln", "fr": "Iles Marshall", "it": "Isole Marshall"}, - 139: {"de": "Mauretanien", "fr": "Mauritanie", "it": "Mauritania"}, - 140: {"de": "Mauritius", "fr": "Ile Maurice", "it": "Mauritius"}, - 142: {"de": "Mexico", "fr": "Mexique", "it": "Messico"}, - 143: {"de": "Mikronesien", "fr": "Micronésie", "it": "Micronesia"}, - 144: {"de": "Moldavien", "fr": "Moldavie", "it": "Moldova"}, - 145: {"de": "Monaco", "fr": "Monaco", "it": "Monaco"}, - 146: {"de": "Mongolei", "fr": "Mongolie", "it": "Mongolia"}, - 148: {"de": "Marokko", "fr": "Morocco", "it": "Marocco"}, - 149: {"de": "Mosambik", "fr": "Mozambique", "it": "Mozambico"}, - 150: {"de": "Myanmar", "fr": "Myanmar", "it": "Myanmar"}, - 151: {"de": "Namibia", "fr": "Namibie", "it": "Namibia"}, - 152: {"de": "Nauru", "fr": "Nauru", "it": "Nauru"}, - 153: {"de": "Nepal", "fr": "Népal", "it": "Nepal"}, - 154: {"de": "Niederlande", "fr": "Pays-Bas", "it": "Paesi Bassi"}, - 157: {"de": "Neuseeland", "fr": "Nouvelle-Zélande", "it": "Nuova Zelanda"}, - 158: {"de": "Nicaragua", "fr": "Nicaragua", "it": "Nicaragua"}, - 159: {"de": "Niger", "fr": "Niger", "it": "Niger"}, - 160: {"de": "Nigeria", "fr": "Nigeria", "it": "Nigeria"}, - 164: {"de": "Norwegen", "fr": "Norvège", "it": "Norvegia"}, - 165: {"de": "Oman", "fr": "Oman", "it": "Oman"}, - 166: {"de": "Pakistan", "fr": "Pakistan", "it": "Pakistan"}, - 167: {"de": "Palau", "fr": "Palau", "it": "Palau"}, - 168: {"de": "Panama", "fr": "Panama", "it": "Panama"}, - 170: { - "de": "Papua-Neuguinea", - "fr": "Papouasie Nouvelle-Guinée", - "it": "Papua Nuova Guinea", - }, - 171: {"de": "Paraguay", "fr": "Paraguay", "it": "Paraguay"}, - 172: {"de": "Peru", "fr": "Pérou", "it": "Perù"}, - 173: {"de": "Philippinen", "fr": "Philippines", "it": "Filippine"}, - 175: {"de": "Polen", "fr": "Pologne", "it": "Polonia"}, - 176: {"de": "Portugal", "fr": "Portugal", "it": "Portogallo"}, - 178: {"de": "Katar", "fr": "Qatar", "it": "Qatar"}, - 180: {"de": "Rumänien", "fr": "Roumanie", "it": "Romania"}, - 181: {"de": "Russische Föderation", "fr": "Russie", "it": "Russia"}, - 182: {"de": "Ruanda", "fr": "Ruanda", "it": "Ruanda"}, - 183: { - "de": "Saint Kitts und Nevis", - "fr": "Saint-Kitts-et-Nevis", - "it": "Saint Kitts e Nevis", - }, - 184: {"de": "St. Lucia", "fr": "Sainte-Lucie", "it": "Santa Lucia"}, - 185: { - "de": "St. Vincent und die Grenadinen", - "fr": "Saint-Vincent-et-Les Grenadines", - "it": "Saint Vincent e Grenadine", - }, - 186: {"de": "Samoa", "fr": "Samoa", "it": "Samoa"}, - 187: {"de": "San Marino", "fr": "San Marino", "it": "San Marino"}, - 188: { - "de": "Sao Tome und Principe", - "fr": "Sao Tomé-et-Principe", - "it": "São Tomé e Principe", - }, - 189: {"de": "Saudi-Arabien", "fr": "Arabie Saoudite", "it": "Arabia Saudita"}, - 190: {"de": "Senegal", "fr": "Sénégal", "it": "Senegal"}, - 191: {"de": "Seychellen", "fr": "Seychelles", "it": "Seychelles"}, - 192: {"de": "Sierra Leone", "fr": "Sierra Leone", "it": "Sierra Leone"}, - 193: {"de": "Singapur", "fr": "Singapour", "it": "Singapore"}, - 194: {"de": "Slowakei", "fr": "Slovaquie", "it": "Slovacchia"}, - 195: {"de": "Slowenien", "fr": "Slovénie", "it": "Slovenia"}, - 196: {"de": "Salomonen", "fr": "Iles Salomon", "it": "Salomone"}, - 197: {"de": "Somalia", "fr": "Somalie", "it": "Somalia"}, - 198: {"de": "Südafrika", "fr": "Afrique du Sud", "it": "Africa del Sud"}, - 200: {"de": "Spanien", "fr": "Espagne", "it": "Spagna"}, - 201: {"de": "Sri Lanka", "fr": "Sri Lanka", "it": "Sri Lanka"}, - 204: {"de": "Sudan", "fr": "Soudan", "it": "Sudan"}, - 205: {"de": "Suriname", "fr": "Suriname", "it": "Suriname"}, - 207: {"de": "Swasiland", "fr": "Swaziland", "it": "Swaziland"}, - 208: {"de": "Schweden", "fr": "Suède", "it": "Svezia"}, - 209: {"de": "Schweiz", "fr": "Suisse", "it": "Svizzera"}, - 210: {"de": "Syrien", "fr": "Syrie", "it": "Siria"}, - 211: {"de": "Taiwan", "fr": "Taïwan", "it": "Taiwan"}, - 212: {"de": "Tadschikistan", "fr": "Tadjikistan", "it": "Tagikistan"}, - 213: {"de": "Tansania", "fr": "Tanzanie", "it": "Tanzania"}, - 214: {"de": "Thailand", "fr": "Thaïlande", "it": "Tailandia"}, - 215: {"de": "Togo", "fr": "Togo", "it": "Togo"}, - 217: {"de": "Tonga", "fr": "Tonga", "it": "Tonga"}, - 218: { - "de": "Trinidad und Tobago", - "fr": "Trinité-et-Tobago", - "it": "Trinidad e Tobago", - }, - 219: {"de": "Tunesien", "fr": "Tunisie", "it": "Tunisia"}, - 220: {"de": "Türkei", "fr": "Turchia", "it": "Turchia"}, - 221: {"de": "Turkmenistan", "fr": "Turkménistan", "it": "Turkmenistan"}, - 223: {"de": "Tuvalu", "fr": "Tuvalu", "it": "Tuvalu"}, - 224: {"de": "Uganda", "fr": "Ouganda", "it": "Uganda"}, - 225: {"de": "Ukraine", "fr": "Ukraine", "it": "Ucraina"}, - 226: { - "de": "Vereinigte Arabische Emirate", - "fr": "Émirats Arabes Unis", - "it": "Emirati Arabi Uniti", - }, - 227: {"de": "Großbritannien", "fr": "Royaume-Uni", "it": "Regno Unito"}, - 228: {"de": "USA", "fr": "États-Unis", "it": "Stati Uniti d´ America"}, - 230: {"de": "Uruguay", "fr": "Uruguay", "it": "Uruguay"}, - 231: {"de": "Usbekistan", "fr": "Ouzbékistan", "it": "Uzbekistan"}, - 232: {"de": "Vanuatu", "fr": "Vanuatu", "it": "Vanuatu"}, - 233: {"de": "Vatikanstadt", "fr": "Vatican", "it": "Città del Vaticano"}, - 234: {"de": "Venezuela", "fr": "Venezuela", "it": "Venezuela"}, - 235: {"de": "Vietnam", "fr": "Viêtnam", "it": "Vietnam"}, - 239: {"de": "Sahara", "fr": "Sahara", "it": "Sahara"}, - 240: {"de": "Jemen", "fr": "Yémen", "it": "Yemen"}, - 241: {"de": "Serbien", "fr": "Serbie", "it": "Serbia"}, - 242: {"de": "Montenegro", "fr": "Monténégro", "it": "Montenegro"}, - 243: {"de": "Sambia", "fr": "Zambie", "it": "Zambia"}, - 244: {"de": "Simbabwe", "fr": "Zimbabwe", "it": "Zimbabwe"}, - 245: {"de": "Hong Kong", "fr": "Hong Kong", "it": "Hong Kong"}, - 246: {"de": "Falkland Inseln", "fr": "Îles Malouines", "it": "Isole Falkland"}, - 247: {"de": "Aruba", "fr": "Aruba", "it": "Aruba"}, - 248: {"de": "Bermuda", "fr": "Bermudes", "it": "Bermuda"}, - 249: { - "de": "Britische Jungferninseln", - "fr": "Îles Vierges britanniques", - "it": "Isole Vergini britanniche", - }, - 250: {"de": "Curaçao", "fr": "Curaçao", "it": "Curaçao"}, - 251: {"de": "Anguilla", "fr": "Anguilla", "it": "Anguilla"}, - 252: {"de": "Montserrat", "fr": "Montserrat", "it": "Montserrat"}, - 253: { - "de": "Bonaire, Sint Eustatius und Saba", - "fr": "Bonaire, Saint-Eustache et Saba", - "it": "Bonaire, Sint Eustatius e Saba", - }, - 254: {"de": "Cayman Inseln", "fr": "Îles Caïmans", "it": "Isole Cayman"}, - 255: {"de": "Sint Maarten", "fr": "Saint-Martin", "it": "Sint Maarten"}, - 256: { - "de": "Turks- und Caicos-Inseln", - "fr": "Îles Turks et Caïques", - "it": "Turks e Caicos", - }, - 257: {"de": "Saint-Barth", "fr": "Saint-Barthélemy", "it": "Saint-Barth"}, - 258: { - "de": "Palästinensisches Gebiet", - "fr": "Territoires palestiniens occupés", - "it": "Territori palestinesi", - }, - 259: {"de": "Kosovo", "fr": "Kosovo", "it": "Kosovo"}, - 260: {"de": "Gibraltar", "fr": "Gibraltar", "it": "Gibilterra"}, - 261: {"de": "Neukaledonien", "fr": "Nouvelle-Calédonie", "it": "Nuova Caledonia"}, - 262: { - "de": "Französisch-Polynesien", - "fr": "Polynésie française", - "it": "Polinesia francese", - }, - 310: { - "de": "Niederländische Antillen", - "fr": "Antilles néerlandaises", - "it": "Antille olandesi", - }, - 311: {"de": "Antarktika", "fr": "Antarctique", "it": "Antartide"}, - 312: { - "de": "Amerikanisch-Samoa", - "fr": "Samoa américaines", - "it": "Samoa americane", - }, - 313: {"de": "Åland", "fr": "Åland", "it": "Åland"}, - 314: {"de": "Bouvetinsel", "fr": "Île Bouvet", "it": "Isola Bouvet"}, - 315: {"de": "Kokosinseln", "fr": "Îles Cocos", "it": "Isole Cocos (Keeling)"}, - 316: {"de": "Cookinseln", "fr": "Îles Cook", "it": "Isole Cook"}, - 317: { - "de": "Clipperton-Insel", - "fr": "Île de Clipperton", - "it": "Isola di Clipperton", - }, - 318: {"de": "Weihnachtsinsel", "fr": "Île Christmas", "it": "Isola di Natale"}, - 319: {"de": "Färöer-Inseln", "fr": "Îles Féroé", "it": "Isole Färöer"}, - 320: { - "de": "Französisch-Guayana", - "fr": "Guyane française", - "it": "Guyana francese", - }, - 321: {"de": "Guernsey", "fr": "Guernsey", "it": "Guernsey"}, - 322: {"de": "Grönland", "fr": "Groenland", "it": "Groenlandia"}, - 323: {"de": "Guadeloupe", "fr": "Guadeloupe", "it": "Guadalupa"}, - 324: { - "de": "Südgeorgien und die Südlichen Sandwichinseln", - "fr": "Géorgie du Sud et Îles Sandwich du Sud", - "it": "Georgia del Sud e Sandwich Australi", - }, - 325: {"de": "Guam", "fr": "Guam", "it": "Guam"}, - 326: { - "de": "Heard und McDonaldinseln", - "fr": "Îles Heard et McDonald", - "it": "Isola Heard e Isole McDonald", - }, - 327: {"de": "Insel Man", "fr": "Île de Man", "it": "Isola di Man"}, - 328: { - "de": "Britisches Territorium im Indischen Ozean", - "fr": "Territoire britannique de l´océan Indien", - "it": "Territori Britannici dell´Oceano Indiano", - }, - 329: {"de": "Jersey", "fr": "Jersey", "it": "Jersey"}, - 330: {"de": "Saint-Martin", "fr": "Saint-Martin", "it": "Saint Martin"}, - 331: {"de": "Macau", "fr": "Macao", "it": "Macao"}, - 332: { - "de": "Nördliche Marianen", - "fr": "Îles Mariannes du Nord", - "it": "Isole Marianne Settentrionali", - }, - 333: {"de": "Martinique", "fr": "Martinique", "it": "Martinica"}, - 334: {"de": "Norfolkinsel", "fr": "Île Norfolk", "it": "Isola Norfolk"}, - 335: {"de": "Niue", "fr": "Niue", "it": "Niue"}, - 336: { - "de": "Saint-Pierre und Miquelon", - "fr": "Saint-Pierre-et-Miquelon", - "it": "Saint-Pierre e Miquelon", - }, - 337: {"de": "Pitcairninseln", "fr": "Îles Pitcairn", "it": "Isole Pitcairn"}, - 338: {"de": "Puerto Rico", "fr": "Porto Rico", "it": "Porto Rico"}, - 339: {"de": "La Réunion", "fr": "La Réunion", "it": "Isola della Riunione"}, - 340: { - "de": "St. Helena, Ascension und Tristan da Cunha", - "fr": "Sainte-Hélène, Ascension et Tristan da Cunha", - "it": "Sant´Elena, Ascensione e Tristan da Cunha", - }, - 341: { - "de": "Spitzbergen, Jan Mayen", - "fr": "Spitzberg, Jan Mayen", - "it": "Svalbard e Jan Mayen", - }, - 342: {"de": "Südsudan", "fr": "Sud-Soudan", "it": "Sudan del Sud"}, - 343: { - "de": "Französische Süd- und Antarktisgebiete", - "fr": "Terres australes et antarctiques françaises", - "it": "Territori australi e antartico francese", - }, - 344: {"de": "Tokelau", "fr": "Tokelau", "it": "Tokelau"}, - 345: { - "de": "United States Minor Outlying Islands", - "fr": "Îles mineures éloignées des États-Unis", - "it": "Isole Minori Esterne degli Stati Uniti", - }, - 346: { - "de": "Amerikanische Jungferninseln", - "fr": "Îles Vierges américaines", - "it": "Isole Vergini Americane", - }, - 347: {"de": "Wallis und Futuna", "fr": "Wallis et Futuna", "it": "Wallis e Futuna"}, - 348: {"de": "Mayotte", "fr": "Mayotte", "it": "Mayotte"}, -} - - -def add_countries(apps=None, schema_editor=None): - if apps is None: - # pylint: disable=import-outside-toplevel - from vbv_lernwelt.shop.models import Country - else: - Country = apps.get_model("shop", "Country") - - for country_id, country_name in countries.items(): - Country.objects.get_or_create( - country_id=country_id, - name_de=country_name["de"], - name_fr=country_name["fr"], - name_it=country_name["it"], - ) - - -def remove_countries(apps=None, schema_editor=None): - if apps is None: - # pylint: disable=import-outside-toplevel - from vbv_lernwelt.shop.models import Country - else: - Country = apps.get_model("shop", "Country") - - for country_id in countries.keys(): - Country.objects.filter( - country_id=country_id, - ).delete() diff --git a/server/vbv_lernwelt/shop/models.py b/server/vbv_lernwelt/shop/models.py index e2f728b0..0c3e75f5 100644 --- a/server/vbv_lernwelt/shop/models.py +++ b/server/vbv_lernwelt/shop/models.py @@ -1,21 +1,6 @@ from django.db import models -class Country(models.Model): - country_id = models.IntegerField(primary_key=True) - name_de = models.CharField(max_length=255) - name_fr = models.CharField(max_length=255) - name_it = models.CharField(max_length=255) - - def __str__(self): - return f"{self.name_de} ({self.country_id})" - - class Meta: - verbose_name = "Country" - verbose_name_plural = "Countries" - ordering = ["country_id"] - - class BillingAddress(models.Model): """ Draft of a billing address for a purchase from the shop. diff --git a/server/vbv_lernwelt/shop/serializers.py b/server/vbv_lernwelt/shop/serializers.py index 89a1787c..c29b8b3e 100644 --- a/server/vbv_lernwelt/shop/serializers.py +++ b/server/vbv_lernwelt/shop/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import BillingAddress, Country +from .models import BillingAddress class BillingAddressSerializer(serializers.ModelSerializer): @@ -21,9 +21,3 @@ class BillingAddressSerializer(serializers.ModelSerializer): "company_city", "company_country", ] - - -class CountrySerializer(serializers.ModelSerializer): - class Meta: - model = Country - fields = "__all__" From b8f9a56e1de4f634e02c6c580f9f64805f80384b Mon Sep 17 00:00:00 2001 From: Reto Aebersold Date: Wed, 24 Jan 2024 21:27:27 +0100 Subject: [PATCH 02/22] feat: profile org data --- .../personalProfile/PersonalProfilePage.vue | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/client/src/pages/personalProfile/PersonalProfilePage.vue b/client/src/pages/personalProfile/PersonalProfilePage.vue index 0b944b4f..178e2e81 100644 --- a/client/src/pages/personalProfile/PersonalProfilePage.vue +++ b/client/src/pages/personalProfile/PersonalProfilePage.vue @@ -1,7 +1,18 @@