@@ -24,13 +24,13 @@ files controller for pylons
"""
from mercurial import archival
from pylons import request, response, session, tmpl_context as c, url
from pylons.controllers.util import redirect
from pylons_app.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
from pylons_app.lib.base import BaseController, render
from pylons_app.lib.utils import EmptyChangeset, get_repo_slug
from pylons_app.lib.utils import EmptyChangeset
from pylons_app.model.hg_model import HgModel
from vcs.exceptions import RepositoryError, ChangesetError
from vcs.nodes import FileNode
from vcs.utils import diffs as differ
import logging
import pylons_app.lib.helpers as h
@@ -14,15 +14,13 @@ class Globals(object):
"""One instance of Globals is created during application
initialization and is available during requests via the
'app_globals' variable
self.cache = CacheManager(**parse_cache_config_options(config))
self.changeset_annotation_colors = {}
self.available_permissions = None # propagated after init_model
self.app_title = None # propagated after init_model
self.baseui = None # propagated after init_model
@LazyProperty
def paths(self):
if self.baseui:
return self.baseui.configitems('paths')
@@ -21,13 +21,12 @@ from webhelpers.number import format_byt
from webhelpers.pylonslib import Flash as _Flash
from webhelpers.pylonslib.secure_form import secure_form
from webhelpers.text import chop_at, collapse, convert_accented_entities, \
convert_misc_entities, lchop, plural, rchop, remove_formatting, \
replace_whitespace, urlify, truncate, wrap_paragraphs
#Custom helpers here :)
class _Link(object):
'''
Make a url based on label and url with help of url_for
@param label:name of link if not defined url is used
@param url: the url for link
@@ -226,32 +225,46 @@ def pygmentize(filenode, **kwargs):
def pygmentize_annotation(filenode, **kwargs):
pygmentize function for annotation
@param filenode:
color_dict = g.changeset_annotation_colors
color_dict = {}
def gen_color():
import random
return [str(random.randrange(10, 235)) for _ in xrange(3)]
"""generator for getting 10k of evenly distibuted colors using hsv color
and golden ratio.
import colorsys
n = 10000
golden_ratio = 0.618033988749895
h = 0.22717784590367374
#generate 10k nice web friendly colors in the same order
for c in xrange(n):
h +=golden_ratio
h %= 1
HSV_tuple = [h, 0.95, 0.95]
RGB_tuple = colorsys.hsv_to_rgb(*HSV_tuple)
yield map(lambda x:str(int(x*256)),RGB_tuple)
cgenerator = gen_color()
def get_color_string(cs):
if color_dict.has_key(cs):
col = color_dict[cs]
else:
color_dict[cs] = gen_color()
return "color: rgb(%s) ! important;" % (', '.join(col))
col = color_dict[cs] = cgenerator.next()
return "color: rgb(%s)! important;" % (', '.join(col))
def url_func(changeset):
tooltip_html = "<div style='font-size:0.8em'><b>Author:</b>"+\
" %s<br/><b>Date:</b> %s</b><br/><b>Message:</b> %s<br/></div>"
tooltip_html = tooltip_html % (changeset.author,
changeset.date,
tooltip(changeset.message))
lnk_format = 'r%s:%s' % (changeset.revision,
lnk_format = 'r%-5s:%s' % (changeset.revision,
changeset.raw_id)
uri = link_to(
lnk_format,
url('changeset_home', repo_name=changeset.repository.name,
revision=changeset.raw_id),
style=get_color_string(changeset.raw_id),
Status change: