Example #1
0
    def test_lookup_url_with_existing_instance(self):
        def return_instance(pk):
            return self.tracked_db_model

        class_objects = Mock(name='MockModelManager')
        class_objects.get = return_instance
        self.tracked_model.__class__.objects = class_objects

        url_tracker.track_url_changes_for_model(Mock)
        url_tracker.lookup_previous_url(self.tracked_model)

        self.assertEquals(self.tracked_model._old_url, u'/the/old/one/')
    def test_lookup_url_with_existing_instance(self):
        def return_instance(pk):
            return self.tracked_db_model

        class_objects = Mock(name='MockModelManager')
        class_objects.get = return_instance
        self.tracked_model.__class__.objects = class_objects
        self.tracked_model.get_absolute_url.return_value = u'/the/old/one/'

        url_tracker.track_url_changes_for_model(TrackedModelMock)
        url_tracker.lookup_previous_url(self.tracked_model)

        expected_dict = {'get_absolute_url': u'/the/old/one/'}
        self.assertEquals(self.tracked_model._old_urls, expected_dict)
Example #3
0
    def get_absolute_url(self):
        return reverse('exhibition-detail', kwargs={'slug': self.slug})

    def save(self, *args, **kwargs):
        if self.start_date == self.end_date:
            self.end_date = None
        super(Exhibition, self).save(*args, **kwargs)
        return self

    def clean(self):
        if self.end_date and self.start_date > self.end_date:
            raise ValidationError('Start date can not be after end date')

        self.name = self.name.strip()
        self.description = self.description.strip()

    def get_press_release_photo(self):
        if self.press_release_photo:
            return self.press_release_photo
        try:
            return self.photos.all()[0].image
        except IndexError:
            pass

    @property
    def get_year(self):
        'for the slug'
        return self.start_date.year

url_tracker.track_url_changes_for_model(Exhibition)
    def dependent_paths(self):
        yield reverse('artist-list')
        yield self.get_absolute_url()
        yield reverse('artist-resume', kwargs={'slug': self.slug})
        yield reverse('artist-press-list', kwargs={'slug': self.slug})
        yield reverse('artist-exhibition-list', kwargs={'slug': self.slug})
        for exhibition in self.exhibitions.all():
            yield exhibition.get_absolute_url()

    @property
    def link_if_visible(self):
        if self.visible:
            return format_html(
                '<a href="{}">{}</a>',
                self.get_absolute_url(),
                self,
            )
        return str(self)


class ArtistPhoto(ArtworkPhoto):
    content_object = models.ForeignKey(Artist, related_name='photos')


url_tracker.track_url_changes_for_model(Artist)
dumper.register(Artist)
dumper.register(ArtistPhoto)
simpleimages.trackers.track_model(ArtistPhoto)
register(Artist, search_fields=['first_name', 'last_name'])
            raise ValidationError("At least one of the following must be filled in: " + str(SLUG_FIELD_NAMES))

    @property
    def slug_title(self):
        return "-".join(map(repr, self._slug_field_values))

    @property
    def date_year(self):
        return self.date.year

    @property
    def _slug_field_values(self):
        values = [getattr(self, field_name) for field_name in SLUG_FIELD_NAMES]
        return [_f for _f in values if _f]

    def get_absolute_url(self):
        return reverse("press-detail", kwargs={"slug": self.slug})

    def dependent_paths(self):
        yield self.get_absolute_url()
        if self.artist:
            yield self.artist.get_absolute_url()
            yield reverse("artist-press-list", kwargs={"slug": self.artist.slug})
        if self.exhibition:
            yield self.exhibition.get_absolute_url()
            yield reverse("exhibition-press-list", kwargs={"slug": self.exhibition.slug})


url_tracker.track_url_changes_for_model(Press)
dumper.register(Press)
 def setUp(self):
     track_url_changes_for_model(TestModel)
     self.instance = TestModel.objects.create(slug='initial')
     self.instance.slug = 'final'
     self.instance.save()
Example #7
0
    def test__lookup_url_with_new_instance(self):
        url_tracker.track_url_changes_for_model(Mock)
        url_tracker.lookup_previous_url(self.tracked_model)

        self.assertEquals(self.tracked_model._old_url, None)
from libs.ckeditor.fields import CKEditorField


class Update(url_tracker.URLTrackingMixin, models.Model):
    description = CKEditorField(blank=True)
    post_date = models.DateField(verbose_name='Date')

    class Meta:
        ordering = ["-post_date"]

    def clean(self):
        self.description = self.description.strip()

    def __str__(self):
        return str(self.post_date.isoformat())

    def get_absolute_url(self):
        return reverse('update-detail', kwargs={'pk': self.pk})

    def dependent_paths(self):
        yield reverse('update-list')


class UpdatePhoto(BasePhoto):
    content_object = models.ForeignKey(Update, related_name='photos')

url_tracker.track_url_changes_for_model(Update)
dumper.register(Update)
dumper.register(UpdatePhoto)
simpleimages.trackers.track_model(UpdatePhoto)