Add packaging requirement, and use it's PEP 440 version parsing for version comparisons.
This commit is contained in:
@@ -243,8 +243,8 @@ class MainFrame(wx.Frame):
|
||||
self.titleTimer = wx.Timer(self)
|
||||
self.Bind(wx.EVT_TIMER, self.updateTitle, self.titleTimer)
|
||||
|
||||
def ShowUpdateBox(self, release):
|
||||
dlg = UpdateDialog(self, release)
|
||||
def ShowUpdateBox(self, release, version):
|
||||
dlg = UpdateDialog(self, release, version)
|
||||
dlg.ShowModal()
|
||||
|
||||
def LoadPreviousOpenFits(self):
|
||||
|
||||
@@ -33,11 +33,12 @@ html_tmpl = """
|
||||
<style>
|
||||
body {{ padding: 10px; font-size:0.87em }}
|
||||
p , li {{ text-align: justify; }}
|
||||
h2, h3 {{ text-align: center; }}
|
||||
hr {{ margin-top: -10px; border: #000 1px solid; }}
|
||||
h2 {{ text-align: center; margin: 0; }}
|
||||
.date {{ text-align: right; }}
|
||||
hr {{ border: #000 1px solid; }}
|
||||
</style>
|
||||
<h2>pyfa {0}</h2>
|
||||
<h3>{1}</h3>
|
||||
<div class="date"><small>{1}</small></div>
|
||||
<hr>
|
||||
{2}
|
||||
{3}
|
||||
@@ -45,7 +46,7 @@ hr {{ margin-top: -10px; border: #000 1px solid; }}
|
||||
|
||||
|
||||
class UpdateDialog(wx.Dialog):
|
||||
def __init__(self, parent, release):
|
||||
def __init__(self, parent, release, version):
|
||||
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title="pyfa Update Available", pos=wx.DefaultPosition,
|
||||
size=wx.Size(550, 450), style=wx.DEFAULT_DIALOG_STYLE)
|
||||
|
||||
@@ -72,7 +73,7 @@ class UpdateDialog(wx.Dialog):
|
||||
self.browser.SetPage(html_tmpl.format(
|
||||
self.releaseInfo['tag_name'],
|
||||
releaseDate.strftime('%B %d, %Y'),
|
||||
"<p class='text-danger'><b>This is a pre-release, be prepared for unstable features</b></p>" if self.releaseInfo['prerelease'] else "",
|
||||
"<p class='text-danger'><b>This is a pre-release, be prepared for unstable features</b></p>" if version.is_prerelease else "",
|
||||
markdowner.convert(self.releaseInfo['body'])
|
||||
),"")
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@ matplotlib >= 2.0.0
|
||||
python-dateutil
|
||||
requests >= 2.0.0
|
||||
sqlalchemy >= 1.0.5
|
||||
markdown2
|
||||
markdown2
|
||||
packaging
|
||||
@@ -30,6 +30,8 @@ import config
|
||||
from service.network import Network
|
||||
from service.settings import UpdateSettings
|
||||
from logbook import Logger
|
||||
from packaging.version import Version
|
||||
|
||||
|
||||
pyfalog = Logger(__name__)
|
||||
|
||||
@@ -46,7 +48,7 @@ class CheckUpdateThread(threading.Thread):
|
||||
network = Network.getInstance()
|
||||
|
||||
try:
|
||||
response = network.request('https://api.github.com/repos/pyfa-org/Pyfa/releases', network.UPDATE)
|
||||
response = network.request('https://api.github.com/repos/blitzmann/Pyfa/releases', network.UPDATE)
|
||||
jsonResponse = json.loads(response.read())
|
||||
jsonResponse.sort(
|
||||
key=lambda x: calendar.timegm(dateutil.parser.parse(x['published_at']).utctimetuple()),
|
||||
@@ -54,8 +56,11 @@ class CheckUpdateThread(threading.Thread):
|
||||
)
|
||||
|
||||
for release in jsonResponse:
|
||||
rVersion = Version(release['tag_name'])
|
||||
cVersion = Version(config.version)
|
||||
|
||||
# Suppress pre releases
|
||||
if release['prerelease'] and self.settings.get('prerelease'):
|
||||
if rVersion.is_prerelease and self.settings.get('prerelease'):
|
||||
continue
|
||||
|
||||
# Handle use-case of updating to suppressed version
|
||||
@@ -66,24 +71,9 @@ class CheckUpdateThread(threading.Thread):
|
||||
if release['tag_name'] == self.settings.get('version'):
|
||||
break
|
||||
|
||||
# Set the release version that we will be comparing with.
|
||||
if release['prerelease']:
|
||||
rVersion = release['tag_name'].replace('singularity-', '', 1)
|
||||
else:
|
||||
rVersion = release['tag_name'].replace('v', '', 1)
|
||||
if rVersion > cVersion:
|
||||
wx.CallAfter(self.callback, release, rVersion)
|
||||
|
||||
if config.tag is 'git' and \
|
||||
not release['prerelease'] and \
|
||||
self.versiontuple(rVersion) >= self.versiontuple(config.version):
|
||||
wx.CallAfter(self.callback, release) # git (dev/Singularity) -> Stable
|
||||
elif config.expansionName is not "Singularity":
|
||||
if release['prerelease']:
|
||||
wx.CallAfter(self.callback, release) # Stable -> Singularity
|
||||
elif self.versiontuple(rVersion) > self.versiontuple(config.version):
|
||||
wx.CallAfter(self.callback, release) # Stable -> Stable
|
||||
else:
|
||||
if release['prerelease'] and rVersion > config.expansionVersion:
|
||||
wx.CallAfter(self.callback, release) # Singularity -> Singularity
|
||||
break
|
||||
except Exception as e:
|
||||
pyfalog.error("Caught exception in run")
|
||||
|
||||
Reference in New Issue
Block a user