Do not provide a db session for problem reports
at least, the default handler no longer does that...not sure yet if it would ever be useful for some handlers to or not
This commit is contained in:
parent
de0c6a7100
commit
f177e8e36e
|
@ -120,22 +120,14 @@ class ProblemReportHandler(object):
|
||||||
:param fix: This flag will be passed as-is to
|
:param fix: This flag will be passed as-is to
|
||||||
:meth:`run_problem_report()`.
|
:meth:`run_problem_report()`.
|
||||||
"""
|
"""
|
||||||
session = Session()
|
|
||||||
|
|
||||||
organized = self.organize_problem_reports(reports)
|
organized = self.organize_problem_reports(reports)
|
||||||
for system_key in sorted(organized):
|
for system_key in sorted(organized):
|
||||||
system = organized[system_key]
|
system = organized[system_key]
|
||||||
for problem_key in sorted(system):
|
for problem_key in sorted(system):
|
||||||
report = system[problem_key]
|
report = system[problem_key]
|
||||||
self.run_problem_report(report, session, fix=fix)
|
self.run_problem_report(report, fix=fix)
|
||||||
|
|
||||||
if self.dry_run:
|
def run_problem_report(self, problem_report, fix=False, **kwargs):
|
||||||
session.rollback()
|
|
||||||
else:
|
|
||||||
session.commit()
|
|
||||||
session.close()
|
|
||||||
|
|
||||||
def run_problem_report(self, problem_report, session, fix=False, **kwargs):
|
|
||||||
"""
|
"""
|
||||||
Run a specific problem report.
|
Run a specific problem report.
|
||||||
"""
|
"""
|
||||||
|
@ -147,7 +139,7 @@ class ProblemReportHandler(object):
|
||||||
dry_run=self.dry_run,
|
dry_run=self.dry_run,
|
||||||
progress=self.progress)
|
progress=self.progress)
|
||||||
|
|
||||||
problems = report.find_problems(session, **kwargs)
|
problems = report.find_problems(**kwargs)
|
||||||
log.debug("found %s problems", len(problems))
|
log.debug("found %s problems", len(problems))
|
||||||
if problems:
|
if problems:
|
||||||
self.send_problem_report(report, problems)
|
self.send_problem_report(report, problems)
|
||||||
|
|
|
@ -28,7 +28,7 @@ from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
from sqlalchemy import orm
|
from sqlalchemy import orm
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import Session, model
|
||||||
from rattail.problems import ProblemReport
|
from rattail.problems import ProblemReport
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,8 +46,9 @@ class ProductWithoutPrice(RattailProblemReport):
|
||||||
problem_key = 'product_without_price'
|
problem_key = 'product_without_price'
|
||||||
problem_title = "Products with no price"
|
problem_title = "Products with no price"
|
||||||
|
|
||||||
def find_problems(self, session, **kwargs):
|
def find_problems(self, **kwargs):
|
||||||
problems = []
|
problems = []
|
||||||
|
session = Session()
|
||||||
products = session.query(model.Product)\
|
products = session.query(model.Product)\
|
||||||
.options(orm.joinedload(model.Product.regular_price))
|
.options(orm.joinedload(model.Product.regular_price))
|
||||||
|
|
||||||
|
@ -58,6 +59,7 @@ class ProductWithoutPrice(RattailProblemReport):
|
||||||
|
|
||||||
self.progress_loop(inspect, products,
|
self.progress_loop(inspect, products,
|
||||||
message="Looking for products with no price")
|
message="Looking for products with no price")
|
||||||
|
session.close()
|
||||||
return problems
|
return problems
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,8 +70,10 @@ class UpgradePending(RattailProblemReport):
|
||||||
problem_key = 'upgrade_pending'
|
problem_key = 'upgrade_pending'
|
||||||
problem_title = "Pending upgrade"
|
problem_title = "Pending upgrade"
|
||||||
|
|
||||||
def find_problems(self, session, **kwargs):
|
def find_problems(self, **kwargs):
|
||||||
|
session = Session()
|
||||||
upgrades = session.query(model.Upgrade)\
|
upgrades = session.query(model.Upgrade)\
|
||||||
.filter(model.Upgrade.status_code == self.enum.UPGRADE_STATUS_PENDING)\
|
.filter(model.Upgrade.status_code == self.enum.UPGRADE_STATUS_PENDING)\
|
||||||
.all()
|
.all()
|
||||||
|
session.close()
|
||||||
return upgrades
|
return upgrades
|
||||||
|
|
|
@ -53,7 +53,7 @@ class ProblemReport(object):
|
||||||
factory = factory or self.progress
|
factory = factory or self.progress
|
||||||
return progress_loop(func, items, factory, **kwargs)
|
return progress_loop(func, items, factory, **kwargs)
|
||||||
|
|
||||||
def find_problems(self, session, **kwargs):
|
def find_problems(self, **kwargs):
|
||||||
"""
|
"""
|
||||||
Find all problems for which this report is responsible. This should
|
Find all problems for which this report is responsible. This should
|
||||||
always return a list, although no constraint is made on what the
|
always return a list, although no constraint is made on what the
|
||||||
|
|
Loading…
Reference in a new issue