{# Shared building blocks for the Create and Edit listing pages, so both use identical field markup, styling, validation rendering and helper text. {% from "components/listing_form.html" import listing_fields, listing_summary %} {{ listing_fields(form) }} {{ listing_summary(form, "Post Listing") }} {# or "Save changes" on edit #} #} {# The Item Details fields (title, category, price, condition, description, negotiable). #} {% macro listing_fields(form) %}
{{ form.title(class="form-control" ~ (" is-invalid" if form.title.errors), id="title", placeholder="e.g. Organic Chemistry 2nd Ed. Textbook", autofocus=true) }} {% for e in form.title.errors %}
{{ e }}
{% endfor %}
{{ form.category_id(class="form-select" ~ (" is-invalid" if form.category_id.errors), id="category_id") }} {% for e in form.category_id.errors %}
{{ e }}
{% endfor %}
₹ {{ form.price(class="form-control" ~ (" is-invalid" if form.price.errors), id="price", type="number", step="0.01", min="0", placeholder="0.00") }}
{% for e in form.price.errors %}
{{ e }}
{% endfor %}
{{ form.condition(class="d-none", **{"data-condition-input": ""}) }}
{% for value, label in form.condition.choices %} {% endfor %}
{% for e in form.condition.errors %}
{{ e }}
{% endfor %}
{{ form.description(class="form-control" ~ (" is-invalid" if form.description.errors), id="description", rows="4", placeholder="Describe the item, including any flaws, dimensions, or specific pick-up locations on campus...") }} {% for e in form.description.errors %}
{{ e }}
{% endfor %}
{{ form.negotiable(class="form-check-input", role="switch", id="negotiable") }}
{% endmacro %} {# Right-hand summary + safety panel. `submit_label` sets the submit button text. #} {% macro listing_summary(form, submit_label) %}

Listing Summary

Visibility Everyone
{# "Listing Duration" hidden until that feature exists. #}
Seller Fees Free
Your listing will be instantly visible to all verified students at University Campus.
{{ form.submit(class="btn btn-primary w-100 mt-3", value=submit_label) }}

Safety Guidelines

{% endmacro %}