Example #1
0
class Presentation(models.Model):
    title = UnlimitedCharField()
    slug = models.SlugField()
    date = models.DateField()
    description = models.TextField(blank=True)

    type = UnlimitedCharField(choices=PRESENTATION_TYPE_CHOICES,
                              default="talk")

    conference = models.ForeignKey(Conference,
                                   related_name="presentations",
                                   on_delete=models.CASCADE)

    # hm... not sure I like introducing the depedency on blog
    # so leaving this out for now.
    # but maybe I need that dep anyway -- search?
    # tags = models.ManyToManyField(Tag, blank=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("speaking_portfolio_detail", args=[self.slug])

    @property
    def is_future(self):
        return self.date > timezone.now().date()

    @property
    def is_past(self):
        return self.date <= timezone.now().date()
Example #2
0
class Quotation(BaseModel):
    quotation = models.TextField()
    source = models.CharField(max_length=255)
    source_url = UnlimitedCharField(blank=True, null=True)

    def __str__(self):
        return self.quotation
Example #3
0
class Coverage(models.Model):
    presentation = models.ForeignKey(Presentation,
                                     related_name="coverage",
                                     on_delete=models.CASCADE)
    type = UnlimitedCharField(choices=COVERAGE_TYPE_CHOICES)
    url = models.URLField()
    oembed = JSONField(blank=True, null=True)

    def __str__(self):
        return f"{self.presentation} - {self.type}"

    class Meta:
        verbose_name_plural = "coverage"

    def save(self, *args, **kwargs):
        providers = micawber.bootstrap_basic()
        try:
            self.oembed = providers.request(self.url)
        except micawber.ProviderException as e:
            log.warn(f"error saving oembed for {self}: {e}")
            self.oembed = {}
        super().save(*args, **kwargs)

    @property
    def icon_class(self):
        return FA_ICON_MAP[self.type]
Example #4
0
class Conference(models.Model):
    title = UnlimitedCharField()
    link = models.URLField(blank=True)
    start_date = models.DateField(blank=True, null=True)
    end_date = models.DateField(blank=True, null=True)

    def __str__(self):
        return self.title
Example #5
0
class Series(models.Model):
    title = UnlimitedCharField()
    slug = models.SlugField()
    description = models.TextField(blank=True)

    class Meta:
        verbose_name_plural = "series"

    def __str__(self):
        return self.title
Example #6
0
class Photo(BaseModel):
    photo = models.ImageField(upload_to="photos/%Y")
    title = UnlimitedCharField(blank=True)

    def __str__(self):
        return self.title if self.title else self.photo.url

    def index_components(self):
        return {
            "A": self.title,
            "B": " ".join(self.tags.values_list("tag", flat=True)),
            "C": "",
        }
Example #7
0
class Series(models.Model):
    title = UnlimitedCharField()
    slug = models.SlugField()
    description = models.TextField(blank=True)

    class Meta:
        verbose_name_plural = "series"

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("series-detail", args=[self.slug])

    def get_entries_in_order(self):
        return self.entries.order_by("created")
Example #8
0
class Photo(BaseModel):
    photo = models.ImageField(upload_to="photos/%Y/%M")
    title = UnlimitedCharField(blank=True)

    def __str__(self):
        return self.title