Skip to content
This repository has been archived by the owner on Oct 7, 2021. It is now read-only.

Commit

Permalink
Merge branch 'feature/calendar-labels-correct' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
peterbe committed Nov 23, 2011
2 parents e6da3d4 + cfe99a4 commit 5b9536e
Show file tree
Hide file tree
Showing 2 changed files with 106 additions and 1 deletion.
97 changes: 97 additions & 0 deletions apps/dates/tests/test_views.py
Expand Up @@ -119,6 +119,22 @@ def _create_hr_manager(self, username='jill', email='jill@mozilla.com'):
profile.save()
return user

def _create_entry_hours(self, entry, *hours):
date = entry.start
i = 0
while date <= entry.end:
try:
h = hours[i]
except IndexError:
h = 8
Hours.objects.create(
entry=entry,
date=date,
hours=h,
)
i += 1
date += datetime.timedelta(days=1)

def test_404_page(self):
url = '/ojsfpijweofpjwf/qpijf/'
response = self.client.get(url)
Expand Down Expand Up @@ -591,6 +607,85 @@ def test_calendar_events(self):
eq_(set([x['id'] for x in events]),
set([entry1.pk, entry2.pk, entry3.pk, entry6.pk]))

def test_calendar_events_summation(self):
url = reverse('dates.calendar_events')

peter = User.objects.create(
username='peter',
email='pbengtsson@mozilla.com',
first_name='Peter',
last_name='Bengtsson',
)
peter.set_password('secret')
peter.save()
assert self.client.login(username=peter.email, password='secret')

# add some entries
entry = Entry.objects.create(
user=peter,
start=datetime.date(2011, 7, 2),
end=datetime.date(2011, 7, 4),
total_hours=8 + 4 + 8,
)

Hours.objects.create(
entry=entry,
date=datetime.date(2011, 7, 2),
hours=8
)

Hours.objects.create(
entry=entry,
date=datetime.date(2011, 7, 3),
hours=4
)

Hours.objects.create(
entry=entry,
date=datetime.date(2011, 7, 4),
hours=8
)

_start = datetime.datetime(2011, 7, 1)
_end = datetime.datetime(2011, 8, 1) - datetime.timedelta(days=1)
data = {
'start': time.mktime(_start.timetuple()),
'end': time.mktime(_end.timetuple())
}
response = self.client.get(url, data)
eq_(response.status_code, 200)
struct = json.loads(response.content)
events = struct['events']
event = events[0]
eq_(event['title'], '2.5 days')


Hours.objects.all().delete()
entry.end = datetime.date(2011, 7, 2)
entry.total_hours = 8
entry.save()
self._create_entry_hours(entry)

response = self.client.get(url, data)
eq_(response.status_code, 200)
struct = json.loads(response.content)
events = struct['events']
event = events[0]
eq_(event['title'], '1 day')

Hours.objects.all().delete()
entry.end = datetime.date(2011, 7, 2)
entry.total_hours = 4
entry.save()
self._create_entry_hours(entry, 4)

response = self.client.get(url, data)
eq_(response.status_code, 200)
struct = json.loads(response.content)
events = struct['events']
event = events[0]
eq_(event['title'], '4 hours')

def test_calendar_event_title(self):
url = reverse('dates.calendar_events')
peter = User.objects.create(
Expand Down Expand Up @@ -633,6 +728,8 @@ def test_calendar_event_title(self):
entry.total_hours += 8 * 5
entry.save()

self._create_entry_hours(entry)

response = self.client.get(url, data)
eq_(response.status_code, 200)
struct = json.loads(response.content)
Expand Down
10 changes: 9 additions & 1 deletion apps/dates/views.py
Expand Up @@ -211,14 +211,22 @@ def make_title(entry):
title = '%s - ' % entry.user.username
else:
title = ''
days = (entry.end - entry.start).days + 1
days = 0
for hour in Hours.objects.filter(entry=entry):
if hour.hours == 8:
days += 1
elif hour.hours == 4:
days += 0.5

if days > 1:
title += '%s days' % days
if Hours.objects.filter(entry=entry, birthday=True).exists():
title += ' (includes birthday)'
elif (days == 1 and entry.total_hours == 0 and
Hours.objects.filter(entry=entry, birthday=True)):
title += 'Birthday!'
elif days == 1 and entry.total_hours == 8:
title += '1 day'
else:
title += '%s hours' % entry.total_hours
if entry.details:
Expand Down

0 comments on commit 5b9536e

Please sign in to comment.