This commit is contained in:
2025-10-28 03:21:01 +01:00
parent 10796dcb31
commit 73da41b514
44 changed files with 1868 additions and 452 deletions

View File

@@ -3,4 +3,5 @@ from django.apps import AppConfig
class StripeConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'stripe'
name = 'thirdparty.stripe'
label = "stripe"

View File

@@ -0,0 +1,26 @@
# Generated by Django 5.2.7 on 2025-10-28 00:13
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Order',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('amount', models.DecimalField(decimal_places=2, max_digits=10)),
('currency', models.CharField(default='czk', max_length=10)),
('status', models.CharField(choices=[('pending', 'Pending'), ('paid', 'Paid'), ('failed', 'Failed'), ('cancelled', 'Cancelled')], default='pending', max_length=20)),
('stripe_session_id', models.CharField(blank=True, max_length=255, null=True)),
('stripe_payment_intent', models.CharField(blank=True, max_length=255, null=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
],
),
]

View File

@@ -1,54 +1,29 @@
from rest_framework import serializers
from rest_framework import serializers
from .models import Product, Carrier, Order
from ...commerce.serializers import ProductSerializer, CarrierSerializer
from .models import Order
class OrderSerializer(serializers.ModelSerializer):
product = ProductSerializer(read_only=True)
product_id = serializers.PrimaryKeyRelatedField(
queryset=Product.objects.all(), source="product", write_only=True
)
carrier = CarrierSerializer(read_only=True)
carrier_id = serializers.PrimaryKeyRelatedField(
queryset=Carrier.objects.all(), source="carrier", write_only=True
)
# Nested read-only representations
# product = ProductSerializer(read_only=True)
# carrier = CarrierSerializer(read_only=True)
class Meta:
model = Order
fields = [
"id",
"product", "product_id",
"carrier", "carrier_id",
"quantity",
"total_price",
"status",
"stripe_session_id",
"created_at",
"updated_at",
]
read_only_fields = ("total_price", "status", "stripe_session_id", "created_at", "updated_at")
# Write-only foreign keys
# product_id = serializers.PrimaryKeyRelatedField(
# queryset=Product.objects.all(), source="product", write_only=True
# )
# carrier_id = serializers.PrimaryKeyRelatedField(
# queryset=Carrier.objects.all(), source="carrier", write_only=True
# )
queryset=Product.objects.all(), source="product", write_only=True
carrier = CarrierSerializer(read_only=True)
carrier_id = serializers.PrimaryKeyRelatedField(
queryset=Carrier.objects.all(), source="carrier", write_only=True
)
class Meta:
model = Order
fields = [
"id",
"product", "product_id",
"carrier", "carrier_id",
"quantity",
"total_price",
"status",
"stripe_session_id",
"created_at",
"updated_at",
]
read_only_fields = ("total_price", "status", "stripe_session_id", "created_at", "updated_at")
class Meta:
model = Order
fields = [
"id",
"amount",
"currency",
"status",
"stripe_session_id",
"stripe_payment_intent",
"created_at",
]
read_only_fields = ("created_at",)

View File

@@ -8,9 +8,10 @@ from rest_framework.views import APIView
from .models import Order
from .serializers import OrderSerializer
import os
import stripe
stripe.api_key = settings.STRIPE_SECRET_KEY # uložený v .env
stripe.api_key = os.getenv("STRIPE_SECRET_KEY")
class CreateCheckoutSessionView(APIView):
def post(self, request):