update the assign car make visuals
This commit is contained in:
parent
f24a16d784
commit
5c474e2168
12
inventory/management/commands/initial_services_offered.py
Normal file
12
inventory/management/commands/initial_services_offered.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# management/commands/create_plans.py
|
||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from appointment.models import Service
|
||||||
|
import datetime
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'create initial services offered'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
Service.objects.all().delete()
|
||||||
|
Service.objects.create(name='Call', price=0,duration=datetime.timedelta(minutes=10),currency='SAR',description='15 min call')
|
||||||
|
Service.objects.create(name='Meeting', price=0,duration=datetime.timedelta(minutes=30),currency='SAR',description='30 min meeting')
|
||||||
|
Service.objects.create(name='Visit', price=0,duration=datetime.timedelta(minutes=30),currency='SAR',description='30 min visit')
|
||||||
@ -27,19 +27,23 @@ class Command(BaseCommand):
|
|||||||
# Order.objects.all().delete()
|
# Order.objects.all().delete()
|
||||||
# BillingInfo.objects.all().delete()
|
# BillingInfo.objects.all().delete()
|
||||||
|
|
||||||
three_users_quota = Quota.objects.create(name='3 users', codename='3 users', unit='number')
|
|
||||||
five_users_quota = Quota.objects.create(name='5 users', codename='5 users', unit='number')
|
|
||||||
ten_users_quota = Quota.objects.create(name='10 users', codename='10 users', unit='number')
|
|
||||||
|
|
||||||
|
users_quota = Quota.objects.create(name='Users', codename='Users', unit='number')
|
||||||
|
cars_quota = Quota.objects.create(name='Cars', codename='Cars', unit='number')
|
||||||
# Create plans
|
# Create plans
|
||||||
basic_plan = Plan.objects.create(name='Basic', description='basic plan', available=True, visible=True)
|
basic_plan = Plan.objects.create(name='Basic', description='basic plan', available=True, visible=True)
|
||||||
pro_plan = Plan.objects.create(name='Pro', description='Pro plan', available=True, visible=True)
|
pro_plan = Plan.objects.create(name='Pro', description='Pro plan', available=True, visible=True)
|
||||||
enterprise_plan = Plan.objects.create(name='Enterprise', description='Enterprise plan', available=True, visible=True)
|
enterprise_plan = Plan.objects.create(name='Enterprise', description='Enterprise plan', available=True, visible=True)
|
||||||
|
|
||||||
# Assign quotas to plans
|
# Assign quotas to plans
|
||||||
PlanQuota.objects.create(plan=basic_plan, quota=three_users_quota, value=3)
|
PlanQuota.objects.create(plan=basic_plan, quota=users_quota, value=3)
|
||||||
PlanQuota.objects.create(plan=pro_plan, quota=five_users_quota, value=5)
|
PlanQuota.objects.create(plan=basic_plan, quota=cars_quota, value=3)
|
||||||
PlanQuota.objects.create(plan=enterprise_plan, quota=ten_users_quota, value=10)
|
|
||||||
|
PlanQuota.objects.create(plan=pro_plan, quota=users_quota, value=5)
|
||||||
|
PlanQuota.objects.create(plan=pro_plan, quota=cars_quota, value=5)
|
||||||
|
|
||||||
|
PlanQuota.objects.create(plan=enterprise_plan, quota=users_quota, value=10)
|
||||||
|
PlanQuota.objects.create(plan=enterprise_plan, quota=cars_quota, value=10)
|
||||||
|
|
||||||
# PlanQuota.objects.create(plan=pro_plan, quota=project_quota, value=50)
|
# PlanQuota.objects.create(plan=pro_plan, quota=project_quota, value=50)
|
||||||
# PlanQuota.objects.create(plan=pro_plan, quota=storage_quota, value=100)
|
# PlanQuota.objects.create(plan=pro_plan, quota=storage_quota, value=100)
|
||||||
|
|||||||
@ -839,7 +839,6 @@ class Dealer(models.Model, LocalizedNameMixin):
|
|||||||
def active_plan(self):
|
def active_plan(self):
|
||||||
try:
|
try:
|
||||||
plan = UserPlan.objects.get(user=self.user,active=True).plan
|
plan = UserPlan.objects.get(user=self.user,active=True).plan
|
||||||
print(plan)
|
|
||||||
return plan
|
return plan
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -851,8 +850,6 @@ class Dealer(models.Model, LocalizedNameMixin):
|
|||||||
try:
|
try:
|
||||||
quota_dict = get_user_quota(self.user)
|
quota_dict = get_user_quota(self.user)
|
||||||
allowed_users = quota_dict.get("Users", None)
|
allowed_users = quota_dict.get("Users", None)
|
||||||
|
|
||||||
print(allowed_users)
|
|
||||||
return allowed_users
|
return allowed_users
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
@ -863,8 +860,6 @@ class Dealer(models.Model, LocalizedNameMixin):
|
|||||||
try:
|
try:
|
||||||
quota_dict = get_user_quota(self.user)
|
quota_dict = get_user_quota(self.user)
|
||||||
allowed_cars = quota_dict.get("Cars", None)
|
allowed_cars = quota_dict.get("Cars", None)
|
||||||
|
|
||||||
print(allowed_cars)
|
|
||||||
return allowed_cars
|
return allowed_cars
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
|||||||
@ -7061,6 +7061,8 @@ def assign_car_makes(request):
|
|||||||
create_accounts_for_make(dealer, makes)
|
create_accounts_for_make(dealer, makes)
|
||||||
form.save()
|
form.save()
|
||||||
return redirect("dealer_detail", pk=dealer.pk)
|
return redirect("dealer_detail", pk=dealer.pk)
|
||||||
|
else:
|
||||||
|
print(form.errors)
|
||||||
else:
|
else:
|
||||||
# Pre-fill the form with existing selections
|
# Pre-fill the form with existing selections
|
||||||
existing_car_makes = models.DealersMake.objects.filter(
|
existing_car_makes = models.DealersMake.objects.filter(
|
||||||
@ -7069,7 +7071,9 @@ def assign_car_makes(request):
|
|||||||
form = forms.DealersMakeForm(
|
form = forms.DealersMakeForm(
|
||||||
initial={"car_makes": existing_car_makes}, dealer=dealer
|
initial={"car_makes": existing_car_makes}, dealer=dealer
|
||||||
)
|
)
|
||||||
|
for choice in form.fields["car_makes"].choices:
|
||||||
|
print(choice[0].instance)
|
||||||
|
break
|
||||||
return render(request, "dealers/assign_car_makes.html", {"form": form})
|
return render(request, "dealers/assign_car_makes.html", {"form": form})
|
||||||
|
|
||||||
|
|
||||||
@ -7553,9 +7557,9 @@ def payment_callback(request):
|
|||||||
tax_number=dealer.vrn,
|
tax_number=dealer.vrn,
|
||||||
name=dealer.arabic_name,
|
name=dealer.arabic_name,
|
||||||
street=dealer.address,
|
street=dealer.address,
|
||||||
zipcode=dealer.entity.zip_code,
|
zipcode=dealer.entity.zip_code if dealer.entity.zip_code else " ",
|
||||||
city=dealer.entity.city,
|
city=dealer.entity.city if dealer.entity.city else " ",
|
||||||
country=dealer.entity.country,
|
country=dealer.entity.country if dealer.entity.country else " ",
|
||||||
)
|
)
|
||||||
if created:
|
if created:
|
||||||
userplan =UserPlan.objects.create(
|
userplan =UserPlan.objects.create(
|
||||||
|
|||||||
@ -1,25 +1,91 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load crispy_forms_filters %}
|
{% load static %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<style>
|
<style>
|
||||||
.car-makes-grid {
|
/* Your existing CSS styles here */
|
||||||
display: grid;
|
.car-makes-grid {
|
||||||
grid-template-columns: repeat(7, 1fr);
|
display: grid;
|
||||||
gap: 16px;
|
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
|
||||||
}
|
gap: 20px;
|
||||||
.car-makes-grid label {
|
margin: 20px 0;
|
||||||
display: flex;
|
}
|
||||||
align-items: center;
|
.car-make-option {
|
||||||
}
|
position: relative;
|
||||||
</style>
|
cursor: pointer;
|
||||||
<h2>{{ _("Select Car Makes You Sell")}}</h2>
|
text-align: center;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
.car-make-image {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
object-fit: contain;
|
||||||
|
border: 2px solid transparent;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 8px;
|
||||||
|
background: #f8f9fa;
|
||||||
|
}
|
||||||
|
.car-make-option input[type="checkbox"] {
|
||||||
|
position: absolute;
|
||||||
|
opacity: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
.car-make-option input[type="checkbox"]:checked + .car-make-image-container .car-make-image {
|
||||||
|
border: 2px solid #2c7be5;
|
||||||
|
box-shadow: 0 0 10px rgba(44, 123, 229, 0.5);
|
||||||
|
background: #f0f7ff;
|
||||||
|
}
|
||||||
|
.car-make-name {
|
||||||
|
margin-top: 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #5e6e82;
|
||||||
|
}
|
||||||
|
.car-make-image-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.logo-placeholder {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background: #f8f9fa;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
<form method="post">
|
<h2>{{ _("Select Car Makes You Sell") }}</h2>
|
||||||
{% csrf_token %}
|
|
||||||
<div class="car-makes-grid">
|
<form method="post" action="{% url 'assign_car_makes' %}">
|
||||||
{{ form.car_makes }}
|
{% csrf_token %}
|
||||||
</div>
|
|
||||||
<button class="btn btn-phoenix-success btn-sm" type="submit">{{ _("Save") }}</button>
|
<div class="car-makes-grid">
|
||||||
</form>
|
{% for car_make in form.fields.car_makes.queryset %}
|
||||||
|
|
||||||
|
<label class="car-make-option">
|
||||||
|
<input type="checkbox"
|
||||||
|
name="car_makes"
|
||||||
|
value="{{ car_make.pk }}"
|
||||||
|
{% if car_make.pk in form.initial.car_makes or car_make.pk|stringformat:"s" in form.car_makes.value %}checked{% endif %}>
|
||||||
|
<div class="car-make-image-container">
|
||||||
|
{% if car_make.logo and car_make.logo.url %}
|
||||||
|
<img src="{{ car_make.logo.url }}"
|
||||||
|
alt="{{ car_make.name }}"
|
||||||
|
class="car-make-image">
|
||||||
|
{% else %}
|
||||||
|
<div class="logo-placeholder">
|
||||||
|
{{ car_make.name|slice:":3" }}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="car-make-name">{{ car_make.name }}</div>
|
||||||
|
</label>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
<div class="d-grid gap-2">
|
||||||
|
<button class="btn btn-phoenix-info btn-lg" type="submit">{{ _("Save") }}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Loading…
x
Reference in New Issue
Block a user