6c0d5a4e63
- Flask-based mold cost calculation application - PostgreSQL database with SQLAlchemy ORM - Docker/Podman containerization - Comprehensive documentation in docs/ - Clean, organized codebase without obsolete files - Production-ready deployment configuration - Enhanced pytest configuration with coverage reporting - Master/Development branch structure
77 lines
3.7 KiB
HTML
77 lines
3.7 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}Register - Mold Cost Calculator{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="container mt-5">
|
|
<div class="row justify-content-center">
|
|
<div class="col-md-6">
|
|
<div class="card shadow">
|
|
<div class="card-header bg-primary text-white">
|
|
<h4 class="mb-0">Register</h4>
|
|
</div>
|
|
<div class="card-body">
|
|
<form method="POST" action="{{ url_for('auth.register') }}">
|
|
{{ form.hidden_tag() }}
|
|
|
|
<div class="mb-3">
|
|
{{ form.username.label(class="form-label") }}
|
|
{{ form.username(class="form-control" + (" is-invalid" if form.username.errors else "")) }}
|
|
{% for error in form.username.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
{{ form.email.label(class="form-label") }}
|
|
{{ form.email(class="form-control" + (" is-invalid" if form.email.errors else "")) }}
|
|
{% for error in form.email.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
{{ form.company.label(class="form-label") }}
|
|
{{ form.company(class="form-control" + (" is-invalid" if form.company.errors else "")) }}
|
|
{% for error in form.company.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
{{ form.password.label(class="form-label") }}
|
|
{{ form.password(class="form-control" + (" is-invalid" if form.password.errors else "")) }}
|
|
{% for error in form.password.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
{{ form.password_confirm.label(class="form-label") }}
|
|
{{ form.password_confirm(class="form-control" + (" is-invalid" if form.password_confirm.errors else "")) }}
|
|
{% for error in form.password_confirm.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="mb-3 form-check">
|
|
{{ form.terms(class="form-check-input" + (" is-invalid" if form.terms.errors else "")) }}
|
|
{{ form.terms.label(class="form-check-label") }}
|
|
{% for error in form.terms.errors %}
|
|
<div class="invalid-feedback">{{ error }}</div>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="d-grid gap-2">
|
|
{{ form.submit(class="btn btn-primary") }}
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="card-footer text-center">
|
|
<p class="mb-0">Already have an account? <a href="{{ url_for('auth.login') }}">Login here</a></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |