Changeset - 6bee00dff72b
[Not reviewed]
Merge
0 3 0
Patrick Altman - 9 years ago 2016-02-20 23:04:32
paltman@gmail.com
Merge pull request #122 from pydata/sponsor-listing-text-is-none

Make sponsor description default empty string.
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
symposion/sponsorship/models.py
Show inline comments
...
 
@@ -91,97 +91,97 @@ class Sponsor(models.Model):
 
    web_logo_benefit = models.NullBooleanField(_("Web logo benefit"), help_text=_(u"Web logo benefit is complete"))
 
    print_logo_benefit = models.NullBooleanField(_("Print logo benefit"), help_text=_(u"Print logo benefit is complete"))
 
    print_description_benefit = models.NullBooleanField(_("Print description benefit"), help_text=_(u"Print description benefit is complete"))
 
    company_description_benefit = models.NullBooleanField(_("Company description benefit"), help_text=_(u"Company description benefit is complete"))
 

	
 
    objects = SponsorManager()
 

	
 
    def __str__(self):
 
        return self.name
 

	
 
    class Meta:
 
        verbose_name = _("Sponsor")
 
        verbose_name_plural = _("Sponsors")
 
        ordering = ['name']
 

	
 
    def save(self, *args, **kwargs):
 
        # Set fields related to benefits being complete
 
        for benefit in BENEFITS:
 
            field_name = benefit['field_name']
 
            benefit_name = benefit['name']
 
            setattr(self, field_name, self.benefit_is_complete(benefit_name))
 
            super(Sponsor, self).save(*args, **kwargs)
 

	
 
    def get_absolute_url(self):
 
        if self.active:
 
            return reverse("sponsor_detail", kwargs={"pk": self.pk})
 
        return reverse("sponsor_list")
 

	
 
    def get_display_url(self):
 
        if self.display_url:
 
            return self.display_url
 
        else:
 
            return self.external_url
 

	
 
    @property
 
    def website_logo(self):
 
        if self.sponsor_logo is None:
 
            benefits = self.sponsor_benefits.filter(
 
                benefit__type="weblogo", upload__isnull=False)[:1]
 
            if benefits.count():
 
                if benefits[0].upload:
 
                    self.sponsor_logo = benefits[0]
 
                    self.save()
 
        return self.sponsor_logo.upload
 

	
 
    @property
 
    def listing_text(self):
 
        if not hasattr(self, "_listing_text"):
 
            self._listing_text = None
 
            self._listing_text = ""
 
            # @@@ better than hard-coding a pk but still not good
 
            benefits = self.sponsor_benefits.filter(benefit__name="Sponsor Description")
 
            if benefits.count():
 
                self._listing_text = benefits[0].text
 
        return self._listing_text
 

	
 
    def reset_benefits(self):
 
        """
 
        Reset all benefits for this sponsor to the defaults for their
 
        sponsorship level.
 
        """
 
        level = None
 

	
 
        try:
 
            level = self.level
 
        except SponsorLevel.DoesNotExist:
 
            pass
 

	
 
        allowed_benefits = []
 
        if level:
 
            for benefit_level in level.benefit_levels.all():
 
                # Create all needed benefits if they don't exist already
 
                sponsor_benefit, created = SponsorBenefit.objects.get_or_create(
 
                    sponsor=self, benefit=benefit_level.benefit)
 

	
 
                # and set to default limits for this level.
 
                sponsor_benefit.max_words = benefit_level.max_words
 
                sponsor_benefit.other_limits = benefit_level.other_limits
 

	
 
                # and set to active
 
                sponsor_benefit.active = True
 

	
 
                # @@@ We don't call sponsor_benefit.clean here. This means
 
                # that if the sponsorship level for a sponsor is adjusted
 
                # downwards, an existing too-long text entry can remain,
 
                # and won't raise a validation error until it's next
 
                # edited.
 
                sponsor_benefit.save()
 

	
 
                allowed_benefits.append(sponsor_benefit.pk)
 

	
 
        # Any remaining sponsor benefits that don't normally belong to
 
        # this level are set to inactive
 
        self.sponsor_benefits.exclude(pk__in=allowed_benefits)\
 
            .update(active=False, max_words=None, other_limits="")
 

	
 
    def send_coordinator_emails(self):
 
        pass  # @@@ should this just be done centrally?
0 comments (0 inline, 0 general)