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 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.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 TruckForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@ -9,24 +9,34 @@
|
|||||||
<div class="card shadow">
|
<div class="card shadow">
|
||||||
<div class="card-body p-5">
|
<div class="card-body p-5">
|
||||||
<h2 class="text-center mb-4">{% trans "Create your account" %}</h2>
|
<h2 class="text-center mb-4">{% trans "Create your account" %}</h2>
|
||||||
<form method="post">
|
|
||||||
|
<form method="post" novalidate>
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.as_p }}
|
|
||||||
|
|
||||||
<div class="mb-3">
|
{% if form.non_field_errors %}
|
||||||
<label class="form-label">{% trans "I am a:" %}</label>
|
<div class="alert alert-danger">
|
||||||
<select name="role" class="form-select" required>
|
{% for error in form.non_field_errors %}
|
||||||
<option value="SHIPPER">{% trans "Shipper (Need Goods Moved)" %}</option>
|
{{ error }}
|
||||||
<option value="TRUCK_OWNER">{% trans "Truck Owner (Service Provider)" %}</option>
|
{% endfor %}
|
||||||
</select>
|
</div>
|
||||||
</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">
|
<button type="submit" class="btn btn-primary w-100 py-2 mt-3">{% trans "Register" %}</button>
|
||||||
<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>
|
|
||||||
</form>
|
</form>
|
||||||
<div class="text-center mt-3">
|
<div class="text-center mt-3">
|
||||||
<p>{% trans "Already have an account?" %} <a href="{% url 'login' %}">{% trans "Login" %}</a></p>
|
<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.shortcuts import render, redirect, get_object_or_404
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth import login, authenticate
|
from django.contrib.auth import login, authenticate
|
||||||
from django.contrib.auth.forms import UserCreationForm
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from .models import Profile, Truck, Shipment, Bid, Message
|
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.contrib import messages
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
@ -19,19 +18,20 @@ def home(request):
|
|||||||
|
|
||||||
def register(request):
|
def register(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = UserCreationForm(request.POST)
|
form = UserRegistrationForm(request.POST)
|
||||||
role = request.POST.get('role')
|
|
||||||
phone = request.POST.get('phone_number')
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
user = form.save()
|
user = form.save()
|
||||||
profile = user.profile
|
profile = user.profile
|
||||||
profile.role = role
|
profile.role = form.cleaned_data.get('role')
|
||||||
profile.phone_number = phone
|
profile.phone_number = form.cleaned_data.get('phone_number')
|
||||||
profile.save()
|
profile.save()
|
||||||
login(request, user)
|
login(request, user)
|
||||||
|
messages.success(request, _("Registration successful. Welcome!"))
|
||||||
return redirect('dashboard')
|
return redirect('dashboard')
|
||||||
|
else:
|
||||||
|
messages.error(request, _("Please correct the errors below."))
|
||||||
else:
|
else:
|
||||||
form = UserCreationForm()
|
form = UserRegistrationForm()
|
||||||
return render(request, 'registration/register.html', {'form': form})
|
return render(request, 'registration/register.html', {'form': form})
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@ -85,24 +85,19 @@ def post_shipment(request):
|
|||||||
return redirect('dashboard')
|
return redirect('dashboard')
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
description = request.POST.get('description')
|
form = ShipmentForm(request.POST)
|
||||||
weight = request.POST.get('weight')
|
if form.is_valid():
|
||||||
origin = request.POST.get('origin')
|
shipment = form.save(commit=False)
|
||||||
destination = request.POST.get('destination')
|
shipment.shipper = request.user
|
||||||
delivery_date = request.POST.get('delivery_date')
|
shipment.save()
|
||||||
|
messages.success(request, _("Shipment posted successfully!"))
|
||||||
Shipment.objects.create(
|
return redirect('dashboard')
|
||||||
shipper=request.user,
|
else:
|
||||||
description=description,
|
messages.error(request, _("Please correct the errors in the form."))
|
||||||
weight=weight,
|
else:
|
||||||
origin=origin,
|
form = ShipmentForm()
|
||||||
destination=destination,
|
|
||||||
delivery_date=delivery_date
|
|
||||||
)
|
|
||||||
messages.success(request, _("Shipment posted successfully!"))
|
|
||||||
return redirect('dashboard')
|
|
||||||
|
|
||||||
return render(request, 'core/post_shipment.html')
|
return render(request, 'core/post_shipment.html', {'form': form})
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def marketplace(request):
|
def marketplace(request):
|
||||||
@ -164,4 +159,4 @@ def accept_bid(request, bid_id):
|
|||||||
bid.shipment.save()
|
bid.shipment.save()
|
||||||
|
|
||||||
messages.success(request, _("Bid accepted! Shipment is now in progress."))
|
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