Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/db/backends/postgresql/client.py: 12%
52 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1import signal
3from django.db.backends.base.client import BaseDatabaseClient
6class DatabaseClient(BaseDatabaseClient):
7 executable_name = "psql"
9 @classmethod
10 def settings_to_cmd_args_env(cls, settings_dict, parameters):
11 args = [cls.executable_name]
12 options = settings_dict.get("OPTIONS", {})
14 host = settings_dict.get("HOST")
15 port = settings_dict.get("PORT")
16 dbname = settings_dict.get("NAME")
17 user = settings_dict.get("USER")
18 passwd = settings_dict.get("PASSWORD")
19 passfile = options.get("passfile")
20 service = options.get("service")
21 sslmode = options.get("sslmode")
22 sslrootcert = options.get("sslrootcert")
23 sslcert = options.get("sslcert")
24 sslkey = options.get("sslkey")
26 if not dbname and not service:
27 # Connect to the default 'postgres' db.
28 dbname = "postgres"
29 if user:
30 args += ["-U", user]
31 if host:
32 args += ["-h", host]
33 if port:
34 args += ["-p", str(port)]
35 if dbname:
36 args += [dbname]
37 args.extend(parameters)
39 env = {}
40 if passwd:
41 env["PGPASSWORD"] = str(passwd)
42 if service:
43 env["PGSERVICE"] = str(service)
44 if sslmode:
45 env["PGSSLMODE"] = str(sslmode)
46 if sslrootcert:
47 env["PGSSLROOTCERT"] = str(sslrootcert)
48 if sslcert:
49 env["PGSSLCERT"] = str(sslcert)
50 if sslkey:
51 env["PGSSLKEY"] = str(sslkey)
52 if passfile:
53 env["PGPASSFILE"] = str(passfile)
54 return args, (env or None)
56 def runshell(self, parameters):
57 sigint_handler = signal.getsignal(signal.SIGINT)
58 try:
59 # Allow SIGINT to pass to psql to abort queries.
60 signal.signal(signal.SIGINT, signal.SIG_IGN)
61 super().runshell(parameters)
62 finally:
63 # Restore the original SIGINT handler.
64 signal.signal(signal.SIGINT, sigint_handler)