mirror of
https://github.com/evilhero/mylar
synced 2024-12-25 01:01:47 +00:00
FIX:(#1545) Error on startup when latest date values were in an Unknown format, IMP: better optimization of the main page queries (thnx scotton)
This commit is contained in:
parent
a241571a4b
commit
02fa5baf1e
2 changed files with 46 additions and 22 deletions
|
@ -2266,6 +2266,9 @@ def dbcheck():
|
|||
conn.commit()
|
||||
c.close()
|
||||
|
||||
logger.info('Making sure the latest dates are all correctly pointing to the correct issue numbers & dates')
|
||||
helpers.latestdate_update()
|
||||
|
||||
if dynamic_upgrade:
|
||||
logger.info('Updating db to include some important changes.')
|
||||
helpers.upgrade_dynamic()
|
||||
|
|
|
@ -1254,33 +1254,32 @@ def havetotals(refreshit=None):
|
|||
|
||||
if refreshit is None:
|
||||
comiclist = myDB.select('SELECT * from comics order by ComicSortName COLLATE NOCASE')
|
||||
if mylar.ANNUALS_ON:
|
||||
comiclist = myDB.select('SELECT comics.*, COUNT(totalAnnuals.IssueID) AS TotalAnnuals FROM comics LEFT JOIN annuals as totalAnnuals on totalAnnuals.ComicID = comics.ComicID GROUP BY comics.ComicID')
|
||||
else:
|
||||
comiclist = myDB.select('SELECT comics.*, COUNT(haveIssues.IssueID) AS HaveIssues, COUNT(totalIssues.IssueID) AS TotalIssues FROM comics LEFT JOIN issues AS haveIssues ON haveIssues.ComicID = comics.ComicID LEFT JOIN issues AS totalIssues ON totalIssues.ComicID = comics.ComicID GROUP BY comics.ComicID')
|
||||
else:
|
||||
comiclist = []
|
||||
comicref = myDB.selectone("SELECT * from comics WHERE ComicID=?", [refreshit]).fetchone()
|
||||
comicref = myDB.selectone('SELECT comics.*, COUNT(totalAnnuals.IssueID) AS TotalAnnuals FROM comics LEFT JOIN annuals as totalAnnuals on totalAnnuals.ComicID = comics.ComicID WHERE comics.ComicID=? GROUP BY comics.ComicID', [refreshit]).fetchone()
|
||||
|
||||
#refreshit is the ComicID passed from the Refresh Series to force/check numerical have totals
|
||||
comiclist.append({"ComicID": comicref[0],
|
||||
"Have": comicref[7],
|
||||
"Total": comicref[8]})
|
||||
comiclist.append({"ComicID": comicref['ComicID'],
|
||||
"Have": comicref['Have'],
|
||||
"Total": comicref['Total'],
|
||||
"TotalAnnuals": comicref['TotalAnnuals']})
|
||||
|
||||
for comic in comiclist:
|
||||
issue = myDB.selectone("SELECT COUNT(*) as count FROM issues WHERE ComicID=?", [comic['ComicID']]).fetchone()
|
||||
if issue is None:
|
||||
if refreshit is not None:
|
||||
logger.fdebug(str(comic['ComicID']) + ' has no issuedata available. Forcing complete Refresh/Rescan')
|
||||
return True
|
||||
else:
|
||||
continue
|
||||
if mylar.ANNUALS_ON:
|
||||
annuals_on = True
|
||||
annual = myDB.selectone("SELECT COUNT(*) as count FROM annuals WHERE ComicID=?", [comic['ComicID']]).fetchone()
|
||||
annualcount = annual[0]
|
||||
if not annualcount:
|
||||
annualcount = 0
|
||||
else:
|
||||
annuals_on = False
|
||||
annual = None
|
||||
annualcount = 0
|
||||
#--not sure about this part
|
||||
#if comic['Total'] is None:
|
||||
# if refreshit is not None:
|
||||
# logger.fdebug(str(comic['ComicID']) + ' has no issuedata available. Forcing complete Refresh/Rescan')
|
||||
# return True
|
||||
# else:
|
||||
# continue
|
||||
try:
|
||||
totalissues = comic['Total'] + annualcount
|
||||
totalissues = comic['Total']
|
||||
if mylar.ANNUALS_ON:
|
||||
totalissues += comic['TotalAnnuals']
|
||||
haveissues = comic['Have']
|
||||
except TypeError:
|
||||
logger.warning('[Warning] ComicID: ' + str(comic['ComicID']) + ' is incomplete - Removing from DB. You should try to re-add the series.')
|
||||
|
@ -2375,6 +2374,28 @@ def arcformat(arc, spanyears, publisher):
|
|||
|
||||
return dstloc
|
||||
|
||||
def latestdate_update():
|
||||
import db
|
||||
myDB = db.DBConnection()
|
||||
ccheck = myDB.select('SELECT a.ComicID, b.IssueID, a.LatestDate, b.ReleaseDate, b.Issue_Number from comics as a left join issues as b on a.comicid=b.comicid where a.LatestDate < b.ReleaseDate or a.LatestDate like "%Unknown%" group by a.ComicID')
|
||||
if ccheck is None or len(ccheck) == 0:
|
||||
return
|
||||
logger.info('Now preparing to update ' + str(len(ccheck)) + ' series that have out-of-date latest date information.')
|
||||
ablist = []
|
||||
for cc in ccheck:
|
||||
ablist.append({'ComicID': cc['ComicID'],
|
||||
'LatestDate': cc['ReleaseDate'],
|
||||
'LatestIssue': cc['Issue_Number']})
|
||||
|
||||
#forcibly set the latest date and issue number to the most recent.
|
||||
for a in ablist:
|
||||
logger.info(a)
|
||||
newVal = {'LatestDate': a['LatestDate'],
|
||||
'LatestIssue': a['LatestIssue']}
|
||||
ctrlVal = {'ComicID': a['ComicID']}
|
||||
logger.info('updating latest date for : ' + a['ComicID'] + ' to ' + a['LatestDate'] + ' #' + a['LatestIssue'])
|
||||
myDB.upsert("comics", newVal, ctrlVal)
|
||||
|
||||
def file_ops(path,dst,arc=False,one_off=False):
|
||||
# # path = source path + filename
|
||||
# # dst = destination path + filename
|
||||
|
|
Loading…
Reference in a new issue