- 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:
parent
e205d8d07c
commit
b7aa1c6971
81 changed files with 5079 additions and 810 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue