Skip to content

Commit 1bc5000

Browse files
Merge pull request #35 from pebble-dev/comp-fix
Compare version properly
2 parents 88d8d9d + b952981 commit 1bc5000

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

appstore/developer_portal_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from sqlalchemy.exc import DataError
1313
from zipfile import BadZipFile
1414

15-
from .utils import authed_request, demand_authed_request, get_uid, id_generator, validate_new_app_fields, is_valid_category, is_valid_appinfo, is_valid_platform, clone_asset_collection_without_images, is_valid_image_file, is_valid_image_size, get_max_image_dimensions, generate_image_url, is_users_developer_id, user_is_wizard, newAppValidationException, algolia_app
15+
from .utils import authed_request, demand_authed_request, get_uid, id_generator, validate_new_app_fields, is_valid_category, is_valid_appinfo, is_valid_platform, clone_asset_collection_without_images, is_valid_image_file, is_valid_image_size, get_max_image_dimensions, generate_image_url, is_users_developer_id, user_is_wizard, newAppValidationException, algolia_app, first_version_is_newer
1616
from .models import Category, db, App, Developer, Release, CompanionApp, Binary, AssetCollection, LockerEntry, UserLike
1717
from .pbw import PBW, release_from_pbw
1818
from .s3 import upload_pbw, upload_asset
@@ -304,7 +304,7 @@ def submit_new_release(app_id):
304304

305305
release_old = Release.query.filter_by(app=app).order_by(Release.published_date.desc()).first()
306306

307-
if version <= release_old.version:
307+
if not first_version_is_newer(version, release_old.version):
308308
return jsonify(
309309
error=f"The version ({version}) is already on the appstore",
310310
e="version.exists",

appstore/utils.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,3 +505,25 @@ def who_am_i():
505505
result = demand_authed_request('GET', f"{config['REBBLE_AUTH_URL']}/api/v1/me")
506506
me = result.json()
507507
return f'{me["name"]} ({me["uid"]})'
508+
509+
def first_version_is_newer(current_release, old_release):
510+
#1.11 is < 1.1 (mathmatically) so split up by . and check properly
511+
sections_current = str(current_release).split(".")
512+
sections_old = str(old_release).split(".")
513+
for i in range(len(sections_current)):
514+
try:
515+
current = int(sections_current[i])
516+
old = int(sections_old[i])
517+
if current > old:
518+
return True
519+
elif old > current:
520+
return False
521+
except IndexError:
522+
# Current version is longer than old version. I.e. 1.2.1 vs 1.2
523+
# As long as it's not 0, current is newer
524+
return current != 0
525+
except ValueError:
526+
# The field is a string so it might not be a number
527+
# In such a case we can't compare so just fail until they change it
528+
return False
529+
return False

0 commit comments

Comments
 (0)