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)
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()
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)