207 lines
6.8 KiB
Python
207 lines
6.8 KiB
Python
from django.shortcuts import render, get_object_or_404, redirect
|
|
from .models import Client, Portfolio, Activity, Document
|
|
from .forms import DocumentForm, ClientForm, PortfolioForm, ActivityForm
|
|
|
|
def index(request):
|
|
"""Render the main dashboard screen."""
|
|
# Placeholder data for the KPI cards
|
|
kpi_data = {
|
|
"total_clients": Client.objects.count(),
|
|
"total_portfolios": Portfolio.objects.count(),
|
|
"total_activities": Activity.objects.count(),
|
|
"total_documents": Document.objects.count(),
|
|
"pending_tasks": Activity.objects.filter(status='todo').count(),
|
|
}
|
|
|
|
# Fetch recent items for the dashboard widgets
|
|
recent_clients = Client.objects.order_by('-created_at')[:5]
|
|
recent_activities = Activity.objects.order_by('-created_at')[:5]
|
|
|
|
context = {
|
|
"project_name": "Finance Hub",
|
|
"kpi_data": kpi_data,
|
|
"recent_clients": recent_clients,
|
|
"recent_activities": recent_activities,
|
|
}
|
|
return render(request, "core/index.html", context)
|
|
|
|
def client_list(request):
|
|
"""Render a page with a list of all clients."""
|
|
clients = Client.objects.all()
|
|
context = {
|
|
"clients": clients,
|
|
}
|
|
return render(request, "core/client_list.html", context)
|
|
|
|
def client_detail(request, pk):
|
|
"""Render a page with the details of a single client."""
|
|
client = get_object_or_404(Client, pk=pk)
|
|
activities = client.activities.all()
|
|
context = {
|
|
"client": client,
|
|
"activities": activities,
|
|
}
|
|
return render(request, "core/client_detail.html", context)
|
|
|
|
def portfolio_list(request):
|
|
"""Render a page with a list of all portfolios."""
|
|
portfolios = Portfolio.objects.all()
|
|
context = {
|
|
"portfolios": portfolios,
|
|
}
|
|
return render(request, "core/portfolio_list.html", context)
|
|
|
|
def portfolio_detail(request, pk):
|
|
"""Render a page with the details of a single portfolio."""
|
|
portfolio = get_object_or_404(Portfolio, pk=pk)
|
|
context = {
|
|
"portfolio": portfolio,
|
|
}
|
|
return render(request, "core/portfolio_detail.html", context)
|
|
|
|
def activity_list(request):
|
|
"""Render a page with a list of all activities."""
|
|
activities = Activity.objects.all()
|
|
context = {
|
|
"activities": activities,
|
|
}
|
|
return render(request, "core/activity_list.html", context)
|
|
|
|
def activity_detail(request, pk):
|
|
"""Render a page with the details of a single activity."""
|
|
activity = get_object_or_404(Activity, pk=pk)
|
|
context = {
|
|
"activity": activity,
|
|
}
|
|
return render(request, "core/activity_detail.html", context)
|
|
|
|
def document_list(request):
|
|
"""Render a page with a list of all documents."""
|
|
documents = Document.objects.all()
|
|
context = {
|
|
"documents": documents,
|
|
}
|
|
return render(request, "core/document_list.html", context)
|
|
|
|
def document_detail(request, pk):
|
|
"""Render a page with the details of a single document."""
|
|
document = get_object_or_404(Document, pk=pk)
|
|
context = {
|
|
"document": document,
|
|
}
|
|
return render(request, "core/document_detail.html", context)
|
|
|
|
def document_upload(request):
|
|
"""Handle document upload."""
|
|
if request.method == 'POST':
|
|
form = DocumentForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('document_list')
|
|
else:
|
|
form = DocumentForm()
|
|
context = {
|
|
'form': form,
|
|
}
|
|
return render(request, 'core/document_upload.html', context)
|
|
|
|
|
|
def client_create(request):
|
|
if request.method == 'POST':
|
|
form = ClientForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('client_list')
|
|
else:
|
|
form = ClientForm()
|
|
return render(request, 'core/client_form.html', {'form': form, 'title': 'Add Client'})
|
|
|
|
|
|
def client_update(request, pk):
|
|
client = get_object_or_404(Client, pk=pk)
|
|
if request.method == 'POST':
|
|
form = ClientForm(request.POST, instance=client)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('client_detail', pk=client.pk)
|
|
else:
|
|
form = ClientForm(instance=client)
|
|
return render(request, 'core/client_form.html', {'form': form, 'title': 'Edit Client'})
|
|
|
|
|
|
def client_delete(request, pk):
|
|
client = get_object_or_404(Client, pk=pk)
|
|
if request.method == 'POST':
|
|
client.delete()
|
|
return redirect('client_list')
|
|
return render(request, 'core/client_confirm_delete.html', {'object': client})
|
|
|
|
|
|
def portfolio_create(request):
|
|
if request.method == 'POST':
|
|
form = PortfolioForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('portfolio_list')
|
|
else:
|
|
form = PortfolioForm()
|
|
return render(request, 'core/portfolio_form.html', {'form': form, 'title': 'Add Portfolio'})
|
|
|
|
|
|
def portfolio_update(request, pk):
|
|
portfolio = get_object_or_404(Portfolio, pk=pk)
|
|
if request.method == 'POST':
|
|
form = PortfolioForm(request.POST, instance=portfolio)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('portfolio_detail', pk=portfolio.pk)
|
|
else:
|
|
form = PortfolioForm(instance=portfolio)
|
|
return render(request, 'core/portfolio_form.html', {'form': form, 'title': 'Edit Portfolio'})
|
|
|
|
|
|
def portfolio_delete(request, pk):
|
|
portfolio = get_object_or_404(Portfolio, pk=pk)
|
|
if request.method == 'POST':
|
|
portfolio.delete()
|
|
return redirect('portfolio_list')
|
|
return render(request, 'core/portfolio_confirm_delete.html', {'object': portfolio})
|
|
|
|
|
|
def activity_create(request):
|
|
if request.method == 'POST':
|
|
form = ActivityForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('activity_list')
|
|
else:
|
|
form = ActivityForm()
|
|
return render(request, 'core/activity_form.html', {'form': form, 'title': 'Add Activity'})
|
|
|
|
|
|
def activity_update(request, pk):
|
|
activity = get_object_or_404(Activity, pk=pk)
|
|
if request.method == 'POST':
|
|
form = ActivityForm(request.POST, instance=activity)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect('activity_detail', pk=activity.pk)
|
|
else:
|
|
form = ActivityForm(instance=activity)
|
|
return render(request, 'core/activity_form.html', {'form': form, 'title': 'Edit Activity'})
|
|
|
|
|
|
def activity_delete(request, pk):
|
|
activity = get_object_or_404(Activity, pk=pk)
|
|
if request.method == 'POST':
|
|
activity.delete()
|
|
return redirect('activity_list')
|
|
return render(request, 'core/activity_confirm_delete.html', {'object': activity})
|
|
|
|
def document_delete(request, pk):
|
|
document = get_object_or_404(Document, pk=pk)
|
|
if request.method == 'POST':
|
|
document.delete()
|
|
return redirect('document_list')
|
|
return render(request, 'core/document_confirm_delete.html', {'object': document})
|