Ejemplo n.º 1
0
Archivo: util.py Proyecto: jun66j5/TraM
def prepare_request(req, environ):

    href = Href(req.href.all())
    anenv = get_allenv(environ, req)
    req.href = href
    req.abs_href = Href(req.abs_href.all())
    chrome = Chrome(anenv)

    update_request(req, chrome)

    # auth must be checked before this method runs, we are not a component yet
    req.perm = PermissionCache(anenv, req.authname)
    req.session = Session(anenv, req)

    loadpaths = chrome.get_all_templates_dirs();
    loadpaths.insert(0, os.path.dirname(__file__) + "/templates/")

    req.hdf = {}
    populate_hdf(req.hdf, anenv, req)

    # after populate, add styles and scripts
    path_info = environ.get('PATH_INFO', '').lstrip('/').split('/')
    env_name = path_info.pop(0)
    if len(path_info) == 0 or (len(path_info) == 1 and path_info[0] == ''):
        add_stylesheet(req, "tram/css/project-list.css")
    elif path_info[0] == 'roadmap':
        add_stylesheet(req, 'common/css/roadmap.css')
    elif path_info[0] == 'timeline':
        add_stylesheet(req, 'common/css/timeline.css')
    elif path_info[0] == 'query':
        add_stylesheet(req, 'common/css/report.css')
    elif path_info[0] == 'browser':
        add_stylesheet(req, 'common/css/browser.css')
    elif path_info[0] == 'search':
        add_stylesheet(req, 'common/css/search.css')
        add_stylesheet(req, 'tram/css/whole-search.css')
        add_script(req, 'tram/js/jquery-1.1.2.pack.js')
        add_script(req, 'tram/js/jquery.compat-1.0.js')
        add_script(req, 'tram/js/trac_ws.js')
    
    chrome.populate_hdf(req)

    req.hdf['tram.version'] = "0.3"
    req.hdf["tram_htdocs_location"] = req.hdf["htdocs_location"].replace("common", "tram")

    # We want to display the guide whether we are using an "all" env or not
    # As the elements are already ordered we hijac the about element and reassign it below
    req.hdf['chrome.nav.metanav.about'] = Markup('<a href="' + href.wiki('TracGuide') + '">Help/Guide</a>')
    req.hdf['chrome.nav.metanav.help'] = Markup('<a href="' + href.about() + '">About Trac</a>')

    # Here we are adding some links to plugins as they seem not to be loading now...
    if (anenv.isall):
        req.hdf['chrome.nav.mainnav.wiki'] = Markup('<a href="' + href.wiki() + '">Wiki</a>')

    req.hdf['chrome.nav.mainnav.timeline'] = Markup('<a href="' + href.timeline() + '">' + _('Timeline') + '</a>')
    req.hdf['chrome.nav.mainnav.roadmap'] = Markup('<a href="' + href.roadmap() + '">' + _('Roadmap') + '</a>')
    req.hdf['chrome.nav.mainnav.browser'] = Markup('<a href="' + href.browser('/') + '">' + _('Browse Source') + '</a>')
    req.hdf['chrome.nav.mainnav.tickets'] = Markup('<a href="' + href.query() + '">' + _('View Tickets') + '</a>')
    req.hdf['chrome.nav.mainnav.search'] = Markup('<a href="' + href.search() + '">' + _('Search') + '</a>')
    return chrome
Ejemplo n.º 2
0
    def expand_macro(self, formatter, name, text, args=None):

        assert text.isdigit(), "Argument must be a number"

        if formatter.req.authname == 'anonymous':
            return "<div class='assignedtickets'>Not available</div>"

        out = "<table class='assignedtickets'>"
        out = out + "<tr><th rowspan='2'>Proyecto</th><th rowspan='2'>New</th><th colspan='5'>Priority</th><th rowspan='2'>Total</th></tr>"
        out = out + "<tr><th>P1</th><th>P2</th><th>P3</th><th>P4</th><th>&gt;=5</th></tr>"
        projects = get_project_list(self.env, formatter.req)
        user = formatter.req.authname
        project_tickets = []
        for project, path, url, env in projects:

            project_status = get_property(env, 'status', 'unknown')
            if project_status not in ('unknown', 'active'): continue

            tickets = {
                'new': 0,
                '1': 0,
                '2': 0,
                '3': 0,
                '4': 0,
                '>=5': 0,
                'total': 0
            }

            cnx = env.get_db_cnx()
            cursor = cnx.cursor()
            cursor.execute(
                """
            SELECT enum.value prio_num, enum.name prio_name, COUNT(ticket.id)
            FROM enum
            LEFT JOIN ticket ON ticket.priority = enum.name AND status <> 'closed' AND status <> 'new' AND owner = %s
            WHERE enum.type = 'priority'
            GROUP BY (enum.value)
            """, (user, ))

            #cursor.execute("""
            #SELECT enum.value prio_num, COUNT(ticket.id)
            #FROM ticket
            #INNER JOIN enum ON enum.name = ticket.priority
            #WHERE enum.type = 'priority' AND status <> 'closed' AND status <> 'new' AND owner = %s
            #GROUP BY (enum.value)
            #""", (user,))

            for row in cursor:
                if row[0] in ('1', '2', '3', '4'):
                    tickets[row[0]] = (row[1], row[2])
                else:
                    tickets['>=5'] = tickets['>=5'] + row[2]
                tickets['total'] = tickets['total'] + row[2]

            cursor.execute(
                """
            SELECT COUNT(ticket.id)
            FROM ticket
            WHERE status = 'new' AND owner = %s
            """, (user, ))

            row = cursor.fetchone()
            if row:
                tickets['new'] = row[0]
                tickets['total'] = tickets['total'] + row[0]

            if tickets['total'] > 0:

                project_tickets.append((project, url, tickets))

        project_tickets.sort(
            cmp=lambda x, y: x[2]['new'] < y[2]['new'] and 1 or -1)
        for project, url, tickets in project_tickets[:int(text)]:

            href = Href(url)
            out = """%s
            <tr>
                <td class='name'><a href='%s'>%s</a></td>
                <td class='new'><a href='%s'>%d</a></td>
                <td><a href='%s'>%d</a></td>
                <td><a href='%s'>%d</a></td>
                <td><a href='%s'>%d</a></td>
                <td><a href='%s'>%d</a></td>
                <td><a href='%s'>%d</a></td>
                <td class='total'><a href='%s'>%d</a></td>
            </tr>
                """ % (out, href.query(), project,
                       href.query(status='new', owner=user), tickets['new'],
                       href.query(status=['!closed', '!new'],
                                  priority=tickets['1'][0],
                                  owner=user), tickets['1'][1],
                       href.query(status=['!closed', '!new'],
                                  priority=tickets['2'][0],
                                  owner=user), tickets['2'][1],
                       href.query(status=['!closed', '!new'],
                                  priority=tickets['3'][0],
                                  owner=user), tickets['3'][1],
                       href.query(status=['!closed', '!new'],
                                  priority=tickets['4'][0],
                                  owner=user), tickets['4'][1],
                       href.query(status=['!closed', '!new'], owner=user),
                       tickets['>=5'], href.query(
                           status='!closed', owner=user), tickets['total'])

        if len(project_tickets) > int(text):
            out = out + "<tr><td colspan='8'>...</td></tr>"

        out = out + "</table>"
        return out