50 lines
2.0 KiB
Python
50 lines
2.0 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.contrib import messages
|
|
from .models import Farm
|
|
from django import forms
|
|
|
|
# Simple Form class (keeping it in views for speed, or separate file is fine too.
|
|
# best practice is forms.py but for this task I'll stick to views or create forms.py if it gets complex.
|
|
# Let's create a forms.py to be clean).
|
|
|
|
class FarmForm(forms.ModelForm):
|
|
class Meta:
|
|
model = Farm
|
|
fields = ['name', 'owner_name', 'location', 'size_hectares', 'status']
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'e.g. Green Valley Farm'}),
|
|
'owner_name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'e.g. Somchai S.'}),
|
|
'location': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Province, District'}),
|
|
'size_hectares': forms.NumberInput(attrs={'class': 'form-control', 'step': '0.01'}),
|
|
'status': forms.Select(attrs={'class': 'form-select'}),
|
|
}
|
|
|
|
def dashboard(request):
|
|
# Stats
|
|
total_farms = Farm.objects.count()
|
|
active_farms = Farm.objects.filter(status='active').count()
|
|
pending_farms = Farm.objects.filter(status='pending').count()
|
|
|
|
# Recent
|
|
recent_farms = Farm.objects.order_by('-registration_date')[:5]
|
|
|
|
context = {
|
|
'total_farms': total_farms,
|
|
'active_farms': active_farms,
|
|
'pending_farms': pending_farms,
|
|
'recent_farms': recent_farms,
|
|
'page_title': 'Overview'
|
|
}
|
|
return render(request, 'core/index.html', context)
|
|
|
|
def farm_create(request):
|
|
if request.method == 'POST':
|
|
form = FarmForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
messages.success(request, 'Farm registered successfully!')
|
|
return redirect('dashboard')
|
|
else:
|
|
form = FarmForm()
|
|
|
|
return render(request, 'core/farm_form.html', {'form': form, 'page_title': 'Register New Farm'}) |