|
12 | 12 | from getpass import getuser, getpass |
13 | 13 | import os |
14 | 14 | import requests |
| 15 | +from requests import ConnectionError |
15 | 16 | import urllib |
16 | 17 |
|
17 | 18 |
|
@@ -49,15 +50,41 @@ class Query(): |
49 | 50 |
|
50 | 51 | def __init__(self, proj_code, stormdblogin='~/.stormdblogin', |
51 | 52 | username=None, verbose=None): |
52 | | - if not os.path.exists('/projects/' + proj_code): |
53 | | - raise DBError('No such project!') |
54 | | - |
55 | 53 | self.proj_code = proj_code |
56 | 54 | self._username = username |
57 | 55 | self._stormdblogin = stormdblogin |
58 | | - self._server = 'http://hyades00.pet.auh.dk/modules/StormDb/extract/' |
59 | | - # self._wget_cmd = 'wget -qO - test ' + self._server |
| 56 | + |
| 57 | + default_server = 'http://hyades00.pet.auh.dk/modules/StormDb/extract/' |
| 58 | + try_alt_server = False |
| 59 | + try: |
| 60 | + get = requests.get(default_server) |
| 61 | + except ConnectionError: |
| 62 | + try_alt_server = True |
| 63 | + else: |
| 64 | + if not get.status_code == 200: |
| 65 | + try_alt_server = True |
| 66 | + else: |
| 67 | + self._server = default_server |
| 68 | + |
| 69 | + raise_dberror = False |
| 70 | + if try_alt_server: |
| 71 | + alt_server = 'http://localhost:10080/modules/StormDb/extract/' |
| 72 | + try: |
| 73 | + get = requests.get(alt_server) |
| 74 | + except ConnectionError: |
| 75 | + raise_dberror = True |
| 76 | + else: |
| 77 | + if not get.status_code == 200: |
| 78 | + raise_dberror = True |
| 79 | + else: |
| 80 | + self._server = alt_server |
| 81 | + |
| 82 | + if raise_dberror: |
| 83 | + raise DBError('No access to database server (tried: ' |
| 84 | + '{0} and\n{1})'.format(default_server, alt_server)) |
| 85 | + |
60 | 86 | self._get_login_code(username=username, verbose=verbose) |
| 87 | + self._check_proj_code() |
61 | 88 |
|
62 | 89 | def _get_login_code(self, username=None, verbose=False): |
63 | 90 | try: |
@@ -99,13 +126,19 @@ def _check_response(self, response, error_str='error'): |
99 | 126 | 'and re-run your query.' |
100 | 127 | os.chmod(os.path.expanduser(self._stormdblogin), 0o600) |
101 | 128 | os.remove(os.path.expanduser(self._stormdblogin)) |
102 | | - response = msg |
103 | 129 | self._get_login_code() |
| 130 | + elif response.find('The project does not exist') != -1: |
| 131 | + msg = 'The project ID/code you used does not exist ' + \ |
| 132 | + 'in the database, please check.' |
104 | 133 |
|
105 | | - raise DBError(response) |
| 134 | + raise DBError(msg) |
106 | 135 |
|
107 | 136 | return(0) |
108 | 137 |
|
| 138 | + def _check_proj_code(self, verbose=False): |
| 139 | + url = '?' + self._login_code + '&projectCode=' + self.proj_code |
| 140 | + _ = self._send_request(url) |
| 141 | + |
109 | 142 | def _send_request(self, url, verbose=False): |
110 | 143 | full_url = self._server + url |
111 | 144 | if verbose: |
|
0 commit comments