05/06 Phase 2: fixed issues
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
{% extends "admin/layouts/base.html" %}
|
||||
{% block title %}{{ 'Edit' if mode == 'edit' else 'New Tenant' }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-7">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-header"><h5 class="mb-0">{{ 'Edit Tenant' if mode == 'edit' else 'New Tenant' }}</h5></div>
|
||||
<div class="card-body">
|
||||
{% if error %}<div class="alert alert-danger py-2">{{ error }}</div>{% endif %}
|
||||
<form method="POST" novalidate>
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Business Name</label>
|
||||
<input type="text" class="form-control" name="name"
|
||||
value="{{ tenant.name if tenant else '' }}" required>
|
||||
</div>
|
||||
{% if mode == 'create' %}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Slug <small class="text-muted">(URL-friendly, e.g. my-salon)</small></label>
|
||||
<input type="text" class="form-control" name="slug" pattern="[a-z0-9\-]+"
|
||||
placeholder="lowercase-letters-and-hyphens" required>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Owner Email</label>
|
||||
<input type="email" class="form-control" name="owner_email"
|
||||
value="{{ tenant.owner_email if tenant else '' }}" required>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Plan</label>
|
||||
<select class="form-select" name="plan_id" required>
|
||||
<option value="">— Select a plan —</option>
|
||||
{% for p in plans %}
|
||||
<option value="{{ p.id }}" {{ 'selected' if tenant and tenant.plan_id == p.id }}>
|
||||
{{ p.name }} (${{ "%.2f"|format(p.price_monthly) }}/mo)
|
||||
</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
{% if mode == 'create' %}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Trial Duration (days)</label>
|
||||
<input type="number" class="form-control" name="trial_days" value="14" min="0" max="90">
|
||||
</div>
|
||||
<hr>
|
||||
<h6 class="fw-semibold mb-3">Owner Account Password</h6>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Password</label>
|
||||
<input type="password" class="form-control" name="owner_password" autocomplete="new-password" required>
|
||||
<div class="form-text">Min 10 chars, uppercase, lowercase, digit.</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Confirm Password</label>
|
||||
<input type="password" class="form-control" name="confirm_password" autocomplete="new-password" required>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Subscription Expires At</label>
|
||||
<input type="datetime-local" class="form-control" name="subscription_expires_at"
|
||||
value="{{ tenant.subscription_expires_at.strftime('%Y-%m-%dT%H:%M') if tenant and tenant.subscription_expires_at else '' }}">
|
||||
</div>
|
||||
<div class="form-check form-switch mb-3">
|
||||
<input class="form-check-input" type="checkbox" name="is_demo" value="1" id="is_demo"
|
||||
{{ 'checked' if tenant and tenant.is_demo }}>
|
||||
<label class="form-check-label" for="is_demo">Demo tenant (read-only)</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-dark">Save</button>
|
||||
<a href="{{ url_for('tenants.index') }}" class="btn btn-outline-secondary">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user