mirror of
https://github.com/minetest/contentdb.git
synced 2024-09-20 04:48:30 +02:00
Fix crash on game support update
This commit is contained in:
parent
958f92fd63
commit
97ee0a9f85
@ -111,9 +111,6 @@ class GameSupportResolver:
|
|||||||
|
|
||||||
self.checked_packages.add(key)
|
self.checked_packages.add(key)
|
||||||
|
|
||||||
if len(history) >= 50:
|
|
||||||
raise LogicError(500, f"Too deep! {', '.join(history)}")
|
|
||||||
|
|
||||||
if package.type != PackageType.MOD:
|
if package.type != PackageType.MOD:
|
||||||
raise LogicError(500, "Got non-mod")
|
raise LogicError(500, "Got non-mod")
|
||||||
|
|
||||||
@ -128,7 +125,7 @@ class GameSupportResolver:
|
|||||||
else:
|
else:
|
||||||
retval.intersection_update(ret)
|
retval.intersection_update(ret)
|
||||||
if len(retval) == 0:
|
if len(retval) == 0:
|
||||||
raise LogicError(500, f"Conflict! Supported games narrowed at {key}")
|
raise LogicError(500, f"Detected game support contradiction, {key} may not be compatible with any games")
|
||||||
|
|
||||||
self.resolved_packages[key] = retval
|
self.resolved_packages[key] = retval
|
||||||
return retval
|
return retval
|
||||||
@ -147,14 +144,15 @@ class GameSupportResolver:
|
|||||||
|
|
||||||
retval = self.resolve(package, [])
|
retval = self.resolve(package, [])
|
||||||
for game in retval:
|
for game in retval:
|
||||||
|
assert game
|
||||||
|
|
||||||
lookup = previous_supported.pop(game, None)
|
lookup = previous_supported.pop(game, None)
|
||||||
if lookup:
|
if lookup is None:
|
||||||
if lookup.confidence == 0:
|
|
||||||
lookup.supports = True
|
|
||||||
db.session.merge(lookup)
|
|
||||||
else:
|
|
||||||
support = PackageGameSupport(package, game)
|
support = PackageGameSupport(package, game)
|
||||||
db.session.add(support)
|
db.session.add(support)
|
||||||
|
elif lookup.confidence == 0:
|
||||||
|
lookup.supports = True
|
||||||
|
db.session.merge(lookup)
|
||||||
|
|
||||||
for game, support in previous_supported.items():
|
for game, support in previous_supported.items():
|
||||||
if support.confidence == 0:
|
if support.confidence == 0:
|
||||||
|
@ -483,6 +483,12 @@ class Package(db.Model):
|
|||||||
|
|
||||||
return Package.query.filter(Package.name == parts[1], Package.author.has(username=parts[0])).first()
|
return Package.query.filter(Package.name == parts[1], Package.author.has(username=parts[0])).first()
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.name == other.name and self.author_id == other.author_id
|
||||||
|
|
||||||
|
def __hash__(self):
|
||||||
|
return hash((self.author_id, self.name))
|
||||||
|
|
||||||
def getId(self):
|
def getId(self):
|
||||||
return "{}/{}".format(self.author.username, self.name)
|
return "{}/{}".format(self.author.username, self.name)
|
||||||
|
|
||||||
@ -1091,6 +1097,8 @@ class PackageScreenshot(db.Model):
|
|||||||
"order": self.order,
|
"order": self.order,
|
||||||
"title": self.title,
|
"title": self.title,
|
||||||
"url": base_url + self.url,
|
"url": base_url + self.url,
|
||||||
|
"width": self.width,
|
||||||
|
"height": self.height,
|
||||||
"approved": self.approved,
|
"approved": self.approved,
|
||||||
"created_at": self.created_at.isoformat(),
|
"created_at": self.created_at.isoformat(),
|
||||||
"is_cover_image": self.package.cover_image == self,
|
"is_cover_image": self.package.cover_image == self,
|
||||||
|
Loading…
Reference in New Issue
Block a user