major updation
This commit is contained in:
+82
-5
@@ -1,17 +1,94 @@
|
||||
from django.shortcuts import render, redirect
|
||||
from django.contrib.auth import login
|
||||
from .forms import CitizenRegistrationForm
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth import authenticate, login
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.forms import AuthenticationForm
|
||||
from .models import Issue, IssueCategory
|
||||
from .forms import CitizenRegistrationForm, IssueForm
|
||||
|
||||
def home(request):
|
||||
return render(request, 'core/index.html')
|
||||
|
||||
|
||||
def home(request):
|
||||
if request.user.is_authenticated and request.user.is_citizen:
|
||||
return redirect('citizen_dashboard')
|
||||
return render(request, 'core/index.html')
|
||||
|
||||
|
||||
def home(request):
|
||||
if request.user.is_authenticated and request.user.is_citizen:
|
||||
return redirect('citizen_dashboard')
|
||||
return render(request, 'core/index.html')
|
||||
|
||||
@login_required
|
||||
def citizen_dashboard(request):
|
||||
if not request.user.is_citizen:
|
||||
messages.error(request, 'Access denied. Citizen role required.')
|
||||
return redirect('home')
|
||||
|
||||
# Get only basic data for now
|
||||
all_user_issues = Issue.objects.filter(reporter=request.user)
|
||||
user_issues_display = all_user_issues.order_by('-created_at')[:5]
|
||||
resolved_count = all_user_issues.filter(status='resolved').count()
|
||||
categories = IssueCategory.objects.all()
|
||||
|
||||
context = {
|
||||
'user_issues': user_issues_display,
|
||||
'resolved_count': resolved_count,
|
||||
'categories': categories,
|
||||
'issue_form': IssueForm(),
|
||||
}
|
||||
return render(request, 'core/citizen_dashboard.html', context)
|
||||
|
||||
@login_required
|
||||
def report_issue(request):
|
||||
if not request.user.is_citizen:
|
||||
messages.error(request, 'Access denied. Citizen role required.')
|
||||
return redirect('home')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = IssueForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
issue = form.save(commit=False)
|
||||
issue.reporter = request.user
|
||||
issue.save()
|
||||
messages.success(request, 'Issue reported successfully!')
|
||||
return redirect('citizen_dashboard')
|
||||
else:
|
||||
messages.error(request, 'Please correct the errors below.')
|
||||
else:
|
||||
form = IssueForm()
|
||||
|
||||
return render(request, 'core/report_issue.html', {'form': form})
|
||||
|
||||
def register(request):
|
||||
if request.method == 'POST':
|
||||
form = CitizenRegistrationForm(request.POST)
|
||||
if form.is_valid():
|
||||
user = form.save()
|
||||
login(request, user)
|
||||
return redirect('home')
|
||||
messages.success(request, 'Registration successful! Please login.')
|
||||
return redirect('login')
|
||||
else:
|
||||
form = CitizenRegistrationForm()
|
||||
return render(request, 'core/register.html', {'form': form})
|
||||
|
||||
return render(request, 'core/register.html', {'form': form})
|
||||
|
||||
def custom_login(request):
|
||||
if request.method == 'POST':
|
||||
form = AuthenticationForm(request, data=request.POST)
|
||||
if form.is_valid():
|
||||
username = form.cleaned_data.get('username')
|
||||
password = form.cleaned_data.get('password')
|
||||
user = authenticate(username=username, password=password)
|
||||
if user is not None:
|
||||
login(request, user)
|
||||
messages.success(request, f'Welcome back, {username}!')
|
||||
return redirect('home')
|
||||
else:
|
||||
messages.error(request, 'Invalid username or password.')
|
||||
else:
|
||||
messages.error(request, 'Invalid username or password.')
|
||||
else:
|
||||
form = AuthenticationForm()
|
||||
return render(request, 'core/login.html', {'form': form})
|
||||
Reference in New Issue
Block a user