Changeset 844


Ignore:
Timestamp:
05/11/11 17:48:00 (3 years ago)
Author:
rlixandru
Message:

another fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/oforgeplugin/oforge/api.py

    r843 r844  
    618618 
    619619    def _copy_ini_sections(self, src_conf, target_conf, sections, save=True): 
    620         for section in sectio      category = config.get('project', 'category') 
    621         project_display_name = config.get('project','name', name) 
    622         # Create the new schema/user 
    623         self._create_postgres_user_and_schema(new_user_schema_name, new_password) 
    624  
    625         src_db_cnx = self.getenv(name).get_db_cnx() 
    626         olddburl = config.get('trac', 'database') 
    627         config.set('trac', 'database',  
    628                 self._get_postgres_url(new_user_schema_name, new_password)) 
    629         config.set('oforge', 'postgres_schema', new_user_schema_name) 
    630         config.save() 
    631         new_env = self.getenv(name) 
    632         target_db_cnx = new_env.get_db_cnx() 
    633         try: 
    634             # Create tables in new schema 
    635             DatabaseManager(new_env).init_db() 
    636             # This is needed to get the default data into the DB 
    637             # Which is required to run the upgrade method that follows 
    638             EnvironmentSetup(new_env).environment_created() 
    639             new_env.upgrade(backup=False) 
    640             # Get list of tables excluding ones that shouldn't be copeied 
    641             target_db_cursor = target_db_cnx.cursor() 
    642             target_db_cursor.execute(""" 
    643                 SELECT table_name  
    644                 FROM information_schema.tables  
    645                 WHERE table_schema = %s AND table_name != 'session'  
    646                     AND table_name != 'auth_cookie'""", (new_user_schema_name,)) 
    647             # Copy tables 
    648             for table in map(lambda r: r[0], target_db_cursor.fetchall()): 
    649                 self.logger.debug("copying table %s"%(table)) 
    650                 self._copy_table(src_db_cnx, target_db_cnx, table) 
    651             # Commit all changes 
    652             target_db_cnx.commit() 
    653         except Exception, e: 
    654             config.set('trac','database', olddburl) 
    655             config.set('oforge','proj_id', None) 
    656             target_db_cnx.rollback() 
    657             master_db_cnx = self.warehouse_db_cnx() 
    658             master_cursor = master_db_cnx.cursor() 
    659             master_cursor.execute('DROP SCHEMA %s CASCADE'%(new_user_schema_name)) 
    660             master_cursor.execute('DROP USER %s'%(new_user_schema_name)) 
    661             master_db_cnx.commit() 
    662             raise  
    663  
    664     def add_dashboard_project(self, name, tags=None): 
    665         """ 
    666         Connect a project to the project dashboard. 
    667         """ 
    668         env = self.getenv(name) 
    669         if env.config.get('oforge', 'proj_id', None): 
    670             raise OForgeException("Project already registered") 
    671         display_name = env.config.get('project', 'name') 
    672         type = env.config.get('project', 'category') 
    673         p = Project(name=name, display_name=display_name,type=type, 
    674                 state='Open',start_date=datetime.datetime.now()) 
    675         p.save() 
    676         p.tags = tags 
    677         p.save() 
    678         env.config.set('oforge', 'proj_id', p.id) 
    679         env.config.save() 
    680         return p.id 
    681  
    682     def remove_dashboard_project(self, name): 
    683         """ 
    684         Disconnect a project from the project dashboard. 
    685         """ 
    686         env = self.getenv(name) 
    687         proj_id = env.config.getint('oforge', 'proj_id', -1) 
    688         if proj_id != -1: 
    689             Project.objects.filter(id=proj_id).delete() 
    690             env.config.set('oforge', 'proj_id', None) 
    691             env.config.save() 
    692         else: 
    693             raise OForgeProjectException("Project not registered") 
    694  
    695     def createproject(self, name, **kwargs): 
    696         ''' 
    697         Create an OForge project.  Takes the following dict args: 
    698  
    699          * createsvn:           Flag to stop svn repo creation 
    700                                 default: True 
    701  
    702          * svntemplate:         Template svn structure 
    703                                 default: none 
    704  
    705          * type:                Project type 
    706                                 default: Client 
    707  
    708          * defaultworkspace:    Workspace to clone 
    709                                 default: none 
    710  
    711          * admins:              Users to give admin priviledges to 
    712                                 Comma seperated 
    713                                 default: noone 
    714  
    715          * postgres:            Use postgres DB instead of sqlite 
    716                                 default: True 
    717  
    718          * display_name:        Display name of project 
    719                                 default: same as name parameter 
    720  
    721          * description:         Description of the project 
    722  
    723          * tags:                Tags for project 
    724  
    725          * copy_ini_sections:   Sections of default workspace (if any) 
    726                                 to copy to the new environment 
    727                                 default: ticket-workflow and ticket-custom 
    728         ''' 
    729         self.logger.debug('Parsing args') 
    730  
    731         svnlocation = None 
    732         gitlocation = None 
    733         traclocation = None 
    734         engine = "git" 
    735         createsvn = kwargs.get('createsvn', False) 
    736         svntemplate = kwargs.get('svntemplate', None) 
    737         type = kwargs.get('type', 'Client') 
    738         defaultworkspace = kwargs.get('defaultworkspace', None) 
    739         admins = kwargs.get('admins', None) 
    740         postgres = kwargs.get('postgres', True) 
    741         descr = kwargs.get('description', None) 
    742         display_name = kwargs.get('display_name', name) 
    743         tags = kwargs.get('tags', None) 
    744         copy_ini_sections = kwargs.get('copy_ini_sections', ('ticket-custom',  
    745             'ticket-workflow')) 
    746         tracadmin = TracAdmin() 
    747  
    748         # error handling flags 
    749         project_created = None 
    750         schema_created = None 
    751         user_created = None 
    752         env_created = None 
    753         svn_created = None 
    754         proj_id = None 
    755         try: 
    756         #added git 
    757             if createsvn: 
    758                 if engine=="svn": 
    759                     svnlocation = path.join(self.config.get('oforge', 'svn_base'),name) 
    760                     if not path.exists(svnlocation) and createsvn: 
    761                         os.makedirs(svnlocation) 
    762                         svn_created = True 
    763                 if engine=="git": 
    764                     gitlocation = path.join(self.config.get('oforge', 'git_base'),name) 
    765                     if not path.exists(gitlocation) and createsvn: 
    766                         os.makedirs(gitlocation) 
    767                         svn_created = True 
    768              
    769             traclocation = path.join(self.config.get('oforge', 'trac_base'),  
    770                     name) 
    771             dburl = None 
    772             if postgres: 
    773                 new_user_schema_name = self._canonize_schema_name(name) 
    774                 new_password = self.config.get('oforge','initial_db_password', 'secret') 
    775                 self._create_postgres_user_and_schema(new_user_schema_name, new_password) 
    776                 schema_created = user_created = True 
    777                 dburl = self._get_postgres_url(new_user_schema_name, new_password) 
    778             self.logger.debug('Creating svn and trac dirs') 
    779             if not path.exists(traclocation): 
    780                 os.makedirs(traclocation) 
    781             self.logger.debug('Sanity check') 
    782             # sanity check 
    783             tracadmin.env_set(traclocation) 
    784             if tracadmin.env_check(): 
    785                 raise OForgeProjectCreationError, \ 
    786                 ns: 
     620        for section in sections: 
    787621            for option in target_conf[section].options(): 
    788622                target_conf.remove(section, option[0]) 
Note: See TracChangeset for help on using the changeset viewer.