horsemeat 2.22.13__tar.gz → 2.23.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {horsemeat-2.22.13 → horsemeat-2.23.0}/PKG-INFO +1 -1
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/configwrapper.py +58 -3
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/version.py +1 -1
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat.egg-info/PKG-INFO +1 -1
- {horsemeat-2.22.13 → horsemeat-2.23.0}/requirements.txt +1 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/MANIFEST.in +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/README +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/__init__.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/model/__init__.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/model/newsmessage.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/model/session.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/model/user.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/pg.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/scripts/make-frippery-project +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/tests/__init__.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/tests/test_configwrapper.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/__init__.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/bogusrequest.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/dispatcher.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/framework_templates/__init__.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/frameworkhandlers.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/handler.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/request.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/response.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat/webapp/scrubber.py +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat.egg-info/SOURCES.txt +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat.egg-info/dependency_links.txt +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat.egg-info/requires.txt +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/horsemeat.egg-info/top_level.txt +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/setup.cfg +0 -0
- {horsemeat-2.22.13 → horsemeat-2.23.0}/setup.py +0 -0
@@ -19,6 +19,7 @@ import warnings
|
|
19
19
|
import jinja2
|
20
20
|
import pkg_resources
|
21
21
|
import psycopg2, psycopg2.extras
|
22
|
+
import psycopg
|
22
23
|
import yaml
|
23
24
|
|
24
25
|
from horsemeat import fancyjsondumps
|
@@ -185,7 +186,39 @@ class ConfigWrapper(object):
|
|
185
186
|
def database_password(self):
|
186
187
|
return self.config_dictionary['postgresql'].get('password')
|
187
188
|
|
188
|
-
def
|
189
|
+
def make_psycopg_database_connection(self, register_composite_types=True):
|
190
|
+
|
191
|
+
"""
|
192
|
+
This is NOT psycopg2, but psycopg3, which goes by psycopg.
|
193
|
+
"""
|
194
|
+
|
195
|
+
if self.config_dictionary["postgresql"].get("psycopg_version") != "psycopg":
|
196
|
+
|
197
|
+
raise Exception("Add a 'psycopg_version' key under postgresql in your yaml file and set it to 'psycopg' to use this!")
|
198
|
+
|
199
|
+
else:
|
200
|
+
|
201
|
+
pgconn = psycopg.connect(
|
202
|
+
row_factory=psycopg.rows.namedtuple_row,
|
203
|
+
port=self.database_port,
|
204
|
+
dbname=self.database_name,
|
205
|
+
host=self.database_host,
|
206
|
+
user=self.database_user,
|
207
|
+
password=self.database_password)
|
208
|
+
|
209
|
+
log.info(f"Just made postgresql connection {pgconn} (composite types registered: {register_composite_types}.")
|
210
|
+
|
211
|
+
# psycopg2.extras.register_uuid()
|
212
|
+
# psycopg2.extras.register_hstore(pgconn, globally=True)
|
213
|
+
# psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
|
214
|
+
# psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
|
215
|
+
|
216
|
+
if register_composite_types:
|
217
|
+
self.register_psycopg_composite_types(pgconn)
|
218
|
+
|
219
|
+
return pgconn
|
220
|
+
|
221
|
+
def make_psycopg2_database_connection(self, register_composite_types=True):
|
189
222
|
|
190
223
|
pgconn = psycopg2.connect(
|
191
224
|
connection_factory=psycopg2.extras.NamedTupleConnection,
|
@@ -204,15 +237,37 @@ class ConfigWrapper(object):
|
|
204
237
|
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
|
205
238
|
|
206
239
|
if register_composite_types:
|
207
|
-
self.
|
240
|
+
self.register_psycopg2_composite_types(pgconn)
|
208
241
|
|
209
242
|
return pgconn
|
210
243
|
|
244
|
+
def make_database_connection(self, register_composite_types=True):
|
245
|
+
|
246
|
+
"""
|
247
|
+
Defaults to psycopg2, not the fancy newer psycopg, which is
|
248
|
+
really psycopg3.
|
249
|
+
|
250
|
+
Add a config entry to use the fancy one.
|
251
|
+
"""
|
252
|
+
|
253
|
+
if self.config_dictionary["postgresql"].get("psycopg_version") != "psycopg":
|
254
|
+
return self.make_psycopg2_database_connection(register_composite_types=register_composite_types)
|
255
|
+
|
256
|
+
else:
|
257
|
+
return self.make_psycopg_database_connection(register_composite_types=register_composite_types)
|
258
|
+
|
211
259
|
# Make aliases because Matt can't remember stuff well.
|
212
260
|
create_postgresql_connection = make_database_connection
|
213
261
|
make_postgresql_connection = make_database_connection
|
214
262
|
|
215
|
-
def
|
263
|
+
def register_psycopg_composite_types(self, pgconn):
|
264
|
+
|
265
|
+
"""
|
266
|
+
Subclasses can define this if they want to.
|
267
|
+
"""
|
268
|
+
pass
|
269
|
+
|
270
|
+
def register_psycopg2_composite_types(self, pgconn):
|
216
271
|
|
217
272
|
"""
|
218
273
|
Subclasses can define this if they want to.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|