+
+
+
+ {% for record in records %}
+
+
+
+
{{ record.vaccine_name }}
+ Dose {{ record.dose_number }}
+
+
+
+ {{ record.date_taken|date:"M d, Y" }}
+ {{ record.center_name|default:record.location }}
+
+
+ {% if record.photo %}
+
+ {% endif %}
+
+
+
+ Location: {{ record.location }}
+
+ {% if record.notes %}
+
+ {{ record.notes|truncatechars:100 }}
+
+ {% endif %}
+
+
+ {% empty %}
+
+
+
+
No vaccination records
+
Keep track of your immunizations.
+
Add Record
+
+
+ {% endfor %}
- {% empty %}
-
-
-
-
No records found
-
Start tracking your vaccinations today to keep your community safe.
-
Add Your First Record
+
+
+
+
+ {% for report in reports %}
+
+
+
+
{{ report.title }}
+
+
+
+
+
+
{{ report.hospital_name }}
+
+
+ {{ report.report_date|date:"M d, Y" }}
+ {% if report.next_test_date %}
+ Next: {{ report.next_test_date|date:"M d, Y" }}
+ {% endif %}
+
+
+ {% if report.description %}
+
{{ report.description|truncatechars:120 }}
+ {% endif %}
+
+
+
+
+ {% if report.allow_notifications %}Notifications On{% else %}Notifications Off{% endif %}
+
+ {{ report.created_at|timesince }} ago
+
+
+
+ {% empty %}
+
+
+
+
No hospital reports
+
Upload your medical reports for safekeeping and reminders.
+
Upload First Report
+
+
+ {% endfor %}
- {% endfor %}
+
+
{% endblock %}
diff --git a/core/urls.py b/core/urls.py
index 59ae69d..9d8807e 100644
--- a/core/urls.py
+++ b/core/urls.py
@@ -8,7 +8,7 @@ from .views import (
complete_donation, notifications_view,
register_donor, hospital_list, public_profile, inbox, chat,
update_location, emergency_sms, delete_personal_info,
- health_report_list, upload_health_report
+ upload_health_report
)
urlpatterns = [
@@ -27,7 +27,6 @@ urlpatterns = [
path("vaccination/", vaccination_info, name="vaccination_info"),
path("vaccination/dashboard/", vaccination_dashboard, name="vaccination_dashboard"),
path("vaccination/add/", add_vaccination, name="add_vaccination"),
- path("reports/", health_report_list, name="health_report_list"),
path("reports/upload/", upload_health_report, name="upload_health_report"),
path("live-map/", live_map, name="live_map"),
path("request-blood/", request_blood, name="request_blood"),
diff --git a/core/views.py b/core/views.py
index ca9fb1c..5af37d1 100644
--- a/core/views.py
+++ b/core/views.py
@@ -314,12 +314,15 @@ def home(request):
return render(request, "core/index.html", context)
def donor_list(request):
+ query = request.GET.get('q', '')
blood_group = request.GET.get('blood_group', '')
district = request.GET.get('district', '')
user_lat = request.GET.get('lat')
user_lng = request.GET.get('lng')
donors = Donor.objects.all()
+ if query:
+ donors = donors.filter(Q(name__icontains=query) | Q(location__icontains=query))
if blood_group:
donors = donors.filter(blood_group=blood_group)
if district:
@@ -448,11 +451,14 @@ def request_blood(request):
}
return render(request, 'core/request_blood.html', context)
+@login_required
@login_required
def vaccination_dashboard(request):
records = VaccineRecord.objects.filter(user=request.user).order_by('-date_taken')
+ reports = HealthReport.objects.filter(user=request.user).order_by('-report_date')
context = {
'records': records,
+ 'reports': reports,
'project_name': "RaktaPulse",
}
return render(request, 'core/vaccination_dashboard.html', context)
@@ -466,6 +472,7 @@ def add_vaccination(request):
location = request.POST.get('location')
center_name = request.POST.get('center_name')
notes = request.POST.get('notes')
+ photo = request.FILES.get('photo')
if vaccine_name and dose_number and date_taken:
VaccineRecord.objects.create(
@@ -475,7 +482,8 @@ def add_vaccination(request):
date_taken=date_taken,
location=location,
center_name=center_name,
- notes=notes
+ notes=notes,
+ photo=photo
)
messages.success(request, "Vaccination record added successfully!")
return redirect('vaccination_dashboard')
@@ -493,6 +501,11 @@ def volunteer_for_request(request, request_id):
messages.error(request, "You need to be registered as a donor to volunteer.")
return redirect('donor_list')
+ # Prevent requester from volunteering for their own request
+ if blood_request.user == request.user:
+ messages.error(request, "You cannot volunteer for your own blood request.")
+ return redirect('blood_request_list')
+
# Check if already volunteered
if DonationEvent.objects.filter(donor=donor_profile, request=blood_request).exists():
messages.warning(request, "You have already volunteered for this request.")
@@ -669,11 +682,6 @@ def chat(request, username):
return render(request, 'core/chat.html', {'other_user': other_user, 'chat_messages': messages})
-@login_required
-def health_report_list(request):
- reports = HealthReport.objects.filter(user=request.user).order_by('-report_date')
- return render(request, 'core/health_report_list.html', {'reports': reports})
-
@login_required
def upload_health_report(request):
if request.method == "POST":
@@ -697,7 +705,7 @@ def upload_health_report(request):
allow_notifications=allow_notifications
)
messages.success(request, "Health report uploaded successfully!")
- return redirect('health_report_list')
+ return redirect('vaccination_dashboard')
else:
messages.error(request, "Please fill in all required fields.")
diff --git a/media/blood_requests/Garden_City.jpg b/media/blood_requests/Garden_City.jpg
new file mode 100644
index 0000000..b709e7b
Binary files /dev/null and b/media/blood_requests/Garden_City.jpg differ