def save(self, *args, **kwargs): if not self.slug: original_slug = slugify(self.title) counter = 2 qs = self.__class__.objects while qs.filter(slug=original_slug).exists(): original_slug = '{0}-{1}'.format(original_slug, counter) counter += 1 self.slug = original_slug previous_status = None if self.pk: previous_status = self.__class__.objects.get(pk=self.pk).status super(BaseProject, self).save(*args, **kwargs) # Only log project phase if the status has changed if self is not None and previous_status != self.status: get_project_phaselog_model().objects.create( project=self, status=self.status)
from django.utils import timezone from bluebottle.test.utils import BluebottleTestCase from bluebottle.bb_projects.models import ProjectPhase from bluebottle.projects.models import Project from bluebottle.test.factory_models.donations import DonationFactory from bluebottle.test.factory_models.orders import OrderFactory from bluebottle.test.factory_models.projects import (ProjectFactory, ProjectPhaseFactory) from bluebottle.utils.model_dispatcher import (get_project_model, get_project_phaselog_model) PROJECT_MODEL = get_project_model() PROJECT_PHASE_LOG_MODEL = get_project_phaselog_model() class TestProjectTestCase(BluebottleTestCase): def setUp(self): super(TestProjectTestCase, self).setUp() self.init_projects() def test_fake(self): self.assertEquals(PROJECT_MODEL.objects.count(), 0) project = ProjectFactory.create() self.assertEquals(PROJECT_MODEL.objects.count(), 1) class TestProjectPhaseLog(TestProjectTestCase): def test_create_phase_log(self): phase1 = ProjectPhaseFactory.create() phase2 = ProjectPhaseFactory.create()