diff options
Diffstat (limited to 'foundry/controllers/__init__.py')
-rw-r--r-- | foundry/controllers/__init__.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/foundry/controllers/__init__.py b/foundry/controllers/__init__.py new file mode 100644 index 0000000..b17b3e9 --- /dev/null +++ b/foundry/controllers/__init__.py | |||
@@ -0,0 +1,33 @@ | |||
1 | from webob import Response | ||
2 | from datetime import datetime | ||
3 | from foundry import interfaces | ||
4 | from foundry.di import inject, Injected | ||
5 | |||
6 | |||
7 | class Changeset(object): | ||
8 | |||
9 | def __init__(self, changeset): | ||
10 | self.changeset = changeset | ||
11 | |||
12 | def __getattr__(self, key): | ||
13 | return getattr(self.changeset, key) | ||
14 | |||
15 | def date(self): | ||
16 | return datetime.fromtimestamp(float(self.changeset.date()[0])) | ||
17 | |||
18 | |||
19 | class ChangelogController(object): | ||
20 | |||
21 | @inject(repo=interfaces.RepositoryProvider, | ||
22 | renderer=interfaces.TemplateRenderer) | ||
23 | def __init__(self, repo=Injected, renderer=Injected): | ||
24 | self.repo = repo.get('/Users/mcrute') | ||
25 | self.renderer = renderer | ||
26 | |||
27 | def __call__(self, request): | ||
28 | def _repo_iter(): | ||
29 | for rev in self.repo: | ||
30 | yield Changeset(self.repo[rev]) | ||
31 | |||
32 | return Response(self.renderer.render('changelog.tpl', | ||
33 | repo=_repo_iter())) | ||