Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add tariffs #47

Merged
merged 23 commits into from
Apr 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion FRONTEND/fastparking/accounts/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,3 @@ class Meta:
model = Car
fields = ["car_number"]
exclude = ["user", "photo_car", "predict", "blocked", "pay_pass"]

24 changes: 24 additions & 0 deletions FRONTEND/fastparking/accounts/templates/accounts/profile1.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- profile.html -->
{% extends "base.html" %}

{% block content %}
<div class="container">
<h1>Welcome to your profile</h1>

<!-- Display user's cars -->
<h2>Your Cars</h2>
<ul>
{% for car in user_cars %}
<li>{{ car.car_number }}</li>
{% endfor %}
</ul>

<!-- Form to add a new car -->
<h2>Add a New Car</h2>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Add Car</button>
</form>
</div>
{% endblock %}
1 change: 0 additions & 1 deletion FRONTEND/fastparking/accounts/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
path('add-car/', views.add_car, name='add_car'),
path('delete/<int:pk>', views.delete, name='delete'),
path('edit-car/<int:pk>/', views.edit_car, name='edit_car'),

]
35 changes: 33 additions & 2 deletions FRONTEND/fastparking/accounts/views.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,42 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.views import View
from django.utils.decorators import method_decorator
from .forms import MyCarsForm, CarNumberForm

from .models import MyCars
from cars.models import Car
from .forms import MyCarsForm, CarNumberForm



# @method_decorator(login_required, name='dispatch')
# class CabinetView(View):
# def get(self, request, *args, **kwargs):
# # Отримуємо всі автомобілі поточного користувача
# user_cars = request.user.cars_set.all()
# # Передаємо список автомобілів у шаблон
# return render(request, 'accounts/profile.html', {'user_cars': user_cars})

@method_decorator(login_required, name='dispatch')
class CabinetView(View):
def get(self, request, *args, **kwargs):
# Отримуємо всі автомобілі поточного користувача
user_cars = request.user.cars.all()
# Передаємо список автомобілів у шаблон
return render(request, 'accounts/profile.html', {'user_cars': user_cars})

def post(self, request, *args, **kwargs):
# Обробка POST-запиту для додавання автомобіля
form = CarForm(request.POST, request.FILES)
if form.is_valid():
car = form.save(commit=False)
car.user = request.user
car.save()
return redirect('cabinet')
else:
# Якщо форма недійсна, повертаємо її разом з помилками
return render(request, 'accounts/profile.html', {'form': form})

@login_required
def profile(request):
active_menu = "accounts"
Expand Down Expand Up @@ -117,4 +148,4 @@ def edit_car(request, pk):
"car_number_form": car_number_form,
}

return render(request, "accounts/edit_car.html", context)
return render(request, "accounts/edit_car.html", context)
22 changes: 19 additions & 3 deletions FRONTEND/fastparking/cars/forms.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,33 @@
# forms.py
from django import forms
from .models import Car
# from .forms import MyCarForm

class CarForm(forms.ModelForm):
# class CarForm(forms.ModelForm):
# class Meta:
# model = Car
# fields = ['car_number', 'predict', 'blocked', 'pay_pass'] # Перерахуйте всі поля, які ви хочете відображати у формі

# widgets = {
# 'car_number': forms.TextInput(attrs={'class': 'form-control'}),
# 'photo_car': forms.FileInput(attrs={'class': 'form-control'}),
# 'predict': forms.NumberInput(attrs={'class': 'form-control'}),
# 'blocked': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
# 'pay_pass': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
# # 'user': forms.Select(attrs={'class': 'form-select'})
# }


class MyCarForm(forms.ModelForm): # додано другий такий самий клас
class Meta:
model = Car
fields = ['car_number', 'photo_car', 'predict', 'blocked', 'pay_pass', 'user'] # Перерахуйте всі поля, які ви хочете відображати у формі
fields = ['car_number', 'predict', 'blocked', 'PayPass'] # Перерахуйте всі поля, які ви хочете відображати у формі

widgets = {
'car_number': forms.TextInput(attrs={'class': 'form-control'}),
'photo_car': forms.FileInput(attrs={'class': 'form-control'}),
'predict': forms.NumberInput(attrs={'class': 'form-control'}),
'blocked': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
'pay_pass': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
'user': forms.Select(attrs={'class': 'form-select'})
# 'user': forms.Select(attrs={'class': 'form-select'})
}
14 changes: 5 additions & 9 deletions FRONTEND/fastparking/cars/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# Generated by Django 5.0.4 on 2024-04-10 16:57
# Generated by Django 5.0.4 on 2024-04-13 11:59

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


Expand All @@ -10,20 +9,17 @@ class Migration(migrations.Migration):
initial = True

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('photos', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Car',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('photo_car', models.ImageField(blank=True, null=True, upload_to='car_photos/')),
('car_number', models.CharField(max_length=20)),
('predict', models.FloatField(blank=True, null=True)),
('blocked', models.BooleanField(default=False)),
('pay_pass', models.BooleanField(default=False)),
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
('car_number', models.CharField(max_length=16, null=True)),
('predict', models.FloatField(null=True)),
('photo', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='photos.photo')),
],
),
]

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 5.0.4 on 2024-04-13 19:19

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('cars', '0001_initial'),
]

operations = [
migrations.RenameField(
model_name='car',
old_name='photo',
new_name='photo_car',
),
migrations.AddField(
model_name='car',
name='PayPass',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='car',
name='blocked',
field=models.BooleanField(default=False),
),
]
32 changes: 22 additions & 10 deletions FRONTEND/fastparking/cars/models.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
from django.urls import reverse
from django.db import models

from django.conf import settings



from django.db import models
from photos.models import Photo

class Car(models.Model):
photo = models.ForeignKey(Photo, on_delete=models.SET_NULL, null=True)
car_number = models.CharField(max_length=16, null=True)
photo_car = models.ForeignKey(Photo, on_delete=models.SET_NULL, null=True)
predict = models.FloatField(null=True)
PayPass = models.BooleanField(default=False)
blocked = models.BooleanField(default=False)

def __str__(self):
return self.car_number

def __str__(self):
return self.car_number
def save(self, *args, **kwargs):
if self.photo:
self.car_number = self.photo.recognized_car_number
self.predict = self.photo.accuracy
if self.photo_car:
self.car_number = self.photo_car.recognized_car_number
self.predict = self.photo_car.accuracy
super().save(*args, **kwargs)




def __str__(self):
return self.car_number
def get_absolute_url(self):
return reverse("car_list", kwargs={"pk": self.pk})

def get_absolute_url(self):
return reverse("car_list", kwargs={"pk": self.pk})

class MyCars(models.Model):
pass
110 changes: 107 additions & 3 deletions FRONTEND/fastparking/cars/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,112 @@
from django.shortcuts import render
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required

from .models import MyCars
from cars.models import Car
# from .forms import MyCarForm, CarNumberForm
from django.views.generic import ListView
from .models import Car

@login_required
def profile(request):
return render(request, 'accounts/profile.html', {"title": "User profile"})

@login_required
def my_cars(request):
my_cars = MyCars.objects.filter(user=request.user)
my_cars_number = Car.objects.filter(user=request.user).values_list('car_number', flat=True)
return render(request, 'accounts/my_cars.html',
{
"title": "My Cars",
"my_cars": my_cars,
"my_cars_number": my_cars_number
})




@login_required
def add_car(request):
my_cars_form = MyCarsForm()
car_number_form = CarNumberForm()

if request.method == "POST":
my_cars_form = MyCarsForm(request.POST)
car_number_form = CarNumberForm(request.POST)

if my_cars_form.is_valid() and car_number_form.is_valid():
car_number = car_number_form.cleaned_data.get('car_number')
car_instance, created = Car.objects.get_or_create(car_number=car_number)


new_mycars = my_cars_form.save(commit=False)
new_mycars.user = request.user
new_mycars.car_number = car_instance
new_mycars.save()


if hasattr(Car, 'user'):
car_instance.user = request.user
car_instance.save()

return redirect(to="accounts:my_cars")

return render(request, 'accounts/add_car.html', {
"title": "Add new car",
"my_cars_form": my_cars_form,
"car_number_form": car_number_form,
})



@login_required
def delete(request, pk):
my_cars = get_object_or_404(MyCars, pk=pk)

if request.method == "POST":
my_cars.delete()
return redirect(to="accounts:my_cars")

context = {
"title": "Delete car",
"my_cars": my_cars,
}

return render(request, "accounts/delete.html", context)



@login_required
def edit_car(request, pk):
my_cars = get_object_or_404(MyCars, pk=pk)

if request.method == "POST":
my_cars_form = MyCarsForm(request.POST, instance=my_cars)
car_number_form = CarNumberForm(request.POST, instance=my_cars.car_number)

if my_cars_form.is_valid() and car_number_form.is_valid():
my_cars_form.save()
car_number_form.save()

return redirect(to="accounts:my_cars", pk=pk)

else:
my_cars_form = MyCarsForm(instance=my_cars)
car_number_form = CarNumberForm(instance=my_cars.car_number)

context = {
"title": "Editing car",
"my_cars": my_cars,
"my_cars_form": my_cars_form,
"car_number_form": car_number_form,
}

return render(request, "accounts/edit_car.html", context)


class CarListView(ListView):
model = Car
template_name = 'car_list.html' # Шаблон для відображення списку автомобілів
context_object_name = 'cars' # Ім'я змінної в контексті шаблону
context_object_name = 'cars' # Ім'я змінної в контексті шаблону



Loading
Loading