Root.py 6.4 KB
Newer Older
gdetrez's avatar
gdetrez committed
1 2 3 4 5 6 7
#!/usr/bin/env python
# -*- coding: utf-8 -*-


import cherrypy, sys, os, datetime
sys.path.append('/usr/scripts/gestion/')

gdetrez's avatar
gdetrez committed
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
            
# ######################################################## #
#                 COMMAND LINE OPTION                      #
# ######################################################## #
# 
#

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-d", "--dev",
    action="store_true", dest="dev", default=False,
    help="launch in dev mode")
parser.add_option("-p", "--port",
    action="store", type="int", dest="port",
    help="change server port")
     
(options, args) = parser.parse_args()


# ######################################################## #
#                          CONFIG                          #
# ######################################################## #
# 
# mise en place de la conf
#

# on suppose qu'en version de developpement, le script est lance depuis le shell
if (options.dev):
    cherrypy.config.update(file=os.getcwd() + "/conf/intranet.cfg")
38
    cherrypy.config.update(file=os.getcwd() + "/conf/dev.cfg") 
gdetrez's avatar
gdetrez committed
39 40 41 42 43
    settings={'global': { 'rootDir': os.getcwd() } }                                                                                                                                         
    cherrypy.config.update(settings)                                                                                                               
                
else:
    cherrypy.config.update(file="/usr/scripts/intranet/conf/intranet.cfg") 
44
    cherrypy.config.update(file="/usr/scripts/intranet/conf/prod.cfg") 
gdetrez's avatar
gdetrez committed
45 46 47 48 49 50 51 52 53

# changer le port ??
if (options.port):
    settings={'global':{'server.socketPort':options.port}}
    cherrypy.config.update(settings)                                                                                                               
    

if (cherrypy.config.configMap["global"]["server.environment"] == "development"):
    from ldap_crans_test import crans_ldap
gdetrez's avatar
gdetrez committed
54
    cherrypy.log("settings : unsing test ldap : env=" + cherrypy.config.configMap["global"]["server.environment"], "LDAP")
gdetrez's avatar
gdetrez committed
55 56
else:
    from ldap_crans import crans_ldap
gdetrez's avatar
gdetrez committed
57
    cherrypy.log("settings : unsing prod ldap : env=" + cherrypy.config.configMap["global"]["server.environment"], "LDAP")
gdetrez's avatar
gdetrez committed
58 59
cherrypy.config.update({'global':{'crans_ldap':crans_ldap()}})

gdetrez's avatar
gdetrez committed
60 61 62 63 64 65 66 67 68 69 70 71 72 73
# ######################################################## #
#                     FILTRES MAISON                       #
# ######################################################## #

from plugins.domfilter import DOMFilter
from plugins.templatesfilter import TemplatesFilter
from plugins.verifdroitsfilter import VerifDroitsFilter
                    
# ######################################################## #
#                         SERVER                           #
# ######################################################## #
class Intranet:
    __ldap = None
    def __init__(self):
74
        from pages import monCompte, impression, factures, digicode
gdetrez's avatar
gdetrez committed
75 76 77 78
        self.__ldap = cherrypy.config.configMap["global"]["crans_ldap"]
        
        # liste des modules disponibles
        self.monCompte = monCompte.monCompte()
79
        self.sous = factures.root()
gdetrez's avatar
gdetrez committed
80
        self.impression = impression.root()        
gdetrez's avatar
gdetrez committed
81
        self.digicode = digicode.root()
82
        
gdetrez's avatar
gdetrez committed
83
        # liste des modules en developpement
gdetrez's avatar
gdetrez committed
84 85
        #if (cherrypy.config.configMap["global"]["server.environment"] == "development"):
            
gdetrez's avatar
gdetrez committed
86

gdetrez's avatar
gdetrez committed
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
            
            
    _cpFilterList = [TemplatesFilter(), DOMFilter(), VerifDroitsFilter()]
    
    def index(self):
        return {
            'template':'accueil',
            'values':{},
            }
    index.exposed= True
    
    def info(self):
        return {
    'template':'info-diverses',
    'values':{}
    }
    info.exposed = True
    
105
    
gdetrez's avatar
gdetrez committed
106
    def _cp_on_http_error(self, status, message):
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
    	if status==403:
        	cherrypy.response.body = {
            	'template':'error403',
            	'values':{'status':status, 'message':message }, 
            	'standalone':False,
        	}
    	elif status==404:
	        cherrypy.response.body = {
    	        'template':'error',
        	    'values':{'status':status, 'message':message }, 
            	'standalone':False,
        	}
        else:
            cherrypy._cputil._cp_on_http_error(status, message)

gdetrez's avatar
gdetrez committed
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
    '''
    def nounous(self):
        return "coucou"
    nounous.exposed= True
    
    def test(self):
        return {"quoi":cherrypy.request.path, "il_faut":cherrypy.config.configMap["/nounous"]["crans.droits"], "moi":cherrypy.session['droits']
    }
    test.exposed = True
    
    def environment(self):
        return cherrypy.config.configMap["global"]["server.environment"]
    environment.exposed = True
    '''
    
# ######################################################## #
#                      LOGIN MAISON                        #
# ######################################################## #
# 
# Methode pour afficher la template de login
#
def login(from_page = '', login = None, password = '', error_msg=''):
    return {
'template':'login',
'values':{'login':login, 'password':password, 'from_page':from_page, 'message':error_msg},
'standalone':True
}
#
# methode qui verifie le login
#
def verifLogin(login = '', password = ''):
    message = None
    if login != '' and password != '':
        try:
            globalLdap = cherrypy.config.configMap["global"]["crans_ldap"]
            adh =globalLdap.search('uid=' + login)['adherent'][0]
            if adh.checkPassword(password):
                cherrypy.session['uid'] = login
                cherrypy.session['session_key'] = True
                cherrypy.session['droits'] = adh.droits()
                return
            else:
                #print("bad password")
                message = u"L'authentification a echoué."
        except Exception, e:
            #print(e)
            message = u"L'authentification a echoué."
    else:
        #print("sth empty")
        message = u"L'authentification a echoué."
    return message    





gdetrez's avatar
gdetrez committed
178
# on indique tout ca a cherrypy
gdetrez's avatar
gdetrez committed
179 180 181 182 183 184 185 186
settings={'/': {
    'sessionAuthenticateFilter.checkLoginAndPassword': verifLogin,
    'sessionAuthenticateFilter.loginScreen': login
    }}
cherrypy.config.update(settings)


    
gdetrez's avatar
gdetrez committed
187 188 189 190 191
# ######################################################## #
#                 LANCEMENT DE CHERRYPY                    #
# ######################################################## #
cherrypy.root = Intranet()
cherrypy.server.start()