Skip to content

Commit

Permalink
Sponsorship form: Do not display benefits marked as unavailable in ad…
Browse files Browse the repository at this point in the history
…min (#2122)

* Sponsorship form: Do not display benefits marked as unavailable in admin

* update help-text for benefit.unavailable
  • Loading branch information
ewdurbin committed Aug 16, 2022
1 parent 37ab5a0 commit 96b28c9
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 4 deletions.
1 change: 1 addition & 0 deletions sponsors/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ class SponsorshipBenefitAdmin(PolymorphicInlineSupportMixin, OrderedModelAdmin):
"short_name",
"package_only",
"internal_value",
"unavailable",
"move_up_down_links",
]
list_filter = ["program", "year", "package_only", "packages", "new", "standalone", "unavailable"]
Expand Down
18 changes: 18 additions & 0 deletions sponsors/migrations/0092_auto_20220816_1517.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.24 on 2022-08-16 15:17

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('sponsors', '0091_sponsorshippackage_allow_a_la_carte'),
]

operations = [
migrations.AlterField(
model_name='sponsorshipbenefit',
name='unavailable',
field=models.BooleanField(default=False, help_text='If selected, this benefit will not be visible or available to applicants.', verbose_name='Benefit is unavailable'),
),
]
7 changes: 4 additions & 3 deletions sponsors/models/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,20 +89,21 @@ def without_conflicts(self):
return self.filter(conflicts__isnull=True)

def a_la_carte(self):
return self.annotate(num_packages=Count("packages")).filter(num_packages=0, standalone=False)
return self.annotate(num_packages=Count("packages")).filter(num_packages=0, standalone=False).exclude(unavailable=True)

def standalone(self):
return self.filter(standalone=True)
return self.filter(standalone=True).exclude(unavailable=True)

def with_packages(self):
return (
self.annotate(num_packages=Count("packages"))
.exclude(Q(num_packages=0) | Q(standalone=True))
.exclude(unavailable=True)
.order_by("-num_packages", "order")
)

def from_year(self, year):
return self.filter(year=year)
return self.filter(year=year).exclude(unavailable=True)

def from_current_year(self):
from sponsors.models import SponsorshipCurrentYear
Expand Down
2 changes: 1 addition & 1 deletion sponsors/models/sponsorship.py
Original file line number Diff line number Diff line change
Expand Up @@ -414,7 +414,7 @@ class SponsorshipBenefit(OrderedModel):
unavailable = models.BooleanField(
default=False,
verbose_name="Benefit is unavailable",
help_text="If selected, this benefit will not be available to applicants.",
help_text="If selected, this benefit will not be visible or available to applicants.",
)
standalone = models.BooleanField(
default=False,
Expand Down
4 changes: 4 additions & 0 deletions sponsors/tests/test_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,13 @@ def setUp(self):
package = baker.make(SponsorshipPackage)
current_year = SponsorshipCurrentYear.get_year()
self.regular_benefit = baker.make(SponsorshipBenefit, year=current_year)
self.regular_benefit_unavailable = baker.make(SponsorshipBenefit, year=current_year, unavailable=True)
self.regular_benefit.packages.add(package)
self.regular_benefit.packages.add(package)
self.a_la_carte = baker.make(SponsorshipBenefit, year=current_year-1)
self.a_la_carte_unavail = baker.make(SponsorshipBenefit, year=current_year-1, unavailable=True)
self.standalone = baker.make(SponsorshipBenefit, standalone=True)
self.standalone_unavail = baker.make(SponsorshipBenefit, standalone=True, unavailable=True)

def test_a_la_carte_queryset(self):
qs = SponsorshipBenefit.objects.a_la_carte()
Expand Down

0 comments on commit 96b28c9

Please sign in to comment.