Compare commits
	
		
			4 commits
		
	
	
		
			4577ec4896
			...
			affb49a971
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| affb49a971 | |||
| 8aadae1c83 | |||
| 30ffdf1751 | |||
| aed8e97dbc | 
					 11 changed files with 526 additions and 619 deletions
				
			
		|  | @ -7,6 +7,7 @@ from __future__ import absolute_import, unicode_literals | ||||||
| from crispy_forms.helper import FormHelper | from crispy_forms.helper import FormHelper | ||||||
| from crispy_forms.layout import Submit | from crispy_forms.layout import Submit | ||||||
| from django import forms | from django import forms | ||||||
|  | from django.apps import apps | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.contrib.sites.models import Site | from django.contrib.sites.models import Site | ||||||
| from django.contrib.sites.requests import RequestSite | from django.contrib.sites.requests import RequestSite | ||||||
|  | @ -41,7 +42,7 @@ class ContactForm(forms.Form): | ||||||
|     def get_context(self): |     def get_context(self): | ||||||
|         if not self.is_valid(): |         if not self.is_valid(): | ||||||
|             raise ValueError("Cannot generate context from invalid contact form") |             raise ValueError("Cannot generate context from invalid contact form") | ||||||
|         if Site._meta.installed: |         if apps.is_installed("django.contrib.sites"): | ||||||
|             site = Site.objects.get_current() |             site = Site.objects.get_current() | ||||||
|         else: |         else: | ||||||
|             site = RequestSite(self.request) |             site = RequestSite(self.request) | ||||||
|  |  | ||||||
|  | @ -76,9 +76,6 @@ SITES_SITE_NAME = get_env_variable("GVA_SITE_NAME") | ||||||
| # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n | # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n | ||||||
| USE_I18N = True | USE_I18N = True | ||||||
| 
 | 
 | ||||||
| # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-l10n |  | ||||||
| USE_L10N = True |  | ||||||
| 
 |  | ||||||
| # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-tz | # See: https://docs.djangoproject.com/en/dev/ref/settings/#use-tz | ||||||
| USE_TZ = True | USE_TZ = True | ||||||
| # ######### END GENERAL CONFIGURATION | # ######### END GENERAL CONFIGURATION | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| from django.contrib import admin | from django.contrib import admin | ||||||
| from django.contrib.auth import get_user_model | from django.contrib.auth import get_user_model | ||||||
| from django.contrib.auth.admin import UserAdmin as BaseUserAdmin | from django.contrib.auth.admin import UserAdmin as BaseUserAdmin | ||||||
| from django.utils.translation import ugettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| 
 | 
 | ||||||
| from help.models import HelpUser | from help.models import HelpUser | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ import uuid | ||||||
| 
 | 
 | ||||||
| from django.conf import settings | from django.conf import settings | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.utils.translation import ugettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class HelpUser(models.Model): | class HelpUser(models.Model): | ||||||
|  |  | ||||||
|  | @ -16,37 +16,54 @@ User = get_user_model() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class CustomerHostingPackageTest(TestCase): | class CustomerHostingPackageTest(TestCase): | ||||||
|     def test_get_disk_space_bytes(self): |     def setUp(self) -> None: | ||||||
|         package = CustomerHostingPackage( |         self.user = User.objects.create(username="test") | ||||||
|             diskspace=10, diskspace_unit=DISK_SPACE_UNITS.G |         self.template = HostingPackageTemplate.objects.create( | ||||||
|  |             mailboxcount=10, | ||||||
|  |             diskspace=100, | ||||||
|  |             diskspace_unit=DISK_SPACE_UNITS.M, | ||||||
|  |             description="Test package 1 - Description", | ||||||
|  |             name="Test package 1", | ||||||
|         ) |         ) | ||||||
|  | 
 | ||||||
|  |     @override_settings(OSUSER_DEFAULT_GROUPS=[]) | ||||||
|  |     def test_get_disk_space_bytes(self): | ||||||
|  |         self.template.diskspace = 10 | ||||||
|  |         self.template.diskspace_unit = DISK_SPACE_UNITS.G | ||||||
|  |         self.template.save() | ||||||
|  |         package = CustomerHostingPackage.objects.create_from_template( | ||||||
|  |             customer=self.user, template=self.template, name="customer", | ||||||
|  |         ) | ||||||
|  |         package.save() | ||||||
|         self.assertEqual(package.get_disk_space(), 10 * 1024 ** 3) |         self.assertEqual(package.get_disk_space(), 10 * 1024 ** 3) | ||||||
| 
 | 
 | ||||||
|  |     @override_settings(OSUSER_DEFAULT_GROUPS=[]) | ||||||
|     def test_get_disk_space_mib(self): |     def test_get_disk_space_mib(self): | ||||||
|         package = CustomerHostingPackage( |         self.template.diskspace = 10 | ||||||
|             diskspace=10, diskspace_unit=DISK_SPACE_UNITS.G |         self.template.diskspace_unit = DISK_SPACE_UNITS.G | ||||||
|  |         self.template.save() | ||||||
|  |         package = CustomerHostingPackage.objects.create_from_template( | ||||||
|  |             customer=self.user, template=self.template, name="customer", | ||||||
|         ) |         ) | ||||||
|  |         package.save() | ||||||
|         self.assertEqual(package.get_disk_space(DISK_SPACE_UNITS.M), 10 * 1024) |         self.assertEqual(package.get_disk_space(DISK_SPACE_UNITS.M), 10 * 1024) | ||||||
| 
 | 
 | ||||||
|  |     @override_settings(OSUSER_DEFAULT_GROUPS=[]) | ||||||
|     def test_get_quota(self): |     def test_get_quota(self): | ||||||
|         package = CustomerHostingPackage( |         self.template.diskspace = 256 | ||||||
|             diskspace=256, diskspace_unit=DISK_SPACE_UNITS.M |         self.template.diskspace_unit = DISK_SPACE_UNITS.M | ||||||
|  |         self.template.save() | ||||||
|  |         package = CustomerHostingPackage.objects.create_from_template( | ||||||
|  |             customer=self.user, template=self.template, name="customer", | ||||||
|         ) |         ) | ||||||
|  |         package.save() | ||||||
|         self.assertEqual(package.get_quota(), (262144, 275251)) |         self.assertEqual(package.get_quota(), (262144, 275251)) | ||||||
| 
 | 
 | ||||||
|     @override_settings(OSUSER_DEFAULT_GROUPS=["testgroup"]) |     @override_settings(OSUSER_DEFAULT_GROUPS=["testgroup"]) | ||||||
|     def test_additional_group_not_defined(self): |     def test_additional_group_not_defined(self): | ||||||
|         user = User.objects.create(username="test") |  | ||||||
|         template = HostingPackageTemplate.objects.create( |  | ||||||
|             description="Test package 1 - Description", |  | ||||||
|             mailboxcount=10, |  | ||||||
|             diskspace=100, |  | ||||||
|             diskspace_unit=DISK_SPACE_UNITS.M, |  | ||||||
|             name="Test package 1", |  | ||||||
|         ) |  | ||||||
|         with self.assertRaises(ImproperlyConfigured) as ctx: |         with self.assertRaises(ImproperlyConfigured) as ctx: | ||||||
|             package = CustomerHostingPackage.objects.create_from_template( |             package = CustomerHostingPackage.objects.create_from_template( | ||||||
|                 customer=user, template=template, name="Test customer package" |                 customer=self.user, template=self.template, name="Test customer package", | ||||||
|             ) |             ) | ||||||
|             package.save() |             package.save() | ||||||
|         self.assertIn("testgroup", str(ctx.exception)) |         self.assertIn("testgroup", str(ctx.exception)) | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| from django.apps import AppConfig | from django.apps import AppConfig | ||||||
| from django.utils.translation import ugettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class InvoiceConfig(AppConfig): | class InvoiceConfig(AppConfig): | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ from django.conf import settings | ||||||
| from django.core.exceptions import ValidationError | from django.core.exceptions import ValidationError | ||||||
| from django.core.validators import FileExtensionValidator | from django.core.validators import FileExtensionValidator | ||||||
| from django.db import models | from django.db import models | ||||||
| from django.utils.translation import ugettext_lazy as _ | from django.utils.translation import gettext_lazy as _ | ||||||
| 
 | 
 | ||||||
| CURRENCIES = [(1, "EUR")] | CURRENCIES = [(1, "EUR")] | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -140,7 +140,7 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         def get_target(maf): |         def get_target(maf): | ||||||
|             return maf.target |             return maf.target | ||||||
| 
 | 
 | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target |             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -152,7 +152,7 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         def get_target(maf): |         def get_target(maf): | ||||||
|             return maf.target |             return maf.target | ||||||
| 
 | 
 | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target |             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -165,7 +165,7 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         def get_target(maf): |         def get_target(maf): | ||||||
|             return maf.target |             return maf.target | ||||||
| 
 | 
 | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             ma.mailaddressforward_set.all(), ["test3@example.org"], get_target |             ma.mailaddressforward_set.all(), ["test3@example.org"], get_target | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -178,7 +178,7 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         def get_target(maf): |         def get_target(maf): | ||||||
|             return maf.target |             return maf.target | ||||||
| 
 | 
 | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             ma.mailaddressforward_set.all(), |             ma.mailaddressforward_set.all(), | ||||||
|             ["test2@example.org", "test3@example.org"], |             ["test2@example.org", "test3@example.org"], | ||||||
|             get_target, |             get_target, | ||||||
|  | @ -198,7 +198,7 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         def get_target(maf): |         def get_target(maf): | ||||||
|             return maf.target |             return maf.target | ||||||
| 
 | 
 | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target |             ma.mailaddressforward_set.all(), ["test2@example.org"], get_target | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -213,7 +213,6 @@ class MailAddressTest(TestCaseWithCeleryTasks): | ||||||
|         md = MailDomain.objects.create(domain="example.org") |         md = MailDomain.objects.create(domain="example.org") | ||||||
|         ma = MailAddress(localpart="test", domain=md) |         ma = MailAddress(localpart="test", domain=md) | ||||||
|         mafwds = ma.set_forward_addresses(["test2@example.org"], commit=False) |         mafwds = ma.set_forward_addresses(["test2@example.org"], commit=False) | ||||||
|         self.assertEqual(ma.mailaddressforward_set.count(), 0) |  | ||||||
|         self.assertEqual(mafwds[0].target, "test2@example.org") |         self.assertEqual(mafwds[0].target, "test2@example.org") | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -242,14 +241,14 @@ class MailboxManagerTest(TestCaseWithCeleryTasks): | ||||||
|         md = MailDomain.objects.create(domain="example.org") |         md = MailDomain.objects.create(domain="example.org") | ||||||
|         address = MailAddress.objects.create(localpart="test", domain=md) |         address = MailAddress.objects.create(localpart="test", domain=md) | ||||||
|         mailboxes = Mailbox.objects.unused_or_own(address, self.user) |         mailboxes = Mailbox.objects.unused_or_own(address, self.user) | ||||||
|         self.assertQuerysetEqual(mailboxes, []) |         self.assertQuerySetEqual(mailboxes, []) | ||||||
| 
 | 
 | ||||||
|     def test_unused_or_own_unassigned(self): |     def test_unused_or_own_unassigned(self): | ||||||
|         md = MailDomain.objects.create(domain="example.org") |         md = MailDomain.objects.create(domain="example.org") | ||||||
|         address = MailAddress.objects.create(localpart="test", domain=md) |         address = MailAddress.objects.create(localpart="test", domain=md) | ||||||
|         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] |         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] | ||||||
|         assignable = Mailbox.objects.unused_or_own(address, self.user) |         assignable = Mailbox.objects.unused_or_own(address, self.user) | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             assignable, [repr(mb) for mb in mailboxes], transform=repr |             assignable, [repr(mb) for mb in mailboxes], transform=repr | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -259,7 +258,7 @@ class MailboxManagerTest(TestCaseWithCeleryTasks): | ||||||
|         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] |         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] | ||||||
|         address.set_mailbox(mailboxes[0]) |         address.set_mailbox(mailboxes[0]) | ||||||
|         assignable = Mailbox.objects.unused_or_own(address, self.user) |         assignable = Mailbox.objects.unused_or_own(address, self.user) | ||||||
|         self.assertQuerysetEqual( |         self.assertQuerySetEqual( | ||||||
|             assignable, [repr(mb) for mb in mailboxes], transform=repr |             assignable, [repr(mb) for mb in mailboxes], transform=repr | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  | @ -270,16 +269,16 @@ class MailboxManagerTest(TestCaseWithCeleryTasks): | ||||||
|         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] |         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] | ||||||
|         address2.set_mailbox(mailboxes[0]) |         address2.set_mailbox(mailboxes[0]) | ||||||
|         assignable = Mailbox.objects.unused_or_own(address, self.user) |         assignable = Mailbox.objects.unused_or_own(address, self.user) | ||||||
|         self.assertQuerysetEqual(assignable, [repr(mailboxes[1])], transform=repr) |         self.assertQuerySetEqual(assignable, [repr(mailboxes[1])], transform=repr) | ||||||
| 
 | 
 | ||||||
|     def test_unused_fresh(self): |     def test_unused_fresh(self): | ||||||
|         mailboxes = Mailbox.objects.unused(self.user) |         mailboxes = Mailbox.objects.unused(self.user) | ||||||
|         self.assertQuerysetEqual(mailboxes, []) |         self.assertQuerySetEqual(mailboxes, []) | ||||||
| 
 | 
 | ||||||
|     def test_unused_unassigned(self): |     def test_unused_unassigned(self): | ||||||
|         mailbox = Mailbox.objects.create_mailbox(self.user) |         mailbox = Mailbox.objects.create_mailbox(self.user) | ||||||
|         mailboxes = Mailbox.objects.unused(self.user) |         mailboxes = Mailbox.objects.unused(self.user) | ||||||
|         self.assertQuerysetEqual(mailboxes, [repr(mailbox)], transform=repr) |         self.assertQuerySetEqual(mailboxes, [repr(mailbox)], transform=repr) | ||||||
| 
 | 
 | ||||||
|     def test_unused_assigned(self): |     def test_unused_assigned(self): | ||||||
|         md = MailDomain.objects.create(domain="example.org") |         md = MailDomain.objects.create(domain="example.org") | ||||||
|  | @ -287,7 +286,7 @@ class MailboxManagerTest(TestCaseWithCeleryTasks): | ||||||
|         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] |         mailboxes = [Mailbox.objects.create_mailbox(self.user) for _ in range(2)] | ||||||
|         address.set_mailbox(mailboxes[0]) |         address.set_mailbox(mailboxes[0]) | ||||||
|         assignable = Mailbox.objects.unused(self.user) |         assignable = Mailbox.objects.unused(self.user) | ||||||
|         self.assertQuerysetEqual(assignable, [repr(mailboxes[1])], transform=repr) |         self.assertQuerySetEqual(assignable, [repr(mailboxes[1])], transform=repr) | ||||||
| 
 | 
 | ||||||
|     def test_create_mailbox_no_password(self): |     def test_create_mailbox_no_password(self): | ||||||
|         mailbox = Mailbox.objects.create_mailbox(self.user) |         mailbox = Mailbox.objects.create_mailbox(self.user) | ||||||
|  |  | ||||||
|  | @ -166,7 +166,7 @@ class DeleteSshPublicKeyTest(HostingPackageAwareTestMixin, TestCase): | ||||||
|             kwargs={"package": str(self.package.pk), "pk": str(self.sshkey.pk)}, |             kwargs={"package": str(self.package.pk), "pk": str(self.sshkey.pk)}, | ||||||
|         ) |         ) | ||||||
|         queryset = view.get_queryset() |         queryset = view.get_queryset() | ||||||
|         self.assertQuerysetEqual(queryset, [repr(self.sshkey)], transform=repr) |         self.assertQuerySetEqual(queryset, [repr(self.sshkey)], transform=repr) | ||||||
| 
 | 
 | ||||||
|     def test_get_context_data(self): |     def test_get_context_data(self): | ||||||
|         self.client.login(username=TEST_USER, password=TEST_PASSWORD) |         self.client.login(username=TEST_USER, password=TEST_PASSWORD) | ||||||
|  | @ -234,7 +234,7 @@ class EditSshPublicKeyCommentTest(HostingPackageAwareTestMixin, TransactionTestC | ||||||
|             kwargs={"package": str(self.package.pk), "pk": str(self.sshkey.pk)}, |             kwargs={"package": str(self.package.pk), "pk": str(self.sshkey.pk)}, | ||||||
|         ) |         ) | ||||||
|         queryset = view.get_queryset() |         queryset = view.get_queryset() | ||||||
|         self.assertQuerysetEqual(queryset, [repr(self.sshkey)], transform=repr) |         self.assertQuerySetEqual(queryset, [repr(self.sshkey)], transform=repr) | ||||||
| 
 | 
 | ||||||
|     def test_get_form_kwargs(self): |     def test_get_form_kwargs(self): | ||||||
|         self.client.login(username=TEST_USER, password=TEST_PASSWORD) |         self.client.login(username=TEST_USER, password=TEST_PASSWORD) | ||||||
|  |  | ||||||
							
								
								
									
										1040
									
								
								poetry.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1040
									
								
								poetry.lock
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -7,15 +7,15 @@ license = "AGPL-3+" | ||||||
| readme = "README.md" | readme = "README.md" | ||||||
| 
 | 
 | ||||||
| [tool.poetry.dependencies] | [tool.poetry.dependencies] | ||||||
| python = "^3.7" | python = "^3.8" | ||||||
| django = "<4" | django = "^4.2" | ||||||
| psycopg2-binary = "^2.9" | psycopg2-binary = "^2.9" | ||||||
| celery = "^5.2.7" | celery = "^5.2.7" | ||||||
| django-allauth = "^0.52.0" | django-allauth = "^0.52.0" | ||||||
| django-crispy-forms = "^2.0" | django-crispy-forms = "^2.0" | ||||||
| django-debug-toolbar = "^3.8" | django-debug-toolbar = "^3.8" | ||||||
| django-model-utils = "^4.1" | django-model-utils = "^4.1" | ||||||
| gvacommon = {version = "^0.6.0", source = "gnuviech"} | gvacommon = {version = "^0.7.0", source = "gnuviech"} | ||||||
| passlib = "^1.7.4" | passlib = "^1.7.4" | ||||||
| redis = "^4.5.1" | redis = "^4.5.1" | ||||||
| requests-oauthlib = "^1.3.1" | requests-oauthlib = "^1.3.1" | ||||||
|  | @ -40,8 +40,7 @@ isort = "<5" | ||||||
| [[tool.poetry.source]] | [[tool.poetry.source]] | ||||||
| name = "gnuviech" | name = "gnuviech" | ||||||
| url = "https://pypi.gnuviech-server.de/simple" | url = "https://pypi.gnuviech-server.de/simple" | ||||||
| default = false | priority = "explicit" | ||||||
| secondary = false |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| [build-system] | [build-system] | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue