MCPcopy Create free account
hub / github.com/AstroPrint/AstroBox / checkSoftwareVersion

Method checkSoftwareVersion

src/astroprint/software.py:457–511  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

455 return #When we find the first force that's enough
456
457 def checkSoftwareVersion(self):
458 apiHost = roConfig('cloud.apiHost')
459 if not apiHost:
460 self._logger.error('cloud.apiHost not present in ro config file.')
461 return None
462
463 try:
464 data = {
465 'update_available': False,
466 'releases': []
467 }
468
469 for package in ([self.data] + self.data['additional']):
470 versionData = {
471 'current': [
472 package['version']['major'],
473 package['version']['minor'],
474 package['version']['build']
475 ],
476 'channel': self._settings.getInt(['software', 'channel'])
477 }
478
479 if 'variant' in package:
480 versionData['variant'] = package['variant']['id']
481 versionData['platform'] = package['platform']
482 versionData['manufacturer_pkg_id'] = self.data['manufacturer_pkg_id']
483 elif 'package' in package:
484 versionData['variant'] = self.data['variant']['id']
485 versionData['package'] = package['package']['id']
486
487 r = requests.post('%s/astrobox/software/check' % apiHost, data=json.dumps(versionData),
488 auth = self._checkAuth(),
489 headers = self._requestHeaders
490 )
491
492 if r.status_code != 200:
493 self._logger.error('Error getting software release info: %d.' % r.status_code)
494 return None
495 else:
496 packageData = r.json()
497 packageData['name'] = package['variant']['name'] if 'variant' in package else package['package']['name']
498
499 if packageData['update_available']:
500 #check if it's the same one we have installed
501 packageData['is_current'] = packageData['release']['major'] == int(package['version']['major']) and packageData['release']['minor'] == int(package['version']['minor']) and packageData['release']['build'] == package['version']['build']
502 if not packageData['is_current']:
503 data['update_available'] = True
504
505 data['releases'].append(packageData)
506
507 except Exception as e:
508 self._logger.error('Error getting software release info: %s' % e, exc_info=True)
509 return None
510
511 return data
512
513 def updateSoftware(self, releases):
514 self._status = 'updating'

Callers 1

checkForcedUpdateMethod · 0.95

Calls 6

_checkAuthMethod · 0.95
roConfigFunction · 0.90
getIntMethod · 0.80
appendMethod · 0.80
errorMethod · 0.45
postMethod · 0.45

Tested by

no test coverage detected