demo4
This commit is contained in:
parent
ba8173f9d8
commit
d8246c69a2
Binary file not shown.
Binary file not shown.
@ -1,6 +1,34 @@
|
||||
from django import forms
|
||||
from .models import Truck, Shipment, Bid
|
||||
from .models import Truck, Shipment, Bid, Profile
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
class UserRegistrationForm(UserCreationForm):
|
||||
email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'}))
|
||||
confirm_email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': 'form-control'}), label=_("Confirm Email"))
|
||||
role = forms.ChoiceField(choices=Profile.ROLE_CHOICES, widget=forms.Select(attrs={'class': 'form-select'}))
|
||||
phone_number = forms.CharField(max_length=20, required=False, widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': '+1234567890'}))
|
||||
|
||||
class Meta(UserCreationForm.Meta):
|
||||
model = User
|
||||
fields = UserCreationForm.Meta.fields + ('email',)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
for field in self.fields.values():
|
||||
if not isinstance(field.widget, (forms.CheckboxInput, forms.Select)):
|
||||
field.widget.attrs.update({'class': 'form-control'})
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
email = cleaned_data.get("email")
|
||||
confirm_email = cleaned_data.get("confirm_email")
|
||||
|
||||
if email and confirm_email and email != confirm_email:
|
||||
self.add_error('confirm_email', _("The two email fields didn't match."))
|
||||
|
||||
return cleaned_data
|
||||
|
||||
class TruckForm(forms.ModelForm):
|
||||
class Meta:
|
||||
|
||||
@ -9,24 +9,34 @@
|
||||
<div class="card shadow">
|
||||
<div class="card-body p-5">
|
||||
<h2 class="text-center mb-4">{% trans "Create your account" %}</h2>
|
||||
<form method="post">
|
||||
|
||||
<form method="post" novalidate>
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">{% trans "I am a:" %}</label>
|
||||
<select name="role" class="form-select" required>
|
||||
<option value="SHIPPER">{% trans "Shipper (Need Goods Moved)" %}</option>
|
||||
<option value="TRUCK_OWNER">{% trans "Truck Owner (Service Provider)" %}</option>
|
||||
</select>
|
||||
</div>
|
||||
{% if form.non_field_errors %}
|
||||
<div class="alert alert-danger">
|
||||
{% for error in form.non_field_errors %}
|
||||
{{ error }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% for field in form %}
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
|
||||
{{ field }}
|
||||
{% if field.help_text %}
|
||||
<div class="form-text text-muted small">{{ field.help_text|safe }}</div>
|
||||
{% endif %}
|
||||
{% if field.errors %}
|
||||
{% for error in field.errors %}
|
||||
<div class="text-danger small">{{ error }}</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">{% trans "Phone Number" %}</label>
|
||||
<input type="text" name="phone_number" class="form-control" placeholder="+1234567890">
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100 py-2">{% trans "Register" %}</button>
|
||||
<button type="submit" class="btn btn-primary w-100 py-2 mt-3">{% trans "Register" %}</button>
|
||||
</form>
|
||||
<div class="text-center mt-3">
|
||||
<p>{% trans "Already have an account?" %} <a href="{% url 'login' %}">{% trans "Login" %}</a></p>
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
from django.shortcuts import render, redirect, get_object_or_404
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth import login, authenticate
|
||||
from django.contrib.auth.forms import UserCreationForm
|
||||
from django.utils import timezone
|
||||
from .models import Profile, Truck, Shipment, Bid, Message
|
||||
from .forms import TruckForm, ShipmentForm, BidForm
|
||||
from .forms import TruckForm, ShipmentForm, BidForm, UserRegistrationForm
|
||||
from django.contrib import messages
|
||||
from django.utils.translation import gettext as _
|
||||
from django.db.models import Q
|
||||
@ -19,19 +18,20 @@ def home(request):
|
||||
|
||||
def register(request):
|
||||
if request.method == 'POST':
|
||||
form = UserCreationForm(request.POST)
|
||||
role = request.POST.get('role')
|
||||
phone = request.POST.get('phone_number')
|
||||
form = UserRegistrationForm(request.POST)
|
||||
if form.is_valid():
|
||||
user = form.save()
|
||||
profile = user.profile
|
||||
profile.role = role
|
||||
profile.phone_number = phone
|
||||
profile.role = form.cleaned_data.get('role')
|
||||
profile.phone_number = form.cleaned_data.get('phone_number')
|
||||
profile.save()
|
||||
login(request, user)
|
||||
messages.success(request, _("Registration successful. Welcome!"))
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
messages.error(request, _("Please correct the errors below."))
|
||||
else:
|
||||
form = UserCreationForm()
|
||||
form = UserRegistrationForm()
|
||||
return render(request, 'registration/register.html', {'form': form})
|
||||
|
||||
@login_required
|
||||
@ -85,24 +85,19 @@ def post_shipment(request):
|
||||
return redirect('dashboard')
|
||||
|
||||
if request.method == 'POST':
|
||||
description = request.POST.get('description')
|
||||
weight = request.POST.get('weight')
|
||||
origin = request.POST.get('origin')
|
||||
destination = request.POST.get('destination')
|
||||
delivery_date = request.POST.get('delivery_date')
|
||||
|
||||
Shipment.objects.create(
|
||||
shipper=request.user,
|
||||
description=description,
|
||||
weight=weight,
|
||||
origin=origin,
|
||||
destination=destination,
|
||||
delivery_date=delivery_date
|
||||
)
|
||||
messages.success(request, _("Shipment posted successfully!"))
|
||||
return redirect('dashboard')
|
||||
form = ShipmentForm(request.POST)
|
||||
if form.is_valid():
|
||||
shipment = form.save(commit=False)
|
||||
shipment.shipper = request.user
|
||||
shipment.save()
|
||||
messages.success(request, _("Shipment posted successfully!"))
|
||||
return redirect('dashboard')
|
||||
else:
|
||||
messages.error(request, _("Please correct the errors in the form."))
|
||||
else:
|
||||
form = ShipmentForm()
|
||||
|
||||
return render(request, 'core/post_shipment.html')
|
||||
return render(request, 'core/post_shipment.html', {'form': form})
|
||||
|
||||
@login_required
|
||||
def marketplace(request):
|
||||
@ -164,4 +159,4 @@ def accept_bid(request, bid_id):
|
||||
bid.shipment.save()
|
||||
|
||||
messages.success(request, _("Bid accepted! Shipment is now in progress."))
|
||||
return redirect('shipment_detail', shipment_id=bid.shipment.id)
|
||||
return redirect('shipment_detail', shipment_id=bid.shipment.id)
|
||||
Loading…
x
Reference in New Issue
Block a user