added the option to change a student's program in student update form

This commit is contained in:
mnymkr 2024-07-12 19:17:40 +07:00
parent 7996248f79
commit bf57019fda
4 changed files with 17 additions and 4 deletions

View File

@ -324,6 +324,14 @@ class ProfileUpdateForm(UserChangeForm):
label="Address / city", label="Address / city",
) )
program = forms.ModelChoiceField(
queryset=Program.objects.all(),
widget=forms.Select(
attrs={"class": "browser-default custom-select form-control"}
),
label="Program",
)
class Meta: class Meta:
model = User model = User
fields = [ fields = [

View File

@ -420,6 +420,10 @@ def edit_student(request, pk):
if form.is_valid(): if form.is_valid():
form.save() form.save()
student = Student.objects.get(student_id=instance.id)
student.program = form.cleaned_data["program"]
student.save()
messages.success(request, ("Student " + full_name + " has been updated.")) messages.success(request, ("Student " + full_name + " has been updated."))
return redirect("student_list") return redirect("student_list")
else: else:
@ -477,6 +481,7 @@ def delete_student(request, pk):
messages.success(request, "Student has been deleted.") messages.success(request, "Student has been deleted.")
return redirect("student_list") return redirect("student_list")
# REDUNDANT
@login_required @login_required
@admin_required @admin_required
def edit_program(request, pk): def edit_program(request, pk):

View File

@ -30,6 +30,7 @@
{{ form.gender|as_crispy_field }} {{ form.gender|as_crispy_field }}
{{ form.phone|as_crispy_field }} {{ form.phone|as_crispy_field }}
{{ form.address|as_crispy_field }} {{ form.address|as_crispy_field }}
{{ form.program|as_crispy_field }}
</div> </div>
</div> </div>
</div> </div>

View File

@ -38,11 +38,10 @@
<a class="edit-btn" href="{% url 'student_edit' pk=user.id %}"> <a class="edit-btn" href="{% url 'student_edit' pk=user.id %}">
<i class="fas fa-user-edit"></i><span class="mobile-hide">Edit Profile</span> <i class="fas fa-user-edit"></i><span class="mobile-hide">Edit Profile</span>
</a> </a>
<div class="p-2"></div>
{# had to name out of convention because it clashes with 'edit_[whatever]program', which directs to 'program/[id]/edit/ #} {# had to name out of convention because it clashes with 'edit_[whatever]program', which directs to 'program/[id]/edit/ #}
<a class="edit-btn" href="{% url 'student_program_edit' user.id %}"> {# <a class="edit-btn" href="{% url 'student_program_edit' user.id %}">#}
<i class="fas fa-user-edit"></i><span class="mobile-hide">Change Program</span> {# <i class="fas fa-user-edit"></i><span class="mobile-hide">Change Program</span>#}
</a> {# </a>#}
{% endif %} {% endif %}
{% if user.is_lecturer %} {% if user.is_lecturer %}
<a class="edit-btn" href="{% url 'staff_edit' pk=user.id %}"> <a class="edit-btn" href="{% url 'staff_edit' pk=user.id %}">