diff --git a/mylar/__init__.py b/mylar/__init__.py index 144d846d..d614465f 100755 --- a/mylar/__init__.py +++ b/mylar/__init__.py @@ -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() diff --git a/mylar/helpers.py b/mylar/helpers.py index 22001bd5..21e61955 100755 --- a/mylar/helpers.py +++ b/mylar/helpers.py @@ -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