Changeset 3339

Show
Ignore:
Timestamp:
03/11/08 03:45:39 (9 months ago)
Author:
asmodai
Message:

Migrate to the 0.11 API.

Extensive help provided by: osimons

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ticketdeleteplugin/0.11/ticketdelete/templates/ticketdelete_admin.html

    r1422 r3339  
    1 <div xmlns="http://www.w3.org/1999/xhtml" 
    2   xmlns:py="http://genshi.edgewall.org/" 
    3   id="page"> 
    4   <h2>Delete Ticket<py:if ticketdelete.page="comments"> Changes</py:if></h2> 
     1<!DOCTYPE html 
     2  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     3  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
     4<html xmlns="http://www.w3.org/1999/xhtml" 
     5  xmlns:xi="http://www.w3.org/2001/XInclude" 
     6  xmlns:py="http://genshi.edgewall.org/"> 
     7 
     8  <xi:include href="admin.html" /> 
     9 
     10  <head> 
     11    <title>Delete Ticket${ticketdelete.page=='comments' and ' Changes' or None}</title> 
     12  </head> 
     13 
     14  <body> 
     15 
     16    <h2>Delete Ticket${ticketdelete.page=='comments' and ' Changes' or None}</h2> 
    517 
    618  <py:choose> 
     
    2335    </py:when> 
    2436    <py:when test="ticketdelete.page == 'comments'"> 
    25       <py:choose has_tickets="len(ticketdelete.changes)"
    26         <py:when has_tickets="True"> 
    27           <py:if test="ticketdelete.message"> 
    28             <p><b>${ticketdelete.message}</b></p
    29           </py:if
     37      <py:choose
     38        <py:when test="len(ticketdelete.changes)"> 
     39          <p py:if="ticketdelete.message"> 
     40            <b>${ticketdelete.message}</b
     41          </p
    3042          <p>Please selet a change to delete</p> 
    3143         
     
    105117    </py:when> 
    106118  </py:choose> 
    107 </div> 
     119  </body> 
     120</html> 
  • ticketdeleteplugin/0.11/ticketdelete/web_ui.py

    r3327 r3339  
    55from trac.admin.api import IAdminPanelProvider 
    66from trac.core import * 
     7from trac.ticket.model import Ticket 
    78from trac.web.api import IRequestFilter 
    89from trac.web.chrome import ITemplateProvider, add_script, add_stylesheet 
     
    2627 
    2728    def post_process_request(self, req, template, content_type): 
    28         if template == 'ticket.cs' and req.perm.has_permission('TICKET_ADMIN'): 
    29             add_script(req, 'ticketdelete/jquery.js') 
     29        if template == 'ticket.html' and 'TICKET_ADMIN' in req.perm: 
    3030            add_script(req, 'ticketdelete/ticketdelete.js') 
    3131            add_stylesheet(req, 'ticketdelete/ticketdelete.css') 
     
    3838            yield ('ticket', 'Ticket System', 'comments', 'Delete Changes') 
    3939             
    40     def process_admin_request(self, req, cat, page, path_info): 
    41         req.perm.assert_permission('TICKET_ADMIN') 
     40    def render_admin_panel(self, req, cat, page, path_info): 
     41        req.perm.require('TICKET_ADMIN') 
    4242         
    4343        data = {} 
    4444 
    45         data['ticketdelete.href'] = req.href('admin', cat, page) 
    46         data['ticketdelete.page'] = page 
    47         data['ticketdelete.redir'] = 1 
     45        data['href'] = req.href('admin', cat, page) 
     46        data['page'] = page 
     47        data['redir'] = 1 
     48        data['changes'] = {} 
     49        data['id'] = 0 
    4850 
    4951        if req.method == 'POST': 
     
    5456                        if t: 
    5557                            self._delete_ticket(t.id) 
    56                             data['ticketdelete.message'] = "Ticket #%s has been deleted." % t.id 
     58                            data['message'] = "Ticket #%s has been deleted." % t.id 
    5759                             
    5860                    else: 
    59                         data['ticketdelete.message'] = "The two IDs did not match. Please try again." 
     61                        data['message'] = "The two IDs did not match. Please try again." 
    6062            elif page == 'comments': 
    6163                if 'ticketid' in req.args: 
     
    6466                    t = self._validate(req, path_info) 
    6567                    if t: 
    66                         data['ticketdelete.href'] = req.href('admin', cat, page, path_info) 
     68                        data['href'] = req.href('admin', cat, page, path_info) 
    6769                        try: 
    6870                            deletions = None 
     
    7981                                    self.log.debug('TicketDelete: Deleting change to ticket %s at %s (%s)'%(t.id,ts,field)) 
    8082                                    self._delete_change(t.id, ts, field) 
    81                                     data['ticketdelete.message'] = "Change to ticket #%s at %s has been modified" % (t.id, strftime('%a, %d %b %Y %H:%M:%S',localtime(ts))) 
    82                                     data['ticketdelete.redir'] = 0 
     83                                    data['message'] = "Change to ticket #%s at %s has been modified" % (t.id, strftime('%a, %d %b %Y %H:%M:%S',localtime(ts))) 
     84                                    data['redir'] = 0 
    8385                        except ValueError, e: 
    8486                            self.log.debug("TicketDelete: Error is %s"%e) 
    8587                            self.log.debug("TicketDelete: args = '%s'"%req.args.items()) 
    86                             data['ticketdelete.message'] = "Timestamp '%s' not valid" % req.args.get('ts')                     
     88                            data['message'] = "Timestamp '%s' not valid" % req.args.get('ts')                     
    8789                     
    8890                 
     
    98100                    ticket_data = {} 
    99101                    for time, author, field, oldvalue, newvalue, perm in t.get_changelog(): 
    100                         data = ticket_data.setdefault(str(time), {}) 
    101                         data.setdefault('fields', {})[field] = {'old': oldvalue, 'new': newvalue} 
    102                         data['author'] = author 
    103                         data['prettytime'] = strftime('%a, %d %b %Y %H:%M:%S',localtime(time)) 
     102                        c_data = ticket_data.setdefault(str(time), {}) 
     103                        c_data.setdefault('fields', {})[field] = {'old': oldvalue, 'new': newvalue} 
     104                        c_data['author'] = author 
     105                        # FIXME: The datetime handling is not working - enable 
     106                        # for traceback 
     107                        c_data['prettytime'] = strftime('%a, %d %b %Y %H:%M:%S',localtime(time)) 
    104108                     
    105109                    # Remove all attachment changes                     
     
    112116                    if selected is not None and selected < len(time_list): 
    113117                        ticket_data[time_list[selected]]['checked'] = True 
    114                     data['ticketdelete.changes'] = ticket_data 
     118                    data['changes'] = ticket_data 
    115119                elif page == 'delete': 
    116                     data['ticketdelete.id'] = t.id 
     120                    data['id'] = t.id 
    117121  
    118         return 'ticketdelete_admin.html', data, None 
     122        return 'ticketdelete_admin.html', {'ticketdelete': data} 
    119123 
    120124    # ITemplateProvider methods 
     
    157161            return t 
    158162        except TracError: 
    159             data['ticketdelete.message'] = "Ticket #%s not found. Please try again." % id 
     163            data['message'] = "Ticket #%s not found. Please try again." % id 
    160164        except ValueError: 
    161             data['ticketdelete.message'] = "Ticket ID '%s' is not valid. Please try again." % arg 
     165            data['message'] = "Ticket ID '%s' is not valid. Please try again." % arg 
    162166        return False 
    163167