hg_model.py
67 lines
| 2.0 KiB
| text/x-python
|
PythonLexer
Marcin Kuzminski
|
r58 | #!/usr/bin/env python | ||
# encoding: utf-8 | ||||
# | ||||
# Copyright (c) 2010 marcink. All rights reserved. | ||||
# | ||||
r136 | from vcs.exceptions import RepositoryError | |||
Marcin Kuzminski
|
r58 | ''' | ||
Created on Apr 9, 2010 | ||||
@author: marcink | ||||
''' | ||||
import os | ||||
from pylons import tmpl_context as c, app_globals as g, session, request, config | ||||
from pylons.controllers.util import abort | ||||
r195 | import sys | |||
Marcin Kuzminski
|
r58 | try: | ||
Marcin Kuzminski
|
r74 | from vcs.backends.hg import get_repositories, MercurialRepository | ||
Marcin Kuzminski
|
r58 | except ImportError: | ||
r195 | sys.stderr.write('You have to import vcs module') | |||
r95 | raise Exception('Unable to import vcs') | |||
Marcin Kuzminski
|
r58 | |||
class HgModel(object): | ||||
""" | ||||
Mercurial Model | ||||
""" | ||||
def __init__(self): | ||||
""" | ||||
Constructor | ||||
""" | ||||
Marcin Kuzminski
|
r73 | pass | ||
Marcin Kuzminski
|
r58 | |||
def get_repos(self): | ||||
Marcin Kuzminski
|
r73 | for mercurial_repo in get_repositories(g.paths[0][0], g.paths[0][1], g.baseui): | ||
if mercurial_repo._get_hidden(): | ||||
#skip hidden web repository | ||||
continue | ||||
last_change = mercurial_repo.last_change | ||||
r136 | try: | |||
tip = mercurial_repo.get_changeset('tip') | ||||
except RepositoryError: | ||||
from pylons_app.lib.utils import EmptyChangeset | ||||
tip = EmptyChangeset() | ||||
Marcin Kuzminski
|
r58 | tmp_d = {} | ||
Marcin Kuzminski
|
r73 | tmp_d['name'] = mercurial_repo.name | ||
Marcin Kuzminski
|
r58 | tmp_d['name_sort'] = tmp_d['name'] | ||
Marcin Kuzminski
|
r73 | tmp_d['description'] = mercurial_repo.description | ||
Marcin Kuzminski
|
r58 | tmp_d['description_sort'] = tmp_d['description'] | ||
Marcin Kuzminski
|
r80 | tmp_d['last_change'] = last_change | ||
Marcin Kuzminski
|
r58 | tmp_d['last_change_sort'] = last_change[1] - last_change[0] | ||
r136 | tmp_d['tip'] = tip.raw_id | |||
tmp_d['tip_sort'] = tip.revision | ||||
tmp_d['rev'] = tip.revision | ||||
Marcin Kuzminski
|
r73 | tmp_d['contact'] = mercurial_repo.contact | ||
tmp_d['contact_sort'] = tmp_d['contact'] | ||||
r93 | tmp_d['repo_archives'] = list(mercurial_repo._get_archives()) | |||
Marcin Kuzminski
|
r58 | |||
yield tmp_d | ||||
Marcin Kuzminski
|
r74 | |||
def get_repo(self, repo_name): | ||||
Marcin Kuzminski
|
r80 | path = g.paths[0][1].replace('*', '') | ||
repo = MercurialRepository(os.path.join(path, repo_name), baseui=g.baseui) | ||||
Marcin Kuzminski
|
r74 | return repo | ||