Skip to content

Commit

Permalink
revert: uploading several images in medical reference
Browse files Browse the repository at this point in the history
This contains bugs, so should be reverted

This reverts commit 8d3f048.
This reverts commit 196cb90.
  • Loading branch information
ArtemSBulgakov committed Jan 16, 2025
1 parent 196cb90 commit 8691b05
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 123 deletions.
18 changes: 9 additions & 9 deletions adminpage/media/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@
from django.shortcuts import get_object_or_404
from django_sendfile import sendfile

from sport.models import Reference, SelfSportReport, MedicalGroupReferenceImage
from sport.models import Reference, SelfSportReport, MedicalGroupReference


def download_student_object(
request,
klass,
student_id: int,
image_path: str
**kwargs
):
user = request.user
if user.is_staff or user.pk == student_id:
requested_entry = get_object_or_404(
klass,
reference__student_id=student_id,
image=image_path
student_id=student_id,
**kwargs,
)
return sendfile(request, requested_entry.image.path)
else:
Expand Down Expand Up @@ -61,14 +61,14 @@ def self_sport_download(

@login_required
def medical_group_reference_download(
request,
student_id: int,
filename: str,
request,
student_id: int,
filename: str,
):
requested_path = request.path[len(settings.MEDIA_URL):]
return download_student_object(
request,
MedicalGroupReferenceImage,
MedicalGroupReference,
student_id,
image_path=requested_path
image=requested_path
)
19 changes: 10 additions & 9 deletions adminpage/sport/admin/medicalGroupReferenceAdmin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.utils.html import format_html

from sport.admin import site
from sport.models import MedicalGroupReference, MedicalGroupReferenceImage, MedicalGroup, MedicalGroupHistory
from sport.models import MedicalGroupReference, MedicalGroup, MedicalGroups, MedicalGroupHistory


class StudentTextFilter(AutocompleteFilter):
Expand Down Expand Up @@ -51,17 +51,13 @@ class Meta:
)


class MedicalGroupReferenceAdminImage(admin.TabularInline):
model = MedicalGroupReferenceImage
extra = 0


@admin.register(MedicalGroupReference, site=site)
class MedicalGroupReferenceAdmin(admin.ModelAdmin):
form = MedicalGroupReferenceForm

list_display = (
"student",
"image",
"resolved",
)

Expand All @@ -78,17 +74,16 @@ class MedicalGroupReferenceAdmin(admin.ModelAdmin):
fields = (
("student", "uploaded"),
("medical_group", "comment"),
("student_comment"),
("student_comment", "reference_image"),
)

readonly_fields = (
"student",
"uploaded",
"reference_image",
"student_comment",
)

inlines = (MedicalGroupReferenceAdminImage,)

def save_model(self, request, obj, form, change):
if obj.resolved is None or 'comment' in form.changed_data or 'medical_group' in form.changed_data:
obj.resolved = form.cleaned_data['medical_group'].pk > -2
Expand All @@ -97,5 +92,11 @@ def save_model(self, request, obj, form, change):
def has_add_permission(self, request):
return False

def reference_image(self, obj):
return format_html('<a href="{}"><img style="width: 50%" src="{}" /></a>', obj.image.url, obj.image.url)

reference_image.short_description = 'Reference'
reference_image.allow_tags = True

class Media:
pass
Empty file removed adminpage/sport/forms/__init__.py
Empty file.
12 changes: 0 additions & 12 deletions adminpage/sport/forms/medical.py

This file was deleted.

This file was deleted.

14 changes: 0 additions & 14 deletions adminpage/sport/migrations/0126_merge_20250116_2312.py

This file was deleted.

2 changes: 1 addition & 1 deletion adminpage/sport/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from .enums import MedicalGroups, StudentStatuses, Gender
from .group import Group
from .medical_group import MedicalGroup
from .medical_group_reference import MedicalGroupReference, MedicalGroupReferenceImage
from .medical_group_reference import MedicalGroupReference
from .medical_group_history import MedicalGroupHistory
from .reference import Reference
from .schedule import Schedule
Expand Down
35 changes: 13 additions & 22 deletions adminpage/sport/models/medical_group_reference.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
import uuid
from typing import Tuple

from django.conf import settings
from django.db import models

from sport.utils import SubmissionType


def get_reference_path(instance, filename):
ext = filename.split('.')[-1]
return f'{settings.MEDICAL_GROUP_REFERENCE_FOLDER}/' \
f'{instance.reference.student.pk}/{uuid.uuid4()}.{ext}'
f'{instance.student.pk}/{uuid.uuid4()}.{ext}'


class MedicalGroupReference(models.Model):
Expand All @@ -16,6 +19,10 @@ class MedicalGroupReference(models.Model):
on_delete=models.CASCADE,
)

image = models.ImageField(
upload_to=get_reference_path,
)

resolved = models.BooleanField(null=True)

semester = models.ForeignKey(
Expand All @@ -29,30 +36,14 @@ class MedicalGroupReference(models.Model):
null=False
)
student_comment = models.TextField(max_length=1024, null=True, blank=True, verbose_name="Student's comment")
# def __str__(self):
# return f'{self.student} - {self.semester}'

def get_submission_url(self) -> Tuple[SubmissionType, str]:
return SubmissionType.IMAGE, self.image.url

def __str__(self):
return f"{self.student} {self.uploaded.strftime('%Y-%m-%d %H:%M:%S')} for {self.semester}"

class Meta:
db_table = "medical_group_reference"


class MedicalGroupReferenceImage(models.Model):
reference = models.ForeignKey(
"MedicalGroupReference",
verbose_name="medical reference",
related_name="images",
on_delete=models.CASCADE,
)

image = models.ImageField(
upload_to=get_reference_path,
)

def __str__(self) -> str:
return f"{self.reference} image {self.pk}"

class Meta:
db_table = "medical_group_reference_image"
verbose_name = "medical group reference image"
verbose_name_plural = "medical group reference images"
21 changes: 9 additions & 12 deletions adminpage/sport/signals/reference.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
from django.db.models.signals import post_save
from django.dispatch.dispatcher import receiver

from sport.models import Reference, Group, MedicalGroupReference, MedicalGroupReferenceImage
from sport.models import Reference, Group, MedicalGroupReference
from sport.signals.utils import create_attendance_record
from sport.utils import format_submission_html, SubmissionType
from sport.utils import format_submission_html


@receiver(post_save, sender=Reference)
Expand Down Expand Up @@ -59,25 +59,22 @@ def medical_group_updated(
):
if created or instance.resolved is None:
return
submissions_urls = '\n'.join(
[
format_submission_html(SubmissionType.IMAGE, image.image.path)
for image in MedicalGroupReferenceImage.objects.filter(
reference_id=instance.pk
)
]
)

if instance.resolved:
instance.student.notify(
*settings.EMAIL_TEMPLATES['medical_group_success'],
semester=instance.semester,
medical_group=instance.student.medical_group.name,
submission=submissions_urls
submission=format_submission_html(
*instance.get_submission_url()
),
)
else:
instance.student.notify(
*settings.EMAIL_TEMPLATES['medical_group_reject'],
semester=instance.semester,
comment=instance.comment,
submission=submissions_urls
submission=format_submission_html(
*instance.get_submission_url()
),
)
6 changes: 1 addition & 5 deletions adminpage/sport/templates/med_group_reference.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,7 @@ <h5 class="modal-title">
Based on the reference you will be assigned a health group.
</p>
{% csrf_token %}
<input type="file" name="references" multiple="" accept="image/*" required="" id="id_references">
<p>
{{ forms.medical_group_reference.student_comment.label }}
{{ forms.medical_group_reference.student_comment }}
</p>
{{ forms.medical_group_reference.as_p }}
</div>
<div class="modal-footer">
<div class="container">
Expand Down
21 changes: 14 additions & 7 deletions adminpage/sport/views/profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,19 @@
get_brief_hours, \
get_trainer_groups, get_negative_hours, get_student_hours, get_faq, get_sports
from api.permissions import IsStudent
from sport.models import Student, MedicalGroupReference, MedicalGroupReferenceImage, Debt
from sport.models import Student, MedicalGroupReference, Debt
from sport.utils import set_session_notification
from sport.forms.medical import MedicalGroupReferenceForm


class MedicalGroupReferenceForm(forms.Form):
reference = forms.ImageField()
student_comment = forms.CharField(
widget=forms.Textarea,
max_length=1024,
label="Comments (optional)",
required=False,
empty_value='-'
)


@login_required
Expand Down Expand Up @@ -107,15 +117,12 @@ def profile_view(request, **kwargs):
def process_med_group_form(request, *args, **kwargs):
form = MedicalGroupReferenceForm(request.POST, request.FILES)
if form.is_valid():
reference = MedicalGroupReference.objects.create(
MedicalGroupReference.objects.create(
student_id=request.user.pk,
semester=get_ongoing_semester(),
image=form.cleaned_data["reference"],
student_comment=form.cleaned_data['student_comment']
)
reference_images = []
for image in request.FILES.getlist('references'):
reference_images.append(MedicalGroupReferenceImage(reference=reference, image=image))
MedicalGroupReferenceImage.objects.bulk_create(reference_images)

set_session_notification(
request,
Expand Down

0 comments on commit 8691b05

Please sign in to comment.