Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

#!/usr/bin/env python 

# -*- coding: utf-8 -*- 

 

############################################################################### 

#  Copyright 2013 Kitware Inc. 

# 

#  Licensed under the Apache License, Version 2.0 ( the "License" ); 

#  you may not use this file except in compliance with the License. 

#  You may obtain a copy of the License at 

# 

#    http://www.apache.org/licenses/LICENSE-2.0 

# 

#  Unless required by applicable law or agreed to in writing, software 

#  distributed under the License is distributed on an "AS IS" BASIS, 

#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 

#  See the License for the specific language governing permissions and 

#  limitations under the License. 

############################################################################### 

 

import cherrypy 

from girder import constants 

import os 

import re 

 

 

def _mergeConfig(filename): 

    ''' 

    Load `filename` into the cherrypy config. 

    Also, handle global options by putting them in the root. 

    ''' 

    cherrypy._cpconfig.merge(cherrypy.config, filename) 

    global_config = cherrypy.config.pop('global', {}) 

 

    for option, value in global_config.iteritems(): 

        cherrypy.config[option] = value 

 

 

def loadConfig(): 

    _mergeConfig( 

        os.path.join(constants.ROOT_DIR, 'girder', 'conf', 'girder.dist.cfg')) 

 

    local = os.path.join(constants.ROOT_DIR, 'girder', 'conf', 

                         'girder.local.cfg') 

    if os.path.exists(local): 

        _mergeConfig(local) 

    else: 

        print constants.TerminalColor.warning( 

            'WARNING: "{}" does not exist.'.format(local)) 

 

    # The PORT environment variable will override the config port 

    if 'PORT' in os.environ: 

        port = int(os.environ['PORT']) 

        print 'Using PORT env value ({})'.format(port) 

        cherrypy.config['server.socket_port'] = port 

 

    # The MONGOLAB_URI should override the database config 

    if os.getenv('MONGOLAB_URI'):  # for Heroku 

        matcher = re.match(r"mongodb://(.+):(.+)@(.+):(.+)/(.+)", 

                           os.getenv('MONGOLAB_URI')) 

        res = {'user': matcher.group(1), 

               'password': matcher.group(2), 

               'host': matcher.group(3), 

               'port': int(matcher.group(4)), 

               'database': matcher.group(5)} 

        cherrypy.config['database'] = res 

 

    if 'GIRDER_TEST_DB' in os.environ: 

        cherrypy.config['database']['database'] =\ 

            os.environ['GIRDER_TEST_DB'].replace('.', '_') 

 

 

def getConfig(): 

    if 'database' not in cherrypy.config: 

        loadConfig() 

    return cherrypy.config