Changeset 3387

Show
Ignore:
Timestamp:
03/02/10 10:18:25 (2 years ago)
Author:
bbinet
Message:

fix paster mf-controller command that was not processing correctly section names in layers.ini, r=elemoine (closes #550)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • framework/server/trunk/mapfish/commands.py

    r3083 r3387  
    110110        """Main command to create a mapfish controller""" 
    111111        try: 
    112             fileOp = FileOp(source_dir=os.path.join( 
    113                 os.path.dirname(__file__), 'templates')) 
    114             try: 
    115                 name, directory = fileOp.parse_path_name_args(self.args[0]) 
    116             except: 
    117                 raise BadCommand('No egg_info directory was found') 
    118  
    119112            # read layers.ini 
    120113            config = ConfigParser() 
    121114            config.read(['layers.ini']) 
    122115            # check passed layer is in layers.ini 
    123             if not config.has_section(name): 
     116            sectionName = self.args[0] 
     117            if not config.has_section(sectionName): 
    124118                raise BadCommand( 
    125                     'There is no layer named %s in layers.ini' % name) 
     119                    'There is no layer section named %s in layers.ini' % \ 
     120                    sectionName) 
    126121 
    127122            # get layer parameters 
    128             singularName = config.get(name, 'singular') 
    129             pluralName = config.get(name, 'plural') 
    130             epsg = config.get(name, 'epsg') 
     123            singular = config.get(sectionName, 'singular') 
     124            plural = config.get(sectionName, 'plural') 
     125            epsg = config.get(sectionName, 'epsg') 
     126 
     127            fileOp = FileOp(source_dir=os.path.join( 
     128                os.path.dirname(__file__), 'templates')) 
     129            try: 
     130                singularName, singularDirectory = \ 
     131                    fileOp.parse_path_name_args(singular) 
     132                pluralName, pluralDirectory = \ 
     133                    fileOp.parse_path_name_args(plural) 
     134            except Exception, e: 
     135                raise BadCommand('No egg_info directory was found') 
    131136 
    132137            # check the name isn't the same as the package 
    133138            basePkg = fileOp.find_dir('controllers', True)[0] 
    134             if basePkg.lower() == name.lower(): 
     139            if basePkg.lower() == pluralName.lower(): 
    135140                raise BadCommand( 
    136141                    'Your controller name should not be the same as ' 
     
    138143 
    139144            # validate the name 
    140             name = name.replace('-', '_') 
     145            name = pluralName.replace('-', '_') 
    141146            validateName(name) 
    142147 
    143148            # set test file name 
    144             fullName = os.path.join(directory, name) 
     149            fullName = os.path.join(pluralDirectory, name) 
    145150            if not fullName.startswith(os.sep): 
    146151                fullName = os.sep + fullName 
     
    149154            # set template vars 
    150155            modName = name 
    151             fullModName = os.path.join(directory, name) 
     156            fullModName = os.path.join(pluralDirectory, name) 
    152157            contrClass = util.class_name_from_module_name(name) 
    153158            modelClass = util.class_name_from_module_name(singularName) 
    154             modelTabObj = name + '_table' 
    155159 
    156160            # setup the controller 
     
    162166                 'contrClass': contrClass, 
    163167                 'modelClass': modelClass, 
    164                  'modelTabObj': modelTabObj, 
    165                  'basePkg': basePkg, 
    166                  'epsg': epsg}) 
     168                 'basePkg': basePkg}) 
    167169            fileOp.copy_file(template='controller.py_tmpl', 
    168                          dest=os.path.join('controllers', directory), 
     170                         dest=os.path.join('controllers', pluralDirectory), 
    169171                         filename=name, 
    170172                         template_renderer=paste_script_template_renderer) 
     
    179181            resource_command += ("config/routing.py file in the CUSTOM ROUTES section " 
    180182                                 "like this:\n\n")  
    181             command = 'map.resource("%s", "%s")\n' % \ 
    182                 (singularName, pluralName) 
    183             resource_command += command 
     183            resource_command += 'map.resource("%s", "%s")\n' % \ 
     184                    (singularName, pluralName) 
    184185 
    185186            print resource_command 
     
    223224        """Main command to create mapfish model""" 
    224225        try: 
    225             fileOp = FileOp(source_dir=os.path.join( 
    226                 os.path.dirname(__file__), 'templates')) 
    227             try: 
    228                 name, directory = fileOp.parse_path_name_args(self.args[0]) 
    229             except: 
    230                 raise BadCommand('No egg_info directory was found') 
    231  
    232226            # read layers.ini 
    233227            config = ConfigParser() 
    234228            config.read(['layers.ini']) 
    235229            # check passed layer is in layers.ini 
    236             if not config.has_section(name): 
     230            sectionName = self.args[0] 
     231            if not config.has_section(sectionName): 
    237232                raise BadCommand( 
    238                     'There is no layer named %s in layers.ini' % name) 
     233                    'There is no layer section named %s in layers.ini' % \ 
     234                    sectionName) 
    239235 
    240236            # get layer parameters 
    241             singularName = config.get(name, 'singular') 
    242             table = config.get(name, 'table') 
    243             epsg = config.get(name, 'epsg') 
    244             geomColName = config.get(name, 'geomcolumn') 
    245             if config.has_option(name, 'schema'): 
    246                 schema = config.get(name, 'schema') 
     237            singular = config.get(sectionName, 'singular') 
     238            plural = config.get(sectionName, 'plural') 
     239            table = config.get(sectionName, 'table') 
     240            epsg = config.get(sectionName, 'epsg') 
     241            geomColName = config.get(sectionName, 'geomcolumn') 
     242            if config.has_option(sectionName, 'schema'): 
     243                schema = config.get(sectionName, 'schema') 
    247244            else: 
    248245                schema = None 
    249246 
     247            fileOp = FileOp(source_dir=os.path.join( 
     248                os.path.dirname(__file__), 'templates')) 
     249            try: 
     250                singularName, singularDirectory = \ 
     251                    fileOp.parse_path_name_args(singular) 
     252                pluralName, pluralDirectory = \ 
     253                    fileOp.parse_path_name_args(plural) 
     254            except: 
     255                raise BadCommand('No egg_info directory was found') 
     256 
    250257            # check the name isn't the same as the package 
    251             basePkg = fileOp.find_dir('controllers', True)[0] 
    252             if basePkg.lower() == name.lower(): 
     258            basePkg = fileOp.find_dir('model', True)[0] 
     259            if basePkg.lower() == pluralName.lower(): 
    253260                raise BadCommand( 
    254                     'Your controller name should not be the same as ' 
     261                    'Your model name should not be the same as ' 
    255262                    'the package name %s' % basePkg) 
    256263 
    257264            # validate the name 
    258             name = name.replace('-', '_') 
     265            name = pluralName.replace('-', '_') 
    259266            validateName(name) 
    260267 
     
    273280                 'schema': schema}) 
    274281            fileOp.copy_file(template='model.py_tmpl', 
    275                          dest=os.path.join('model', directory), 
     282                         dest=os.path.join('model', pluralDirectory), 
    276283                         filename=name, 
    277284                         template_renderer=paste_script_template_renderer)