Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions dashboard/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import sys
import types

from django.http import HttpResponse


# Creat a "fake" mozilla_django_oidc.views so that tests will run,
# even if mozilla_django_oidc is not available at import time for
# tests.

if "mozilla_django_oidc" not in sys.modules:
oidc_module = types.ModuleType("mozilla_django_oidc")
oidc_views_module = types.ModuleType("mozilla_django_oidc.views")

class _DummyOIDCView:
@classmethod
def as_view(cls):
def _view(request, *args, **kwargs):
return HttpResponse("")

return _view

oidc_views_module.OIDCAuthenticationRequestView = _DummyOIDCView
oidc_views_module.OIDCAuthenticationCallbackView = _DummyOIDCView
oidc_views_module.OIDCLogoutView = _DummyOIDCView
oidc_module.views = oidc_views_module
sys.modules["mozilla_django_oidc"] = oidc_module
sys.modules["mozilla_django_oidc.views"] = oidc_views_module
8 changes: 8 additions & 0 deletions dashboard/framework/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ def save(self, *args, **kwargs):
from projects.models import (
ProjectObjective,
ProjectObjectiveCondition,
Commitment
) # avoids circular import

super().save(*args, **kwargs)
Expand All @@ -178,6 +179,13 @@ def save(self, *args, **kwargs):
objective=projectobjective.objective,
condition=self,
)
for work_cycle in WorkCycle.objects.all():
Commitment.objects.get_or_create(
work_cycle=work_cycle,
project=projectobjective.project,
objective=projectobjective.objective,
level=self.level,
)

class Meta:
ordering = ["objective__name", "level__value"]
26 changes: 26 additions & 0 deletions dashboard/framework/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,29 @@ def test_new_objective_means_new_commitments(

assert project.commitment_set.count() == 2
assert work_cycle.commitment_set.count() == 2


@pytest.mark.django_db
def test_new_condition_with_new_level_backfills_commitment(
project, objective, condition, work_cycle
):
# A new condition at a new level should create a matching commitment
# for existing rows.

assert Commitment.objects.filter(
project=project, objective=objective, work_cycle=work_cycle
).count() == 1

new_level = Level.objects.create(name="test_level_2", value=2)
Condition.objects.create(
name="test_condition_2", objective=objective, level=new_level
)

# Expected behaviour: creating a new condition/level backfills
# commitments.
assert Commitment.objects.filter(
project=project,
objective=objective,
work_cycle=work_cycle,
level=new_level,
).exists()
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
<a href="{% url 'projects:project' project.id %}">{{ project.last_review|default:"" }}</a>
</td>

{% for qi in project.quality_history %}<td>{{ qi.value }}</td>{% endfor %}
{% for qi in project.quality_history_values %}<td>{{ qi.value }}</td>{% endfor %}

<td><a href="{% url 'projects:project' project.id %}">{{ project.quality_indicator }}</a></td>
<td><a href="{% url 'projects:project' project.id %}">{{ project.quality_indicator_value }}</a></td>
<td class="{{ project.expectations_review_status|slugify }}"><a href="{% url 'projects:project' project.id %}">{{ project.expectations_review_status|default:"Unreviewed" }}</a></td>

{% for po in project.projectobjectives %}
Expand Down
10 changes: 1 addition & 9 deletions dashboard/projects/templates/projects/project_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,7 @@
<tr class="row-group"><td colspan="{{ column_count }}">{{ group }}</td></tr>
{% endif %}
{% for project in projects %}

<tr
hx-get="{% url 'projects:project_row' project.id %}"
hx-trigger="intersect"
hx-swap="outerHTML"
>
<td>…</td>
</tr>

{% include "projects/partial_project_list_row.html" %}
{% endfor %}
{% endfor %}
</table>
Expand Down
Loading
Loading