2020-02-25 19:53:12 +00:00
|
|
|
from django.contrib.auth import get_user_model
|
|
|
|
|
|
|
|
from rest_framework import serializers
|
2020-02-27 10:59:28 +00:00
|
|
|
from .models import VMHost, VMProduct, VMSnapshotProduct
|
2020-03-03 09:14:56 +00:00
|
|
|
from uncloud_pay.models import RecurringPeriod
|
2020-02-25 19:53:12 +00:00
|
|
|
|
|
|
|
class VMHostSerializer(serializers.HyperlinkedModelSerializer):
|
|
|
|
class Meta:
|
|
|
|
model = VMHost
|
|
|
|
fields = '__all__'
|
2020-02-25 21:01:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
class VMProductSerializer(serializers.HyperlinkedModelSerializer):
|
2020-03-03 09:14:56 +00:00
|
|
|
# TODO: move this to VMProduct.
|
|
|
|
allowed_recurring_periods=list(filter(
|
|
|
|
lambda pair: pair[0] in [RecurringPeriod.PER_MONTH, RecurringPeriod.PER_HOUR],
|
|
|
|
RecurringPeriod.choices))
|
|
|
|
|
|
|
|
# Custom field used at creation (= ordering) only.
|
|
|
|
recurring_period = serializers.ChoiceField(
|
|
|
|
choices=allowed_recurring_periods)
|
|
|
|
|
2020-02-25 21:01:55 +00:00
|
|
|
class Meta:
|
|
|
|
model = VMProduct
|
2020-02-28 15:26:45 +00:00
|
|
|
fields = ['uuid', 'order', 'owner', 'status', 'name', \
|
2020-03-03 09:14:56 +00:00
|
|
|
'cores', 'ram_in_gb', 'recurring_period']
|
2020-02-28 15:26:45 +00:00
|
|
|
read_only_fields = ['uuid', 'order', 'owner', 'status']
|
2020-02-27 14:29:15 +00:00
|
|
|
|
2020-02-27 11:31:20 +00:00
|
|
|
class VMSnapshotProductSerializer(serializers.ModelSerializer):
|
2020-02-27 10:36:50 +00:00
|
|
|
class Meta:
|
|
|
|
model = VMSnapshotProduct
|
|
|
|
fields = '__all__'
|
2020-02-27 14:29:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
# verify that vm.owner == user.request
|
|
|
|
def validate_vm(self, value):
|
|
|
|
print(value)
|
|
|
|
return True
|