- Added PricingPlan Model

- Implement a complete cycle for buying a Matrix Chat Host
- Refactor the Payement cycle and stripe related methods
This commit is contained in:
amalelshihaby 2021-07-19 16:36:10 +02:00 committed by Nico Schottelius
commit b7aa1c6971
81 changed files with 5079 additions and 810 deletions

View file

@ -3,7 +3,7 @@ from django.db import transaction
from .models import *
from .selectors import *
from .tasks import *
from django_q.tasks import async_task, result
@transaction.atomic
def create_wireguard_vpn(owner, public_key, network_mask):
@ -60,7 +60,6 @@ def create_wireguard_vpn_tech(owner, public_key, network_mask):
server = pool.vpn_server_hostname
wg_name = pool.wg_name
configure_wireguard_server_on_host.apply_async((wg_name, config),
queue=server)
async_task(configure_wireguard_server_on_host, (wg_name, config), queue=server)
return vpn

View file

@ -1,17 +1,14 @@
from celery import shared_task
from .models import *
from uncloud.models import UncloudTask
import os
import subprocess
import logging
import uuid
from django_q.tasks import async_task, result
log = logging.getLogger(__name__)
@shared_task
def configure_wireguard_server_on_host(wg_name, config):
"""
- Create wireguard config (DB query -> string)
@ -47,11 +44,9 @@ def configure_wireguard_server_via_cdist(wireguardvpnpool):
log.info(f"Configuring VPN server {server} (async)")
task_id = uuid.UUID(cdist_configure_wireguard_server.apply_async((config, server)).id)
UncloudTask.objects.create(task_id=task_id)
async_task(cdist_configure_wireguard_server,config, server).id
@shared_task
def cdist_configure_wireguard_server(config, server):
"""
Create config and configure server.

View file

@ -37,7 +37,7 @@ class VPNTests(TestCase):
self.vpn_wireguard_public_key = 'B2b78eWBIXPMM1x4DDjkCDZepS0qDgcLN3T3PjcgXkY='
self.vpnpool = VPNPool.objects.get_or_create(network=self.pool_network,
self.vpnpool = WireGuardVPNPool.objects.get_or_create(network=self.pool_network,
network_size=self.pool_network_size,
subnetwork_size=self.pool_subnetwork_size,
vpn_hostname=self.pool_vpn_hostname,
@ -47,55 +47,6 @@ class VPNTests(TestCase):
self.factory = APIRequestFactory()
def test_create_vpnpool(self):
url = reverse("vpnpool-list")
view = VPNPoolViewSet.as_view({'post': 'create'})
request = self.factory.post(url, { 'network': self.pool_network2,
'network_size': self.pool_network_size,
'subnetwork_size': self.pool_subnetwork_size,
'vpn_hostname': self.pool_vpn_hostname,
'wireguard_private_key': self.pool_wireguard_private_key
})
force_authenticate(request, user=self.admin_user)
response = view(request)
# This raises an exception if the request was not successful
# No assert needed
pool = VPNPool.objects.get(network=self.pool_network2)
# def test_create_vpn(self):
# url = reverse("vpnnetwork-list")
# view = VPNNetworkViewSet.as_view({'post': 'create'})
# request = self.factory.post(url, { 'network_size': self.pool_subnetwork_size,
# 'wireguard_public_key': self.vpn_wireguard_public_key
# })
# force_authenticate(request, user=self.user)
# # we don't have a billing address -> should raise an error
# # with self.assertRaises(ValidationError):
# # response = view(request)
# addr = BillingAddress.objects.get_or_create(
# owner=self.user,
# active=True,
# defaults={'organization': 'ungleich',
# 'name': 'Nico Schottelius',
# 'street': 'Hauptstrasse 14',
# 'city': 'Luchsingen',
# 'postal_code': '8775',
# 'country': 'CH' }
# )
# # This should work now
# response = view(request)
# # Verify that an order was created successfully - there should only be one order at
# # this point in time
# order = Order.objects.get(owner=self.user)
def tearDown(self):
self.user.delete()

View file

@ -61,10 +61,3 @@ class WireGuardVPNSizes(viewsets.ViewSet):
print(sizes)
return Response(WireGuardVPNSizesSerializer(sizes, many=True).data)
# class VPNPoolViewSet(viewsets.ModelViewSet):
# serializer_class = VPNPoolSerializer
# permission_classes = [permissions.IsAdminUser]
# queryset = VPNPool.objects.all()