From 2b08c68e15119fcb90337e6abd8e4a16ce88f39c Mon Sep 17 00:00:00 2001 From: Badrudeen <badrudeen2.mohammed@live.uwe.ac.uk> Date: Fri, 28 Mar 2025 14:23:32 +0000 Subject: [PATCH] html & django front end --- .../myapp/templates/myapp/events_page.html | 26 +++++++++++++++++++ django_project/myapp/views/events_views.py | 14 ++++++++++ rust_crud_api/src/models/events.rs | 23 ++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 django_project/myapp/templates/myapp/events_page.html create mode 100644 django_project/myapp/views/events_views.py diff --git a/django_project/myapp/templates/myapp/events_page.html b/django_project/myapp/templates/myapp/events_page.html new file mode 100644 index 0000000..715f6e0 --- /dev/null +++ b/django_project/myapp/templates/myapp/events_page.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} + +{% block content %} +<h1>Upcoming Events</h1> + +{% if error %} + <p style="color:red">{{ error }}</p> +{% endif %} + +{% if events %} + <ul> + {% for event in events %} + <li> + <strong>{{ event.title }}</strong><br> + <em>{{ event.date }} at {{ event.time }}</em><br> + {{ event.location }}<br> + {% if event.description %} + <p>{{ event.description }}</p> + {% endif %} + </li> + {% endfor %} + </ul> +{% else %} + <p>No events found.</p> +{% endif %} +{% endblock %} \ No newline at end of file diff --git a/django_project/myapp/views/events_views.py b/django_project/myapp/views/events_views.py new file mode 100644 index 0000000..b9a0c2c --- /dev/null +++ b/django_project/myapp/views/events_views.py @@ -0,0 +1,14 @@ +from django.shortcuts import render +from django.conf import settings +import rust_crud_api # Make sure this matches your actual module name + +def event_list_view(request): + db_url = settings.DATABASE_URL + try: + events = rust_crud_api.get_all_events(db_url) + return render(request, 'myapp/event_list.html', {'events': events}) + except Exception as e: + return render(request, 'myapp/event_list.html', { + 'error': str(e), + 'events': [] + }) \ No newline at end of file diff --git a/rust_crud_api/src/models/events.rs b/rust_crud_api/src/models/events.rs index 809c61c..635c798 100644 --- a/rust_crud_api/src/models/events.rs +++ b/rust_crud_api/src/models/events.rs @@ -36,4 +36,27 @@ pub fn create_event( ).map_err(pg_err)?; Ok(()) +} + +#[pyfunction] +pub fn get_all_events(db_url: &str) -> PyResult<Vec<PyEvent>> { + let mut client = Client::connect(db_url, NoTls).map_err(pg_err)?; + + let mut events = Vec::new(); + for row in client.query("SELECT * FROM events ORDER BY date, time", &[]).map_err(pg_err)? { + let event = PyEvent { + id: row.get("id"), + title: row.get("title"), + description: row.get("description"), + location: row.get("location"), + date: row.get::<_, chrono::NaiveDate>("date").to_string(), + time: row.get::<_, chrono::NaiveTime>("time").to_string(), + created_by: row.get("created_by"), + group_id: row.get("group_id"), + created_at: row.get::<_, chrono::NaiveDateTime>("created_at").to_string(), + }; + events.push(event); + } + + Ok(events) } \ No newline at end of file -- GitLab