From 149e8689c478d5dd3f8e468de8b9f1577fc531a4 Mon Sep 17 00:00:00 2001
From: Aaron <Aaron8.jones@live.uwe.ac.uk>
Date: Sun, 30 Mar 2025 16:19:21 +0100
Subject: [PATCH] AI Engineer bug when viewing / deleting records fixed. new
 container!!!

---
 ActualProjectCode/DjangoProject/core/admin.py |  3 +--
 ActualProjectCode/DjangoProject/core/forms.py |  2 +-
 .../DjangoProject/core/models.py              | 10 --------
 ActualProjectCode/DjangoProject/core/views.py | 23 ++++++++++++++++-
 .../DjangoProject/docker-compose.yml          |  9 ++++---
 .../DjangoProject/{mlModels => }/main.py      |  1 +
 .../DjangoProject/server/urls.py              |  2 ++
 .../templates/modelForms/deleteRecord.html    | 18 +++++++++++++
 .../templates/modelForms/interactionView.html | 25 +++++++++++++++++++
 .../templates/modelForms/userUpload.html      |  2 +-
 .../DjangoProject/templates/profile.html      |  9 +++----
 11 files changed, 80 insertions(+), 24 deletions(-)
 rename ActualProjectCode/DjangoProject/{mlModels => }/main.py (95%)
 create mode 100644 ActualProjectCode/DjangoProject/templates/modelForms/deleteRecord.html
 create mode 100644 ActualProjectCode/DjangoProject/templates/modelForms/interactionView.html

diff --git a/ActualProjectCode/DjangoProject/core/admin.py b/ActualProjectCode/DjangoProject/core/admin.py
index 0a58da4..36a8a4e 100644
--- a/ActualProjectCode/DjangoProject/core/admin.py
+++ b/ActualProjectCode/DjangoProject/core/admin.py
@@ -5,12 +5,11 @@ from core import models
 
 from django.contrib import admin
 from django.contrib.auth.models import User
-from .models import Profile, mlModel, Interaction, Billing, Record
+from .models import Profile, mlModel, Billing, Record
 
 # Register the Profile model in the admin
 admin.site.register(Profile)
 admin.site.register(mlModel)
-admin.site.register(Interaction)
 admin.site.register(Billing)
 admin.site.register(Record)
 
diff --git a/ActualProjectCode/DjangoProject/core/forms.py b/ActualProjectCode/DjangoProject/core/forms.py
index 603a1e4..156c5b3 100644
--- a/ActualProjectCode/DjangoProject/core/forms.py
+++ b/ActualProjectCode/DjangoProject/core/forms.py
@@ -11,7 +11,7 @@ class UserUploadForm(forms.ModelForm):
     username = forms.CharField(max_length=100, widget=forms.HiddenInput)
     class Meta:
         model = models.Record
-        fields = ['username', 'uploadedFile','chosenML']
+        fields = ['username','uploadedFile','chosenML']
 
 class UploadModelForm(forms.ModelForm):
     username = forms.CharField(max_length=100, widget=forms.HiddenInput)
diff --git a/ActualProjectCode/DjangoProject/core/models.py b/ActualProjectCode/DjangoProject/core/models.py
index 9885224..1a2acf4 100644
--- a/ActualProjectCode/DjangoProject/core/models.py
+++ b/ActualProjectCode/DjangoProject/core/models.py
@@ -16,15 +16,6 @@ class mlModel(models.Model):
     def __str__(self):
         return f"{self.username} NEW MODEL ID: {self.modelID} Path: {self.modelName}"
 
-class Interaction(models.Model):
-    interactionID = models.AutoField(primary_key=True)
-    username = models.CharField(max_length=100, default="default")
-    date = models.DateTimeField()
-    interaction = models.CharField(max_length=1000)
-
-    def __str__(self):
-        return self.interactionID
-
 class Billing(models.Model):
     billingID = models.AutoField(primary_key=True)
     amount = models.FloatField()
@@ -40,6 +31,5 @@ class Record(models.Model):
     chosenML = models.CharField(max_length=100, default="baseML")
     responseByML = models.CharField(max_length=100, default="PLACEHOLDER RESPONSE") # change to actual response by ML
 
-
     def __str__(self):
         return f"{self.chosenML} Response to {self.username}"
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/core/views.py b/ActualProjectCode/DjangoProject/core/views.py
index d79a8de..a66c35c 100644
--- a/ActualProjectCode/DjangoProject/core/views.py
+++ b/ActualProjectCode/DjangoProject/core/views.py
@@ -4,7 +4,8 @@ from django.contrib.auth.models import User
 from django.shortcuts import render, redirect
 from django.contrib.auth.decorators import login_required
 from django.http import HttpResponse
-from .models import Profile, mlModel, Billing, Interaction, Record
+import os
+from .models import Profile, mlModel, Billing, Record
 from .forms import UserLoginForm, UserUploadForm, UploadModelForm, GenerateBillingsForm, UpdateUser
 
 
@@ -94,6 +95,24 @@ def updateUsers(request, id):
     context = {'form': form}
     return render(request, 'modelForms/updateUsers.html', context)
 
+def interactionView(request):
+    interactions = Record.objects.all().values()
+    context = {}
+    context = {'interactions': interactions}
+    return render(request, 'modelForms/interactionView.html', context)
+
+##### DELETION SECTIONS
+
+def deleteRecord(request, id):
+    record = Record.objects.get(id=id)
+    if request.method == 'POST':
+        record.delete()
+        # figure out how to delete file in records directory at same time.
+        return redirect('interactionView')
+    context = {'record': record}
+    return render(request, 'modelForms/deleteRecord.html', context)
+
+
 def deleteUsers(request, id):
     user = Profile.objects.get(user_id=id)
     user2 = User.objects.get(id=id)
@@ -106,6 +125,8 @@ def deleteUsers(request, id):
     context = {'user': user}
     return render(request, 'modelForms/deleteUsers.html', context)
 
+##### LOGOUT LOGIN STUFF
+
 def logout_view(request):
     logout(request)
     return redirect('home')  # Replace 'home' with the URL name for your homepage
diff --git a/ActualProjectCode/DjangoProject/docker-compose.yml b/ActualProjectCode/DjangoProject/docker-compose.yml
index 6bab324..9934bbd 100644
--- a/ActualProjectCode/DjangoProject/docker-compose.yml
+++ b/ActualProjectCode/DjangoProject/docker-compose.yml
@@ -34,9 +34,12 @@ services:
 
 # working on mlservice external container - idk how.
 
-#  mlService:
-#    image: mlService
-
+  mlService:
+    build:
+      context: .
+    image: mlservice
+    command: >
+      sh -c 'python main.py'
 
 
 volumes:
diff --git a/ActualProjectCode/DjangoProject/mlModels/main.py b/ActualProjectCode/DjangoProject/main.py
similarity index 95%
rename from ActualProjectCode/DjangoProject/mlModels/main.py
rename to ActualProjectCode/DjangoProject/main.py
index ce14de2..e1d3ad6 100644
--- a/ActualProjectCode/DjangoProject/mlModels/main.py
+++ b/ActualProjectCode/DjangoProject/main.py
@@ -4,6 +4,7 @@
 
 #
 
+print("Hello!")
 
 # receive form from main website
 
diff --git a/ActualProjectCode/DjangoProject/server/urls.py b/ActualProjectCode/DjangoProject/server/urls.py
index 30973c4..bc9a78f 100644
--- a/ActualProjectCode/DjangoProject/server/urls.py
+++ b/ActualProjectCode/DjangoProject/server/urls.py
@@ -41,5 +41,7 @@ urlpatterns = [
     path('modelForms/manageUsers/', views.manageUsers, name="manageUsers"),
     path('modelForms/updateUsers/<str:id>/', views.updateUsers, name="updateUsers"),
     path('modelForms/deleteUsers/<str:id>/', views.deleteUsers, name="deleteUsers"),
+    path('modelForms/deleteRecord/<str:id>/', views.deleteRecord, name="deleteRecord"),
+    path('modelForms/interactionView/', views.interactionView, name="interactionView"),
 
 ]
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/modelForms/deleteRecord.html b/ActualProjectCode/DjangoProject/templates/modelForms/deleteRecord.html
new file mode 100644
index 0000000..9dcaffb
--- /dev/null
+++ b/ActualProjectCode/DjangoProject/templates/modelForms/deleteRecord.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+</head>
+<body>
+
+    <p> Are you sure you want to delete this record? </p>
+
+<form action="{% url 'deleteRecord' record.id %}" method="POST">
+    {% csrf_token %}
+    <p><a href="{% url 'interactionView' %}">Go Back</a></p>
+    <input type="submit" name="confirm">
+
+</form>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/modelForms/interactionView.html b/ActualProjectCode/DjangoProject/templates/modelForms/interactionView.html
new file mode 100644
index 0000000..2d1fd96
--- /dev/null
+++ b/ActualProjectCode/DjangoProject/templates/modelForms/interactionView.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+</head>
+<body>
+    <p><a href="{% url 'profile' %}">Return to profile</a></p>
+    <br>
+
+    <!-- for i in Records -->
+
+    {% for record in interactions %}
+
+        <p> Record ID: {{ record.id }}</p>
+        <p> Name: {{ record.username }} </p>
+        <p> File Path: {{ record.uploadedFile }} </p>
+        <p> ML Model Selected: {{ record.chosenML }} </p>
+        <p> Response: {{ record.responseByML }} </p>
+        <p><a href="{% url 'deleteRecord' record.id %}">Delete Record</a></p>
+        <h1>------------------------------------</h1>
+
+    {% endfor %}
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/modelForms/userUpload.html b/ActualProjectCode/DjangoProject/templates/modelForms/userUpload.html
index c87103c..e680805 100644
--- a/ActualProjectCode/DjangoProject/templates/modelForms/userUpload.html
+++ b/ActualProjectCode/DjangoProject/templates/modelForms/userUpload.html
@@ -5,7 +5,7 @@
 </head>
 <body>
 
-    <form action="" method="post" enctype="multipart/form-data">
+    <form action="" method="POST" enctype="multipart/form-data">
         {% csrf_token %}
         {{ form.as_p }}
 
diff --git a/ActualProjectCode/DjangoProject/templates/profile.html b/ActualProjectCode/DjangoProject/templates/profile.html
index 6c5a34e..044041a 100644
--- a/ActualProjectCode/DjangoProject/templates/profile.html
+++ b/ActualProjectCode/DjangoProject/templates/profile.html
@@ -17,8 +17,8 @@
         <h1>Upload new ML Model</h1>
         <h2><a href="{% url 'mlUpload' %}">Upload</a></h2>
         <br>
-        <h1>Access Records</h1>
-        <h2><a href="">All Records</a></h2> <!-- TO DO -->
+        <h1>Access ML Interactions</h1>
+        <h2><a href="{% url 'interactionView' %}">All Interactions</a></h2> <!-- TO DO -->
 
 
 
@@ -35,12 +35,9 @@
     {% elif user.profile.role == 'admin' %} <!-- Admin Dashboard -->
         <h2>Admin Page</h2>
         <p>View all Activity</p>
-
-    <!-- for each record in record db -->
-    <!-- display -->
         <p><a href="{% url 'manageUsers' %}">Manage Users<a></a></p>
-    <!-- for each user in profile db: -->
 
+        <p><a href=""> View all Activity </a></p>
 
 
 
-- 
GitLab