Changeset 1713

Show
Ignore:
Timestamp:
12/19/06 18:49:25 (2 years ago)
Author:
bmcquay
Message:

PublishRevertPlugin:

adding pre-commit hooks. fixing some bugs

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • publishrevertplugin/publishrevert/setchangeset.py

    r1660 r1713  
    2424from trac.core import * 
    2525from trac.perm import IPermissionRequestor 
    26 from trac.Search import ISearchSource, query_to_sql, shorten_result 
     26from trac.Search import query_to_sql, shorten_result 
    2727from trac.Timeline import ITimelineEventProvider 
    2828from trac.versioncontrol import Changeset, Node 
     
    3939 
    4040    implements(INavigationContributor, IPermissionRequestor, IRequestHandler, 
    41                ITimelineEventProvider, IWikiSyntaxProvider, ISearchSource, ITemplateProvider)  
     41               ITimelineEventProvider, IWikiSyntaxProvider, ITemplateProvider)  
    4242 
    4343# need to add IRequestFilter when we upgrade 
     
    333333                   % (formatter.href.changeset(rev), label) 
    334334 
    335     # ISearchProvider methods 
    336  
    337     def get_search_filters(self, req): 
    338         if req.perm.has_permission('CHANGESET_VIEW'): 
    339             yield ('changeset', 'Changesets') 
    340  
    341     def get_search_results(self, req, query, filters): 
    342         if not 'changeset' in filters: 
    343             return 
    344         authzperm = SubversionAuthorizer(self.env, req.authname) 
    345         db = self.env.get_db_cnx() 
    346         sql, args = query_to_sql(db, query, 'message||author') 
    347         cursor = db.cursor() 
    348         cursor.execute("SELECT rev,time,author,message " 
    349                        "FROM revision WHERE " + sql, args) 
    350         for rev, date, author, log in cursor: 
    351             if not authzperm.has_permission_for_changeset(rev): 
    352                 continue 
    353             yield (self.env.href.changeset(rev), 
    354                    '[%s]: %s' % (rev, util.shorten_line(log)), 
    355                    date, author, shorten_result(log, query.split())) 
    356  
    357335 
    358336    # ITemplateProvider methods 
  • publishrevertplugin/publishrevert/svnpublish.py

    r1674 r1713  
    2828# from trac.config import BoolOption, Option 
    2929from trac.perm import IPermissionRequestor 
    30 from trac.Search import ISearchSource, query_to_sql, shorten_result 
     30from trac.Search import query_to_sql, shorten_result 
    3131from trac.Timeline import ITimelineEventProvider 
    3232from trac.versioncontrol import Changeset, Node 
     
    4343 
    4444    implements(INavigationContributor, IPermissionRequestor, IRequestHandler, 
    45                ITimelineEventProvider, IWikiSyntaxProvider, ISearchSource, ITemplateProvider) 
     45               ITimelineEventProvider, IWikiSyntaxProvider, ITemplateProvider) 
    4646 
    4747# the folloing line will be used when we upgrade to the newest version of Trac 
     
    221221        # TODO:  
    222222            if(self.db_rev_num(server,info['path.new']) == "True"): 
    223                self.update_rev_num(server,info['path.new'],revert_rev
     223               self.update_rev_num(server,info['path.new'],revert_rev,ticket.id
    224224            else: 
    225                self.insert_rev_num(server,info['path.new'],revert_rev
     225               self.insert_rev_num(server,info['path.new'],revert_rev,ticket.id
    226226               
    227227        # now do the update 
     
    262262                   % (formatter.href.changeset(rev), label) 
    263263 
    264     # ISearchProvider methods 
    265  
    266     def get_search_filters(self, req): 
    267         if req.perm.has_permission('CHANGESET_VIEW'): 
    268             yield ('changeset', 'Changesets') 
    269  
    270     def get_search_results(self, req, query, filters): 
    271         if not 'changeset' in filters: 
    272             return 
    273         authzperm = SubversionAuthorizer(self.env, req.authname) 
    274         db = self.env.get_db_cnx() 
    275         sql, args = query_to_sql(db, query, 'message||author') 
    276         cursor = db.cursor() 
    277         cursor.execute("SELECT rev,time,author,message " 
    278                        "FROM revision WHERE " + sql, args) 
    279         for rev, date, author, log in cursor: 
    280             if not authzperm.has_permission_for_changeset(rev): 
    281                 continue 
    282             yield (self.env.href.changeset(rev), 
    283                    '[%s]: %s' % (rev, util.shorten_line(log)), 
    284                    date, author, shorten_result(log, query.split())) 
    285  
    286  
    287264    # ITemplateProvider methods 
    288265    def get_templates_dirs(self): 
     
    341318 
    342319 
    343     def update_rev_num(self, server, filename, rev, db=None): 
     320    def update_rev_num(self, server, filename, rev, ticket_id, db=None): 
    344321        if not db: 
    345322            db = self.env.get_db_cnx() 
     
    350327        cursor = db.cursor() 
    351328 
    352         cursor.execute('UPDATE file_revision SET rev = %s WHERE server=%s AND file=%s',(rev, server, filename)) 
     329        cursor.execute('UPDATE file_revision SET rev = %s , ticket_id = %s WHERE server=%s AND file=%s',(rev, server, filename, ticket_id)) 
    353330        if(commit): 
    354331            db.commit() 
    355332 
    356333 
    357     def insert_rev_num(self, server, filename, rev, db=None): 
     334    def insert_rev_num(self, server, filename, rev, ticket_id, db=None): 
    358335        if not db: 
    359336            db = self.env.get_db_cnx() 
     
    363340 
    364341        cursor = db.cursor() 
    365         query = 'INSERT INTO file_revision (rev,file,server) VALUES (%s,%s,%s)' 
    366         cursor.execute(query, (rev,filename,server)) 
     342        query = 'INSERT INTO file_revision (rev,file,server,ticket_id) VALUES (%s,%s,%s,%s)' 
     343        cursor.execute(query, (rev,filename,server,ticket_id)) 
    367344        if(commit): 
    368345            db.commit() 
  • publishrevertplugin/publishrevert/svnrevert.py

    r1674 r1713  
    2828# from trac.config import BoolOption, Option 
    2929from trac.perm import IPermissionRequestor 
    30 from trac.Search import ISearchSource, query_to_sql, shorten_result 
     30from trac.Search import query_to_sql, shorten_result 
    3131from trac.Timeline import ITimelineEventProvider 
    3232from trac.versioncontrol import Changeset, Node 
     
    4343 
    4444    implements(INavigationContributor, IPermissionRequestor, IRequestHandler, 
    45                ITimelineEventProvider, IWikiSyntaxProvider, ISearchSource, ITemplateProvider) 
     45               ITimelineEventProvider, IWikiSyntaxProvider, ITemplateProvider) 
    4646 
    4747# the folloing line will be used when we upgrade to the newest version of Trac 
     
    113113 
    114114            format = req.args.get('format') 
    115             self._render_html(req, ticket, repos, chgset, diff_options) 
    116             req.hdf['setchangesets'] = setchangesets 
    117             ticket['ticketaction'] = 'Doing' 
    118             ticket.save_changes(req.authname, 'reverted clone', 0, db) 
    119             req.hdf['message'] = 'Successfully Reverted All Files' 
    120             req.hdf['ticket'] = ticket.values 
     115            if(self._render_html(req, ticket, repos, chgset, diff_options)): 
     116                   req.hdf['setchangesets'] = setchangesets 
     117                   ticket['ticketaction'] = 'Doing' 
     118                   ticket.save_changes(req.authname, 'reverted clone', 0, db) 
     119                   req.hdf['message'] = 'Successfully Reverted All Files' 
     120                   req.hdf['ticket'] = ticket.values 
    121121        else: 
    122122            req.hdf['error'] = 'Error: not in correct state to publish' 
     
    215215        req.hdf['svn_commands'] = '' 
    216216        for info in filepaths: 
    217             revert_rev = self.db_rev_num(1,path) 
     217            row = self.db_rev_num(1,path) 
     218            revert_rev = row[0] 
     219            ticket_id = row[1] 
    218220            server = 1 # clone = 1, prod = 2 
    219             req.hdf['error'] += self.svn_update(req,server,info['path.new'],revert_rev) 
    220             req.hdf['setchangeset.changes.%d' % idx] = info 
    221             idx += 1 
     221            if(int(ticket_id) == int(ticket.id)): 
     222                req.hdf['error'] += self.svn_update(req,server,info['path.new'],revert_rev) 
     223                req.hdf['setchangeset.changes.%d' % idx] = info 
     224                idx += 1 
     225            else: 
     226                error = "ERROR: File %s could not be reverted because ticket %s has modified it. You will need to manually resolve this conflict." % (path,ticket_id) 
     227                req.hdf['error'] += error 
     228                ticket.save_changes(req.authname, error, 0) 
     229                return False 
    222230        self.svn_close() 
    223231        req.hdf['svn_commands'] = req.hdf['svn_commands'].split(',') 
     
    252260                   % (formatter.href.changeset(rev), label) 
    253261 
    254     # ISearchProvider methods 
    255  
    256     def get_search_filters(self, req): 
    257         if req.perm.has_permission('CHANGESET_VIEW'): 
    258             yield ('changeset', 'Changesets') 
    259  
    260     def get_search_results(self, req, query, filters): 
    261         if not 'changeset' in filters: 
    262             return 
    263         authzperm = SubversionAuthorizer(self.env, req.authname) 
    264         db = self.env.get_db_cnx() 
    265         sql, args = query_to_sql(db, query, 'message||author') 
    266         cursor = db.cursor() 
    267         cursor.execute("SELECT rev,time,author,message " 
    268                        "FROM revision WHERE " + sql, args) 
    269         for rev, date, author, log in cursor: 
    270             if not authzperm.has_permission_for_changeset(rev): 
    271                 continue 
    272             yield (self.env.href.changeset(rev), 
    273                    '[%s]: %s' % (rev, util.shorten_line(log)), 
    274                    date, author, shorten_result(log, query.split())) 
    275  
    276  
    277262    # ITemplateProvider methods 
    278263    def get_templates_dirs(self): 
     
    322307        # Fetch the standard ticket fields 
    323308        cursor = db.cursor() 
    324         query = 'SELECT rev FROM file_revision WHERE server=%s AND file=%s' 
     309        query = 'SELECT rev,ticket_id FROM file_revision WHERE server=%s AND file=%s' 
    325310        cursor.execute(query, (server,filename)) 
    326311        db.commit() 
    327312        row = cursor.fetchone() 
    328         return row[0] 
     313        return row 
    329314 
    330315