|
1 | 1 | import uuid
|
2 | 2 | from itertools import chain
|
3 | 3 | from num2words import num2words
|
| 4 | +from datetime import date |
4 | 5 | from django.conf import settings
|
5 | 6 | from django.core.exceptions import ObjectDoesNotExist
|
6 | 7 | from django.db import models, transaction
|
@@ -433,6 +434,13 @@ def agreed_fee(self):
|
433 | 434 | except SponsorshipPackage.DoesNotExist: # sponsorship level names can change over time
|
434 | 435 | return None
|
435 | 436 |
|
| 437 | + @property |
| 438 | + def is_active(self): |
| 439 | + conditions = [ |
| 440 | + self.status == self.FINALIZED, |
| 441 | + self.end_date and self.end_date > date.today() |
| 442 | + ] |
| 443 | + |
436 | 444 | def reject(self):
|
437 | 445 | if self.REJECTED not in self.next_status:
|
438 | 446 | msg = f"Can't reject a {self.get_status_display()} sponsorship."
|
@@ -492,7 +500,7 @@ def contract_admin_url(self):
|
492 | 500 |
|
493 | 501 | @property
|
494 | 502 | def detail_url(self):
|
495 |
| - return reverse("sponsorship_application_detail", args=[self.pk]) |
| 503 | + return reverse("users:sponsorship_application_detail", args=[self.pk]) |
496 | 504 |
|
497 | 505 | @cached_property
|
498 | 506 | def package_benefits(self):
|
@@ -620,39 +628,39 @@ class Sponsor(ContentManageable):
|
620 | 628 |
|
621 | 629 | name = models.CharField(
|
622 | 630 | max_length=100,
|
623 |
| - verbose_name="Sponsor name", |
| 631 | + verbose_name="Name", |
624 | 632 | help_text="Name of the sponsor, for public display.",
|
625 | 633 | )
|
626 | 634 | description = models.TextField(
|
627 |
| - verbose_name="Sponsor description", |
| 635 | + verbose_name="Description", |
628 | 636 | help_text="Brief description of the sponsor for public display.",
|
629 | 637 | )
|
630 | 638 | landing_page_url = models.URLField(
|
631 | 639 | blank=True,
|
632 | 640 | null=True,
|
633 |
| - verbose_name="Sponsor landing page", |
634 |
| - help_text="Sponsor landing page URL. This may be provided by the sponsor, however the linked page may not contain any sales or marketing information.", |
| 641 | + verbose_name="Landing page URL", |
| 642 | + help_text="Landing page URL. This may be provided by the sponsor, however the linked page may not contain any sales or marketing information.", |
635 | 643 | )
|
636 | 644 | twitter_handle = models.CharField(
|
637 | 645 | max_length=32, # Actual limit set by twitter is 15 characters, but that may change?
|
638 | 646 | blank=True,
|
639 | 647 | null=True,
|
640 |
| - verbose_name="Sponsor twitter hanlde", |
| 648 | + verbose_name="Twitter handle", |
641 | 649 | )
|
642 | 650 | web_logo = models.ImageField(
|
643 | 651 | upload_to="sponsor_web_logos",
|
644 |
| - verbose_name="Sponsor web logo", |
| 652 | + verbose_name="Web logo", |
645 | 653 | help_text="For display on our sponsor webpage. High resolution PNG or JPG, smallest dimension no less than 256px",
|
646 | 654 | )
|
647 | 655 | print_logo = models.FileField(
|
648 | 656 | upload_to="sponsor_print_logos",
|
649 | 657 | blank=True,
|
650 | 658 | null=True,
|
651 |
| - verbose_name="Sponsor print logo", |
| 659 | + verbose_name="Print logo", |
652 | 660 | help_text="For printed materials, signage, and projection. SVG or EPS",
|
653 | 661 | )
|
654 | 662 |
|
655 |
| - primary_phone = models.CharField("Sponsor Primary Phone", max_length=32) |
| 663 | + primary_phone = models.CharField("Primary Phone", max_length=32) |
656 | 664 | mailing_address_line_1 = models.CharField(
|
657 | 665 | verbose_name="Mailing Address line 1", max_length=128, default=""
|
658 | 666 | )
|
|
0 commit comments