formating and lintitng
This commit is contained in:
parent
7b3fc15efd
commit
50db32600b
@ -1355,11 +1355,27 @@ class SaleOrderForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = SaleOrder
|
||||
fields = [
|
||||
"customer","expected_delivery_date","estimate","opportunity","comments","order_date","status"]
|
||||
"customer",
|
||||
"expected_delivery_date",
|
||||
"estimate",
|
||||
"opportunity",
|
||||
"comments",
|
||||
"order_date",
|
||||
"status",
|
||||
]
|
||||
widgets = {
|
||||
"expected_delivery_date": forms.DateInput(attrs={"type": "date", "label": _("Expected Delivery Date")}),
|
||||
"order_date": forms.DateInput(attrs={"type": "date", "label": _("Order Date")}),
|
||||
"customer": forms.Select(attrs={"class": "form-control","label": _("Customer"),}),
|
||||
"expected_delivery_date": forms.DateInput(
|
||||
attrs={"type": "date", "label": _("Expected Delivery Date")}
|
||||
),
|
||||
"order_date": forms.DateInput(
|
||||
attrs={"type": "date", "label": _("Order Date")}
|
||||
),
|
||||
"customer": forms.Select(
|
||||
attrs={
|
||||
"class": "form-control",
|
||||
"label": _("Customer"),
|
||||
}
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -4,14 +4,13 @@ from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0001_initial'),
|
||||
("inventory", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='journal_entry',
|
||||
model_name="saleorder",
|
||||
name="journal_entry",
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,16 +5,20 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('django_ledger', '0022_alter_billmodel_bill_items_and_more'),
|
||||
('inventory', '0002_remove_saleorder_journal_entry'),
|
||||
("django_ledger", "0022_alter_billmodel_bill_items_and_more"),
|
||||
("inventory", "0002_remove_saleorder_journal_entry"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='saleorder',
|
||||
name='journal_entry',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='django_ledger.journalentrymodel'),
|
||||
model_name="saleorder",
|
||||
name="journal_entry",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="django_ledger.journalentrymodel",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -4,58 +4,57 @@ from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0003_saleorder_journal_entry'),
|
||||
("inventory", "0003_saleorder_journal_entry"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='agreed_price',
|
||||
model_name="saleorder",
|
||||
name="agreed_price",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='customer',
|
||||
model_name="saleorder",
|
||||
name="customer",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='down_payment_amount',
|
||||
model_name="saleorder",
|
||||
name="down_payment_amount",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='estimate',
|
||||
model_name="saleorder",
|
||||
name="estimate",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='journal_entry',
|
||||
model_name="saleorder",
|
||||
name="journal_entry",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='loan_amount',
|
||||
model_name="saleorder",
|
||||
name="loan_amount",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='opportunity',
|
||||
model_name="saleorder",
|
||||
name="opportunity",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='payment_method',
|
||||
model_name="saleorder",
|
||||
name="payment_method",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='remaining_balance',
|
||||
model_name="saleorder",
|
||||
name="remaining_balance",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='total_paid_amount',
|
||||
model_name="saleorder",
|
||||
name="total_paid_amount",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='trade_in_value',
|
||||
model_name="saleorder",
|
||||
name="trade_in_value",
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='trade_in_vehicle',
|
||||
model_name="saleorder",
|
||||
name="trade_in_vehicle",
|
||||
),
|
||||
]
|
||||
|
||||
@ -4,14 +4,13 @@ from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0004_remove_saleorder_agreed_price_and_more'),
|
||||
("inventory", "0004_remove_saleorder_agreed_price_and_more"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='saleorder',
|
||||
name='car',
|
||||
model_name="saleorder",
|
||||
name="car",
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,16 +5,20 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0005_remove_saleorder_car'),
|
||||
("inventory", "0005_remove_saleorder_car"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='saleorder',
|
||||
name='dealer',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='inventory.dealer'),
|
||||
model_name="saleorder",
|
||||
name="dealer",
|
||||
field=models.ForeignKey(
|
||||
default=1,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="sale_orders",
|
||||
to="inventory.dealer",
|
||||
),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,16 +5,22 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('django_ledger', '0022_alter_billmodel_bill_items_and_more'),
|
||||
('inventory', '0006_saleorder_dealer'),
|
||||
("django_ledger", "0022_alter_billmodel_bill_items_and_more"),
|
||||
("inventory", "0006_saleorder_dealer"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='saleorder',
|
||||
name='estimate',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='django_ledger.estimatemodel', verbose_name='Estimate'),
|
||||
model_name="saleorder",
|
||||
name="estimate",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="sale_orders",
|
||||
to="django_ledger.estimatemodel",
|
||||
verbose_name="Estimate",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,15 +5,21 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0007_saleorder_estimate'),
|
||||
("inventory", "0007_saleorder_estimate"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='saleorder',
|
||||
name='opportunity',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='inventory.opportunity', verbose_name='Opportunity'),
|
||||
model_name="saleorder",
|
||||
name="opportunity",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="sale_orders",
|
||||
to="inventory.opportunity",
|
||||
verbose_name="Opportunity",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -5,15 +5,21 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0008_saleorder_opportunity'),
|
||||
("inventory", "0008_saleorder_opportunity"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='saleorder',
|
||||
name='customer',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sale_orders', to='inventory.customer', verbose_name='Customer'),
|
||||
model_name="saleorder",
|
||||
name="customer",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="sale_orders",
|
||||
to="inventory.customer",
|
||||
verbose_name="Customer",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -6,21 +6,34 @@ from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('inventory', '0009_saleorder_customer'),
|
||||
("inventory", "0009_saleorder_customer"),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='saleorder',
|
||||
name='created_by',
|
||||
field=models.ForeignKey(blank=True, help_text='The user who created this sales order.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_sales_orders', to=settings.AUTH_USER_MODEL),
|
||||
model_name="saleorder",
|
||||
name="created_by",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
help_text="The user who created this sales order.",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="created_sales_orders",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='saleorder',
|
||||
name='last_modified_by',
|
||||
field=models.ForeignKey(blank=True, help_text='The user who last modified this sales order.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='modified_sales_orders', to=settings.AUTH_USER_MODEL),
|
||||
model_name="saleorder",
|
||||
name="last_modified_by",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
help_text="The user who last modified this sales order.",
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="modified_sales_orders",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@ -2479,7 +2479,6 @@ class SaleOrder(models.Model):
|
||||
return self.invoice.get_itemtxs_data()[0]
|
||||
return []
|
||||
|
||||
|
||||
@property
|
||||
def cars(self):
|
||||
if self.items:
|
||||
@ -2497,6 +2496,7 @@ class CustomGroup(models.Model):
|
||||
@property
|
||||
def entity(self):
|
||||
return self.invoice.entity
|
||||
|
||||
@property
|
||||
def users(self):
|
||||
return self.group.user_set.all()
|
||||
|
||||
@ -309,7 +309,9 @@ def update_item_model_cost(sender, instance, created, **kwargs):
|
||||
# entity.get_all_accounts()
|
||||
# .filter(name="Cash", role=roles.ASSET_CA_CASH)
|
||||
# .first()
|
||||
entity.get_all_accounts().filter(role=roles.ASSET_CA_CASH,role_default=True).first()
|
||||
entity.get_all_accounts()
|
||||
.filter(role=roles.ASSET_CA_CASH, role_default=True)
|
||||
.first()
|
||||
)
|
||||
|
||||
ledger = LedgerModel.objects.create(
|
||||
|
||||
@ -9,6 +9,7 @@ from django.forms import ValidationError
|
||||
from django.utils.formats import number_format
|
||||
from django_ledger.io.io_core import get_localdate, validate_activity
|
||||
from django_ledger.models import InvoiceModel, JournalEntryModel, BillModel
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@ -452,7 +453,9 @@ def po_item_formset_table(context, po_model, itemtxs_formset):
|
||||
# print(len(itemtxs_formset.forms))
|
||||
|
||||
for form in itemtxs_formset.forms:
|
||||
form.fields['item_model'].queryset = form.fields['item_model'].queryset.filter(item_role="inventory")
|
||||
form.fields["item_model"].queryset = form.fields["item_model"].queryset.filter(
|
||||
item_role="inventory"
|
||||
)
|
||||
return {
|
||||
"entity_slug": context["view"].kwargs["entity_slug"],
|
||||
"po_model": po_model,
|
||||
@ -604,27 +607,26 @@ def get_vehicle_type_name(car_serie):
|
||||
return "sedan"
|
||||
|
||||
|
||||
|
||||
@register.filter
|
||||
def status_badge_color(status):
|
||||
color_map = {
|
||||
'PENDING_APPROVAL': 'warning',
|
||||
'APPROVED': 'info',
|
||||
'IN_FINANCING': 'primary',
|
||||
'PARTIALLY_PAID': 'success',
|
||||
'FULLY_PAID': 'success',
|
||||
'PENDING_DELIVERY': 'warning',
|
||||
'DELIVERED': 'success',
|
||||
'CANCELLED': 'danger',
|
||||
"PENDING_APPROVAL": "warning",
|
||||
"APPROVED": "info",
|
||||
"IN_FINANCING": "primary",
|
||||
"PARTIALLY_PAID": "success",
|
||||
"FULLY_PAID": "success",
|
||||
"PENDING_DELIVERY": "warning",
|
||||
"DELIVERED": "success",
|
||||
"CANCELLED": "danger",
|
||||
}
|
||||
return color_map.get(status, 'secondary')
|
||||
return color_map.get(status, "secondary")
|
||||
|
||||
|
||||
@register.inclusion_tag('inventory/tags/inventory_table.html', takes_context=True)
|
||||
@register.inclusion_tag("inventory/tags/inventory_table.html", takes_context=True)
|
||||
def inventory_table(context, queryset):
|
||||
ctx = {
|
||||
'entity_slug': context['view'].kwargs['entity_slug'],
|
||||
'inventory_list': queryset
|
||||
"entity_slug": context["view"].kwargs["entity_slug"],
|
||||
"inventory_list": queryset,
|
||||
}
|
||||
ctx.update(queryset.aggregate(inventory_total_value=Sum('total_value')))
|
||||
ctx.update(queryset.aggregate(inventory_total_value=Sum("total_value")))
|
||||
return ctx
|
||||
@ -375,9 +375,16 @@ urlpatterns = [
|
||||
views.sales_list_view,
|
||||
name="sales_list",
|
||||
),
|
||||
path('sale_orders/<int:pk>/', views.SaleOrderDetailView.as_view(), name='order_detail'),
|
||||
path('inventory/<slug:entity_slug>/list/', views.InventoryListView.as_view(), name='inventort_list'),
|
||||
|
||||
path(
|
||||
"sale_orders/<int:pk>/",
|
||||
views.SaleOrderDetailView.as_view(),
|
||||
name="order_detail",
|
||||
),
|
||||
path(
|
||||
"inventory/<slug:entity_slug>/list/",
|
||||
views.InventoryListView.as_view(),
|
||||
name="inventort_list",
|
||||
),
|
||||
# Sales URLs quotation_create
|
||||
# path(
|
||||
# "sales/quotations/create/",
|
||||
|
||||
@ -3626,26 +3626,28 @@ def sales_list_view(request):
|
||||
context = {"txs": page_obj, "page_obj": page_obj}
|
||||
return render(request, "sales/sales_list.html", context)
|
||||
|
||||
|
||||
class SaleOrderDetailView(LoginRequiredMixin, DetailView):
|
||||
model = models.SaleOrder
|
||||
template_name = 'sales/saleorder_detail.html'
|
||||
context_object_name = 'sale_order'
|
||||
template_name = "sales/saleorder_detail.html"
|
||||
context_object_name = "sale_order"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
sale_order = self.get_object()
|
||||
|
||||
# Add additional context data
|
||||
context['status_choices'] = dict(models.SaleOrder.STATUS_CHOICES)
|
||||
context['page_title'] = _('Sales Order Details')
|
||||
context["status_choices"] = dict(models.SaleOrder.STATUS_CHOICES)
|
||||
context["page_title"] = _("Sales Order Details")
|
||||
|
||||
# Calculate any additional properties you want to display
|
||||
context['is_delivered'] = sale_order.status == 'DELIVERED'
|
||||
context['is_cancelled'] = sale_order.status == 'CANCELLED'
|
||||
context['is_pending_approval'] = sale_order.status == 'PENDING_APPROVAL'
|
||||
context["is_delivered"] = sale_order.status == "DELIVERED"
|
||||
context["is_cancelled"] = sale_order.status == "CANCELLED"
|
||||
context["is_pending_approval"] = sale_order.status == "PENDING_APPROVAL"
|
||||
|
||||
return context
|
||||
|
||||
|
||||
# Estimates
|
||||
class EstimateListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
|
||||
"""
|
||||
@ -4042,8 +4044,7 @@ def create_sale_order(request, pk):
|
||||
customer = estimate.customer.customer_set.first()
|
||||
form.fields["estimate"].queryset = EstimateModel.objects.filter(pk=pk)
|
||||
form.initial["estimate"] = estimate
|
||||
form.fields["customer"].queryset = models.Customer.objects.filter(
|
||||
pk=customer.pk)
|
||||
form.fields["customer"].queryset = models.Customer.objects.filter(pk=customer.pk)
|
||||
form.initial["customer"] = customer
|
||||
if hasattr(estimate, "opportunity"):
|
||||
form.initial["opportunity"] = estimate.opportunity
|
||||
@ -4569,7 +4570,6 @@ def invoice_create(request, pk):
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
context = {
|
||||
"form": form,
|
||||
"estimate": estimate,
|
||||
@ -8966,7 +8966,11 @@ def InventoryItemCreateView(request):
|
||||
trim_name = models.CarTrim.objects.get(pk=trim)
|
||||
|
||||
inventory_name = f"{make_name.name} || {model_name.name} || {serie_name.name} || {trim_name.name} || {year} || {exterior.name} || {interior.name}"
|
||||
if inventory := entity.get_items_inventory().filter(name=inventory_name).first():
|
||||
if (
|
||||
inventory := entity.get_items_inventory()
|
||||
.filter(name=inventory_name)
|
||||
.first()
|
||||
):
|
||||
messages.error(request, _("Inventory item already exists"))
|
||||
return redirect(f"{reverse('inventory_item_create')}?for_po={for_po}")
|
||||
uom = entity.get_uom_all().get(name="Unit")
|
||||
@ -9123,8 +9127,8 @@ class PurchaseOrderUpdateView(PurchaseOrderModelUpdateViewBase):
|
||||
else:
|
||||
itemtxs_qs, itemtxs_agg = po_model.get_itemtxs_data()
|
||||
|
||||
context['itemtxs_qs'] = itemtxs_qs
|
||||
context['itemtxs_formset'] = itemtxs_formset
|
||||
context["itemtxs_qs"] = itemtxs_qs
|
||||
context["itemtxs_formset"] = itemtxs_formset
|
||||
return context
|
||||
|
||||
def get_success_url(self):
|
||||
@ -9255,7 +9259,7 @@ class BasePurchaseOrderActionActionView(BasePurchaseOrderActionActionViewBase):
|
||||
po_model: PurchaseOrderModel = self.get_object()
|
||||
|
||||
try:
|
||||
getattr(po_model, self.action_name)(commit=self.commit,**kwargs)
|
||||
getattr(po_model, self.action_name)(commit=self.commit, **kwargs)
|
||||
messages.add_message(
|
||||
request,
|
||||
message="PO updated successfully.",
|
||||
@ -9510,7 +9514,6 @@ def bulk_update_car_price(request):
|
||||
return response
|
||||
|
||||
|
||||
|
||||
class InventoryListView(InventoryListViewBase):
|
||||
template_name = "inventory/list.html"
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
{%block title%} {%trans 'Stocks'%} {%endblock%}
|
||||
|
||||
{% block customCSS %}
|
||||
<style>
|
||||
<style>
|
||||
.htmx-indicator {
|
||||
opacity: 0;
|
||||
transition: opacity 500ms ease-in;
|
||||
@ -21,10 +21,10 @@
|
||||
.transition {
|
||||
transition: all ease-in 1s;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
{% endblock customCSS %}
|
||||
{% block content %}
|
||||
<div class="mb-9">
|
||||
<div class="mb-9">
|
||||
<div id="projectSummary">
|
||||
<div class="row g-3 justify-content-between align-items-end mb-4">
|
||||
<div class="col-12 col-sm-auto">
|
||||
@ -293,7 +293,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %} {% block customJS %}
|
||||
{% endblock %} {% block customJS %}
|
||||
<script>
|
||||
links = document.querySelectorAll(".nav-link");
|
||||
links.forEach((link) => {
|
||||
@ -357,5 +357,5 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{% endblock customJS %}
|
||||
{% endblock customJS %}
|
||||
</div>
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
{% load custom_filters %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container-fluid px-4 py-4">
|
||||
<div class="container-fluid px-4 py-4">
|
||||
<div class="row g-4">
|
||||
<!-- Inventory Ordered Card -->
|
||||
<div class="col-12">
|
||||
@ -79,5 +79,5 @@
|
||||
<div class="col-12 text-end mt-3">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -5,7 +5,7 @@
|
||||
{% block title %}{{ page_title }} - {{ sale_order.formatted_order_id }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container mt-4">
|
||||
<div class="container mt-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2 class="mb-0">
|
||||
@ -265,5 +265,5 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
Loading…
x
Reference in New Issue
Block a user