I've wrapped Campaign.status with a property decorator -- access campaign status as campaign.status not campaign.status() now.

pull/1/head
Raymond Yee 2011-10-10 13:35:22 -07:00
parent e25894d549
commit ca2fc9afdc
2 changed files with 15 additions and 14 deletions

View File

@ -29,7 +29,8 @@ class Campaign(models.Model):
return u"Campaign for %s" % self.work.title
except:
return u"Campaign %s (no associated work)" % self.name
@property
def status(self):
"""Returns the status of the campaign
"""
@ -53,7 +54,7 @@ class Campaign(models.Model):
return 'ACTIVE'
def activate(self):
status = self.status()
status = self.status
if status != 'INITIALIZED':
raise UnglueitError('Campaign needs to be initialized in order to be activated')
self.activated = datetime.datetime.utcnow()
@ -61,7 +62,7 @@ class Campaign(models.Model):
return self
def suspend(self, reason):
status = self.status()
status = self.status
if status != 'ACTIVE':
raise UnglueitError('Campaign needs to be active in order to be suspended')
self.suspended = datetime.datetime.utcnow()
@ -70,7 +71,7 @@ class Campaign(models.Model):
return self
def withdraw(self, reason):
status = self.status()
status = self.status
if status != 'ACTIVE':
raise UnglueitError('Campaign needs to be active in order to be withdrawn')
self.withdrawn = datetime.datetime.utcnow()
@ -80,7 +81,7 @@ class Campaign(models.Model):
def resume(self):
"""Change campaign status from SUSPENDED to ACTIVE. We may want to track reason for resuming and track history"""
status = self.status()
status = self.status
if status != 'SUSPENDED':
raise UnglueitError('Campaign needs to be suspended in order to be resumed')
self.suspended = None

View File

@ -88,27 +88,27 @@ class CampaignTests(TestCase):
# INITIALIZED
c1 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
c1.save()
self.assertEqual(c1.status(), 'INITIALIZED')
self.assertEqual(c1.status, 'INITIALIZED')
# ACTIVATED
c2 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
c2.save()
self.assertEqual(c2.status(), 'INITIALIZED')
self.assertEqual(c2.status, 'INITIALIZED')
c2.activate()
self.assertEqual(c2.status(), 'ACTIVE')
self.assertEqual(c2.status, 'ACTIVE')
# SUSPENDED
c2.suspend(reason="for testing")
self.assertEqual(c2.status(), 'SUSPENDED')
self.assertEqual(c2.status, 'SUSPENDED')
# RESUMING
c2.resume()
self.assertEqual(c2.suspended, None)
self.assertEqual(c2.status(),'ACTIVE')
self.assertEqual(c2.status,'ACTIVE')
# should not let me suspend a campaign that hasn't been initialized
self.assertRaises(UnglueitError, c1.suspend, "for testing")
# UNSUCCESSFUL
c3 = Campaign(target=D('1000.00'),deadline=datetime.utcnow() - timedelta(days=1),work=w)
c3.save()
c3.activate()
self.assertEqual(c3.status(), 'UNSUCCESSFUL')
self.assertEqual(c3.status, 'UNSUCCESSFUL')
# SUCCESSFUL
c4 = Campaign(target=D('1000.00'),deadline=datetime.utcnow() - timedelta(days=1),work=w)
c4.save()
@ -120,18 +120,18 @@ class CampaignTests(TestCase):
t.status = 'ACTIVE'
t.campaign = c4
t.save()
self.assertEqual(c4.status(), 'SUCCESSFUL')
self.assertEqual(c4.status, 'SUCCESSFUL')
# ACTIVE
c4.deadline = datetime.utcnow() + timedelta(days=1)
c4.save()
self.assertEqual(c4.status(), 'ACTIVE')
self.assertEqual(c4.status, 'ACTIVE')
# WITHDRAWN
c5 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
c5.save()
c5.activate().withdraw('testing')
self.assertEqual(c5.status(), 'WITHDRAWN')
self.assertEqual(c5.status, 'WITHDRAWN')
def suite():