introduce service plans

This commit is contained in:
Tobias Brunner 2025-01-28 10:41:39 +01:00
parent f69f7fb755
commit 70f4a02db9
No known key found for this signature in database
11 changed files with 362 additions and 20 deletions

View file

@ -0,0 +1,23 @@
{% extends "admin/change_form.html" %}
{% load static %}
{% block extrahead %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/hide_inline_header.css' %}" />
{% endblock %}
{% block admin_change_form_document_ready %}
{{ block.super }}
<script>
django.jQuery(document).ready(function($) {
// Initialize collapse state for plan inlines
$('.plan-inline').addClass('collapsed');
// Add custom styling to price inline tables
$('.price-inline').find('table').addClass('price-table');
// Add helper text for default plan selection
$('.field-is_default').append('<p class="help">Only one plan can be default per service.</p>');
});
</script>
{% endblock %}

View file

@ -5,12 +5,12 @@
<div class="col-md-8">
<div class="card">
<div class="card-body">
<h2 class="card-title mb-4">Show Interest in {{ service.name }}</h2>
<h2 class="card-title mb-4">Order {{ service.name }}</h2>
<div class="mb-4">
<h5>Service Details</h5>
<p><strong>Provider:</strong> {{ service.cloud_provider.name }}</p>
<p><strong>Price:</strong> ${{ service.price }}</p>
<p><strong>Plan:</strong> {{ selected_plan.name }}</p>
</div>
{% if messages %}

View file

@ -33,17 +33,49 @@
<h5>Features</h5>
<p>{{ service.features|safe }}</p>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">Service Details</h5>
<p><strong>Price:</strong> ${{ service.price }}</p>
</div>
</div>
<div class="row mb-4">
<div class="col-12">
<h3 class="mb-4">Plans</h3>
<div class="row row-cols-1 row-cols-md-3 g-4">
{% for plan in service.plans.all %}
<div class="col">
<div class="card h-100 {% if plan.is_default %}border-primary{% endif %}">
{% if plan.is_default %}
<div class="card-header text-primary">
Recommended
</div>
{% endif %}
<div class="card-body">
<h5 class="card-title">{{ plan.name }}</h5>
<div class="card-text mb-3">{{ plan.description|safe }}</div>
<div class="mb-3">
{% for price in plan.prices.all %}
<div class="mb-1">
<strong>{{ price.currency.symbol }}</strong> {{ price.price }}
<small class="text-muted">{{ price.currency.code }}</small>
</div>
{% endfor %}
</div>
{% if plan.features %}
<div class="rich-text-content">
{{ plan.features|safe }}
</div>
{% endif %}
<a href="{% url 'services:create_lead' service.slug %}?plan={{ plan.id }}"
class="btn btn-primary mt-3">Order</a>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
<a href="{% url 'services:create_lead' service.slug %}" class="btn btn-success">Order</a>
<a href="{% url 'services:service_list' %}" class="btn btn-secondary">Back to Services</a>
</div>

View file

@ -12,17 +12,12 @@
<p>We have received your inquiry and our team will contact you shortly.</p>
</div>
<div class="mb-4">
<h5>Service Details</h5>
<p><strong>Provider:</strong> {{ service.cloud_provider.name }}</p>
</div>
<div class="mb-4">
<p class="text-muted">A confirmation email will be sent to your provided email address.</p>
</div>
<div class="mt-4">
<a href="{% url 'services:service_detail' service.id %}" class="btn btn-primary me-2">
<a href="{% url 'services:service_detail' service.slug %}" class="btn btn-primary me-2">
Back to Service Details
</a>
<a href="{% url 'services:service_list' %}" class="btn btn-secondary">