This commit is contained in:
Nathan Chapman 2022-07-27 16:21:07 -06:00
parent 16ddd81a63
commit b1bbb2b1c2
4 changed files with 86 additions and 27 deletions

View File

@ -1,13 +1,36 @@
{% extends 'base.html' %} {% extends "base.html" %}
{% load helpers %}
{% block head_title %}{{ component.name }} | {% endblock head_title %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<menu>
<li><strong><a href="{% url 'core:schoolyear-detail' component.subject.school_year.year %}">{{ component.subject.school_year.year }}</a></strong></li>
<span></span>
<li><a href="{% url 'core:subject-list' component.subject.school_year.year %}">Subjects</a></li>
<span></span>
<li><a href="{% url 'core:subject-detail' component.subject.school_year.year component.subject.pk %}">{{ component.subject.name }}</a></li>
<span></span>
<li><a href="{% url 'core:component-detail' component.subject.school_year.year component.subject.pk component.pk %}">{{ component.name }}</a></li>
</menu>
</div>
{% endblock breadcrumbs %}
{% block content %} {% block content %}
<article class="form">
<header class="form__header">
<h1>Delete Component</h1> <h1>Delete Component</h1>
<form method="POST" action="{% url 'core:component-delete' component.pk %}"> <p>
<a href="{% url 'core:component-delete' component.subject.school_year.year component.subject.pk component.pk %}" class="action-button action-delete">Delete</a>
</p>
</header>
<form method="POST" action="{% url 'core:component-delete' component.subject.school_year.year component.subject.pk component.pk %}">
{% csrf_token %} {% csrf_token %}
<p>Are you sure you want to delete "{{ component }}"?</p>
{{ form.as_p }} {{ form.as_p }}
<p> <p>
<input type="submit" value="Delete"> or <a href="{% url 'core:component-detail' component.pk %}">cancel</a> <input type="submit" value="Delete"> or <a href="{% url 'core:component-detail' component.subject.school_year.year component.subject.pk component.pk %}">cancel</a>
</p> </p>
</form> </form>
</article>
{% endblock %} {% endblock %}

View File

@ -23,7 +23,7 @@
<p><small>Added: <time datetime="{{ component.created_at|date:'Y-m-d' }}">{{ component.created_at|date:'M d Y' }}</time><br> <p><small>Added: <time datetime="{{ component.created_at|date:'Y-m-d' }}">{{ component.created_at|date:'M d Y' }}</time><br>
Last updated: <time datetime="{{ component.updated_at|date:'Y-m-d' }}">{{ component.updated_at|date:'M d Y' }}</time></small></p> Last updated: <time datetime="{{ component.updated_at|date:'Y-m-d' }}">{{ component.updated_at|date:'M d Y' }}</time></small></p>
</div> </div>
<a href="{% url 'component-update' component.subject.pk component.pk %}" class="action-button">Edit</a> <a href="{% url 'core:component-update' component.subject.school_year.year component.subject.pk component.pk %}" class="action-button">Edit</a>
</header> </header>
{% if component.tags.count > 0 %} {% if component.tags.count > 0 %}
<section> <section>

View File

@ -1,12 +1,36 @@
{% extends 'base.html' %} {% extends "base.html" %}
{% load helpers %}
{% block head_title %}{{ component.name }} | {% endblock head_title %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<menu>
<li><strong><a href="{% url 'core:schoolyear-detail' component.subject.school_year.year %}">{{ component.subject.school_year.year }}</a></strong></li>
<span></span>
<li><a href="{% url 'core:subject-list' component.subject.school_year.year %}">Subjects</a></li>
<span></span>
<li><a href="{% url 'core:subject-detail' component.subject.school_year.year component.subject.pk %}">{{ component.subject.name }}</a></li>
<span></span>
<li><a href="{% url 'core:component-detail' component.subject.school_year.year component.subject.pk component.pk %}">{{ component.name }}</a></li>
</menu>
</div>
{% endblock breadcrumbs %}
{% block content %} {% block content %}
<article class="form">
<header class="form__header">
<h1>Edit Component</h1> <h1>Edit Component</h1>
<form method="POST" action="{% url 'core:component-update' component.pk %}"> <p>
<a href="{% url 'core:component-delete' component.subject.school_year.year component.subject.pk component.pk %}" class="action-button action-delete">Delete</a>
</p>
</header>
<form method="POST" action="{% url 'core:component-update' component.subject.school_year.year component.subject.pk component.pk %}">
{% csrf_token %} {% csrf_token %}
{{ form.as_p }} {{ form.as_p }}
<p> <p>
<input type="submit" value="Save changes"> or <a href="{% url 'core:component-detail' component.pk %}">cancel</a> <input type="submit" value="Save changes"> or <a href="{% url 'core:component-detail' component.subject.school_year.year component.subject.pk component.pk %}">cancel</a>
</p> </p>
</form> </form>
</article>
{% endblock %} {% endblock %}

View File

@ -436,7 +436,9 @@ class ComponentDetailView(LoginRequiredMixin, DetailView):
component=self.object, component=self.object,
student=OuterRef('pk') student=OuterRef('pk')
) )
context['scoreless'] = Student.objects.exclude( context['scoreless'] = Student.objects.filter(
school_year__year=self.kwargs['year']
).exclude(
score__in=cscores score__in=cscores
) )
return context return context
@ -448,6 +450,13 @@ class ComponentUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
success_message = 'Component saved.' success_message = 'Component saved.'
fields = '__all__' fields = '__all__'
def get_success_url(self):
return reverse('core:component-detail', kwargs={
'year': self.object.subject.school_year.year,
'pk': self.object.subject.pk,
'component_pk': self.object.pk
})
class ComponentDeleteView(LoginRequiredMixin, SuccessMessageMixin, DeleteView): class ComponentDeleteView(LoginRequiredMixin, SuccessMessageMixin, DeleteView):
model = Component model = Component
@ -456,7 +465,7 @@ class ComponentDeleteView(LoginRequiredMixin, SuccessMessageMixin, DeleteView):
success_url = reverse_lazy('core:component-list') success_url = reverse_lazy('core:component-list')
class ComponentManagerView(LoginRequiredMixin, LoginRequiredMixin, UpdateView): class ComponentManagerView(LoginRequiredMixin, UpdateView):
model = Component model = Component
pk_url_kwarg = 'component_pk' pk_url_kwarg = 'component_pk'
template_name_suffix = '_manager' template_name_suffix = '_manager'
@ -468,7 +477,9 @@ class ComponentManagerView(LoginRequiredMixin, LoginRequiredMixin, UpdateView):
component=self.object, component=self.object,
student=OuterRef('pk') student=OuterRef('pk')
) )
context['student_list'] = Student.objects.annotate( context['student_list'] = Student.objects.filter(
school_year__year=self.kwargs['year']
).annotate(
cscore=Subquery(cscores.values('value')), cscore=Subquery(cscores.values('value')),
cscore_pk=Subquery(cscores.values('pk')) cscore_pk=Subquery(cscores.values('pk'))
) )
@ -575,7 +586,9 @@ class SchoolDayCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context['student_list'] = Student.objects.all() context['student_list'] = Student.objects.filter(
school_year__year=self.kwargs['year']
)
context['school_year'] = get_object_or_404( context['school_year'] = get_object_or_404(
SchoolYear, year=self.kwargs['year'] SchoolYear, year=self.kwargs['year']
) )
@ -608,7 +621,6 @@ class SchoolDayUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context['student_list'] = Student.objects.all()
context['school_year'] = get_object_or_404( context['school_year'] = get_object_or_404(
SchoolYear, year=self.kwargs['year'] SchoolYear, year=self.kwargs['year']
) )