Ticket #331: bloodhound_compat.diff

File bloodhound_compat.diff, 3.7 KB (added by gary.martin@…, 7 years ago)
  • email2trac.py.in

     
    3838 * Commandline opions:
    3939                -h,--help
    4040                -A, --agilo
     41                -B, --bloodhound_product
    4142                -d, --debug
    4243                -E, --virtualenv <path>
    4344                -f,--file  <configuration file>
     
    892893        """
    893894        self.logger.debug("function update_ticket_fields")
    894895
     896        if 'product' in user_dict:
     897            if user_dict['product'] != ticket.env.product.prefix:
     898                self.logging.warning("bloodhound products cannot be changed "
     899                                     "- ignoring")
     900            user_dict.pop('product')
     901
    895902        ## Check only permission model on ticket updates
    896903        #
    897904        if not new:
     
    26802687    ## Default config file
    26812688    #
    26822689    agilo = False
     2690    bhproduct = ''
    26832691    configfile = '@email2trac_conf@'
    26842692    project = ''
    26852693    component = ''
     
    26892697    debug_interactive = None
    26902698    virtualenv = '@virtualenv@'
    26912699
    2692     SHORT_OPT = 'AcdE:hf:np:t:v'
    2693     LONG_OPT  =  ['agilo', 'component=', 'debug', 'dry-run', 'help', 'file=', 'project=', 'ticket_prefix=', 'virtualenv=', 'verbose']
     2700    SHORT_OPT = 'AB:cdE:hf:np:t:v'
     2701    LONG_OPT  =  ['agilo', 'bloodhound_product=', 'component=', 'debug',
     2702                  'dry-run', 'help', 'file=', 'project=', 'ticket_prefix=',
     2703                  'virtualenv=', 'verbose']
    26942704
    26952705    try:
    26962706        opts, args = getopt.getopt(sys.argv[1:], SHORT_OPT, LONG_OPT)
     
    27062716            sys.exit(0)
    27072717        elif opt in ['-A', '--agilo']:
    27082718            agilo = True
     2719        elif opt in ['-B', '--bloodhound_product']:
     2720            bhproduct = value
    27092721        elif opt in ['-c', '--component']:
    27102722            component = value
    27112723        elif opt in ['-d', '--debug']:
     
    27982810            from trac.ticket.web_ui import TicketModule
    27992811            from trac.web.href import Href
    28002812
     2813            try:
     2814                import pkg_resources
     2815                pkg = pkg_resources.get_distribution('BloodhoundMultiProduct')
     2816                bloodhound = pkg.version.split()[:2]
     2817            except pkg_resources.DistributionNotFound:
     2818                # assume no bloodhound
     2819                bloodhound = None
     2820
     2821            if bloodhound:
     2822                from multiproduct.env import Environment, ProductEnvironment
     2823                from multiproduct.ticket.web_ui import (ProductTicketModule
     2824                                                        as TicketModule)
     2825                logger.debug("Found Bloodhound Distribution")
     2826                if not bhproduct:
     2827                    logger.warning("No Bloodhound product specified")
     2828
    28012829            if agilo:
    28022830
    28032831                try:
     
    28342862
    28352863        try:
    28362864            env = Environment(settings['project'], create=0)
     2865            if bloodhound:
     2866                # possibly overkill testing if the multiproduct schema is a
     2867                # new enough version
     2868                from multiproduct.env import MultiProductSystem
     2869                mps = MultiProductSystem(env)
     2870                if mps.get_version() > 4:
     2871                    if not bhproduct:
     2872                        logger.error('Bloodhound requires a valid product')
     2873                        sys.exit(0)
     2874                    try:
     2875                        env = ProductEnvironment(env, bhproduct, create=0)
     2876                    except LookupError:
     2877                        logger.error('Bloodhound requires a valid product')
     2878                        sys.exit(0)
     2879               
    28372880        except IOError, detail:
    28382881            logger.error("trac error: %s" %detail)
    28392882            sys.exit(0)