From df4de5ce4b2c2fda9b74db6d158d66d1f1d028ae Mon Sep 17 00:00:00 2001 From: Jay Lee Date: Tue, 18 Jun 2019 11:20:24 -0400 Subject: [PATCH] move CrOS AUE dates to dynamic file --- src/gam.py | 18 +-- src/tools/parse-aue.py | 14 +-- src/var.py | 262 +---------------------------------------- 3 files changed, 18 insertions(+), 276 deletions(-) diff --git a/src/gam.py b/src/gam.py index fb9d05b0..5e03fb5f 100755 --- a/src/gam.py +++ b/src/gam.py @@ -7556,10 +7556,11 @@ def getCRMService(login_hint): discoveryServiceUrl=googleapiclient.discovery.V2_DISCOVERY_URI), http) -def getGAMProjectAPIs(): +def getGAMProjectFile(filepath): + file_url = GAM_PROJECT_FILEPATH+filepath httpObj = _createHttpObj() - _, c = httpObj.request(GAM_PROJECT_APIS, 'GET') - return httpObj, c.decode(UTF8).splitlines() + _, c = httpObj.request(file_url, 'GET') + return c.decode(UTF8) def enableGAMProjectAPIs(GAMProjectAPIs, httpObj, projectId, checkEnabled, i=0, count=0): apis = GAMProjectAPIs[:] @@ -7639,7 +7640,7 @@ def _createClientSecretsOauth2service(httpObj, projectId): print('Unknown error: %s' % content) return False - simplehttp, GAMProjectAPIs = getGAMProjectAPIs() + GAMProjectAPIs = getGAMProjectFile('src/project-apis.txt').splitlines() enableGAMProjectAPIs(GAMProjectAPIs, httpObj, projectId, False) iam = googleapiclient.discovery.build('iam', 'v1', http=httpObj, cache_discovery=False, @@ -7684,6 +7685,7 @@ def _createClientSecretsOauth2service(httpObj, projectId): client_secret = input('Enter your Client Secret: ').strip() if not client_secret: client_secret = input().strip() + simplehttp = _createHttpObj() client_valid = _checkClientAndSecret(simplehttp, client_id, client_secret) if client_valid: break @@ -7890,7 +7892,7 @@ def doUseProject(): def doUpdateProjects(): _, httpObj, login_hint, projects, _ = _getLoginHintProjects(False) - _, GAMProjectAPIs = getGAMProjectAPIs() + GAMProjectAPIs = getGAMProjectFile('src/project-apis.txt').splitlines() count = len(projects) print('User: {0}, Update {1} Projects'.format(login_hint, count)) i = 0 @@ -12140,12 +12142,14 @@ def _checkTPMVulnerability(cros): cros['tpmVersionInfo']['tpmVulnerability'] = 'NOT IMPACTED' def _guessAUE(cros, guessedAUEs): + if not GC_Values.get('CROS_AUE_DATES', None): + GC_Values['CROS_AUE_DATES'] = json.loads(getGAMProjectFile('src/cros-aue-dates.json')) crosModel = cros.get('model') if crosModel: if crosModel not in guessedAUEs: - closest_match = difflib.get_close_matches(crosModel.lower(), CROS_AUE_DATES, n=1) + closest_match = difflib.get_close_matches(crosModel.lower(), GC_Values['CROS_AUE_DATES'], n=1) if closest_match: - guessedAUEs[crosModel] = {'guessedAUEDate': CROS_AUE_DATES[closest_match[0]], + guessedAUEs[crosModel] = {'guessedAUEDate': GC_Values['CROS_AUE_DATES'][closest_match[0]], 'guessedAUEModel': closest_match[0]} else: guessedAUEs[crosModel] = {'guessedAUEDate': u'', diff --git a/src/tools/parse-aue.py b/src/tools/parse-aue.py index cdd7e478..5239b0bf 100755 --- a/src/tools/parse-aue.py +++ b/src/tools/parse-aue.py @@ -4,6 +4,8 @@ from xml.etree import ElementTree as ET import requests from html.parser import HTMLParser import string +import sys +import json import dateutil.parser class MyHTMLParser(HTMLParser): @@ -27,10 +29,10 @@ class MyHTMLParser(HTMLParser): fullname = '%s %s' % (oem, model) fullname = fullname.lower() date = dateutil.parser.parse(data).replace(day=1).strftime('%Y-%m-%dT00:00:00.000Z') - output_rows.append(" '%s': '%s'," % (fullname, date)) + output_rows[fullname] = date if fullname in exceptions: for value in exceptions[fullname]: - output_rows.append(" '%s': '%s'," % (value, date)) + output_rows[value] = date data_is_date = False else: model = ''.join(filter(lambda x: x in printable, data)).replace('"', '\\"') @@ -38,7 +40,7 @@ class MyHTMLParser(HTMLParser): next_data_is_td = False global oem, next_data_is_oem, next_data_is_td, data_is_date, model, printable, exceptions, output_rows -output_rows = [] +output_rows = {} printable = set(string.printable) exceptions = { # 'AUE OEM MODEL': ['API MODEL 1', ...] @@ -95,10 +97,6 @@ next_data_is_oem = False next_data_is_td = False data_is_date = False auepage = requests.get('https://support.google.com/chrome/a/answer/6220366?hl=en') -print('CROS_AUE_DATES = {') parser = MyHTMLParser() parser.feed(auepage.content.decode('utf-8')) -output_rows.sort(key=str.lower) -for row in output_rows: - print(row) -print('}') +print(json.dumps(output_rows, indent=2, sort_keys=True)) diff --git a/src/var.py b/src/var.py index ee2c8565..e52104de 100644 --- a/src/var.py +++ b/src/var.py @@ -20,7 +20,7 @@ GAM_RELEASES = 'https://github.com/jay0lee/GAM/releases' GAM_WIKI = 'https://github.com/jay0lee/GAM/wiki' GAM_ALL_RELEASES = 'https://api.github.com/repos/jay0lee/GAM/releases' GAM_LATEST_RELEASE = GAM_ALL_RELEASES+'/latest' -GAM_PROJECT_APIS = 'https://raw.githubusercontent.com/jay0lee/GAM/master/src/project-apis.txt' +GAM_PROJECT_FILEPATH = 'https://raw.githubusercontent.com/jay0lee/GAM/master/' true_values = ['on', 'yes', 'enabled', 'true', '1'] false_values = ['off', 'no', 'disabled', 'false', '0'] @@ -600,266 +600,6 @@ CROS_END_ARGUMENTS = ['end', 'enddate'] CROS_TPM_VULN_VERSIONS = ['41f', '420', '628', '8520',] CROS_TPM_FIXED_VERSIONS = ['422', '62b', '8521',] -# parsed from https://support.google.com/chrome/a/answer/6220366?hl=en -# using src/tools/parse-aue.py -CROS_AUE_DATES = { - 'acer ac700': '2016-08-01T00:00:00.000Z', - 'acer c7 chromebook (c710)': '2017-10-01T00:00:00.000Z', - 'acer c7 chromebook': '2017-10-01T00:00:00.000Z', - 'acer c720 chromebook': '2019-06-01T00:00:00.000Z', - 'acer c740 chromebook': '2019-06-01T00:00:00.000Z', - 'acer chromebase 24': '2021-06-01T00:00:00.000Z', - 'acer chromebase': '2020-08-01T00:00:00.000Z', - 'acer chromebook 11 (c720, c720p)': '2019-06-01T00:00:00.000Z', - 'acer chromebook 11 (c732, c732t, c732l, c732lt)': '2023-11-01T00:00:00.000Z', - 'acer chromebook 11 (c740)': '2020-06-01T00:00:00.000Z', - 'acer chromebook 11 (c771, c771t)': '2022-11-01T00:00:00.000Z', - 'acer chromebook 11 (cb3-111, c730, c730e)': '2019-08-01T00:00:00.000Z', - 'acer chromebook 11 (cb3-131, c735)': '2021-01-01T00:00:00.000Z', - 'acer chromebook 11 (cb311-8h, cb311-8ht)': '2023-11-01T00:00:00.000Z', - 'acer chromebook 11 n7 (c731, c731t)': '2022-01-01T00:00:00.000Z', - 'acer chromebook 13 (cb5-311)': '2019-09-01T00:00:00.000Z', - 'acer chromebook 13 (cb713-1w)': '2024-06-01T00:00:00.000Z', - 'acer chromebook 13(cb5-311, c810)': '2019-09-01T00:00:00.000Z', - 'acer chromebook 14 (cb3-431)': '2021-06-01T00:00:00.000Z', - 'acer chromebook 14 for work (cp5-471)': '2022-11-01T00:00:00.000Z', - 'acer chromebook 15 (c910 / cb5-571)': '2020-06-01T00:00:00.000Z', - 'acer chromebook 15 (cb3-531)': '2020-06-01T00:00:00.000Z', - 'acer chromebook 15 (cb3-532)': '2021-08-01T00:00:00.000Z', - 'acer chromebook 15 (cb315-1h,cb315-1ht)': '2023-11-01T00:00:00.000Z', - 'acer chromebook 15 (cb5-571, c910)': '2020-06-01T00:00:00.000Z', - 'acer chromebook 15 (cb515-1h,cb515-1ht)': '2023-11-01T00:00:00.000Z', - 'acer chromebook 311 (c721, c733, c733u, c733t)': '2025-06-01T00:00:00.000Z', - 'acer chromebook 311': '2025-06-01T00:00:00.000Z', - 'acer chromebook 311': '2025-06-01T00:00:00.000Z', - 'acer chromebook 315 (cb315-2h)': '2025-06-01T00:00:00.000Z', - 'acer chromebook 315': '2025-06-01T00:00:00.000Z', - 'acer chromebook 512 (c851, c851t)': '2025-06-01T00:00:00.000Z', - 'acer chromebook 514': '2023-11-01T00:00:00.000Z', - 'acer chromebook 714 (cb714-1w / cb714-1wt)': '2024-06-01T00:00:00.000Z', - 'acer chromebook 715 (cb715-1w / cb715-1wt)': '2024-06-01T00:00:00.000Z', - 'acer chromebook r11 (cb5-132t, c738t)': '2021-06-01T00:00:00.000Z', - 'acer chromebook r13 (cb5-312t)': '2021-09-01T00:00:00.000Z', - 'acer chromebook spin 11 (cp311-h1, cp311-1hn)': '2023-11-01T00:00:00.000Z', - 'acer chromebook spin 11 (r751t)': '2023-11-01T00:00:00.000Z', - 'acer chromebook spin 13 (cp713-1wn)': '2024-06-01T00:00:00.000Z', - 'acer chromebook spin 15 (cp315)': '2023-11-01T00:00:00.000Z', - 'acer chromebook spin 311 (r721t)': '2025-06-01T00:00:00.000Z', - 'acer chromebook spin 511 (r752t, r752tn)': '2025-06-01T00:00:00.000Z', - 'acer chromebook spin 511': '2025-06-01T00:00:00.000Z', - 'acer chromebook spin 512 (r851tn)': '2025-06-01T00:00:00.000Z', - 'acer chromebook tab 10': '2023-08-01T00:00:00.000Z', - 'acer chromebox cxi2 / cxv2': '2020-06-01T00:00:00.000Z', - 'acer chromebox cxi2': '2020-06-01T00:00:00.000Z', - 'acer chromebox cxi3': '2024-06-01T00:00:00.000Z', - 'acer chromebox': '2019-09-01T00:00:00.000Z', - 'aopen chromebase commercial': '2020-09-01T00:00:00.000Z', - 'aopen chromebase mini': '2022-02-01T00:00:00.000Z', - 'aopen chromebox commercial 2': '2024-06-01T00:00:00.000Z', - 'aopen chromebox commercial': '2020-09-01T00:00:00.000Z', - 'aopen chromebox mini': '2022-02-01T00:00:00.000Z', - 'asi chromebook': '2020-06-01T00:00:00.000Z', - 'asus chromebit cs10': '2020-11-01T00:00:00.000Z', - 'asus chromebook c200': '2019-06-01T00:00:00.000Z', - 'asus chromebook c200ma': '2019-06-01T00:00:00.000Z', - 'asus chromebook c201pa': '2020-06-01T00:00:00.000Z', - 'asus chromebook c201pa': '2020-06-01T00:00:00.000Z', - 'asus chromebook c202sa': '2021-06-01T00:00:00.000Z', - 'asus chromebook c204': '2025-06-01T00:00:00.000Z', - 'asus chromebook c204': '2025-06-01T00:00:00.000Z', - 'asus chromebook c213na': '2023-11-01T00:00:00.000Z', - 'asus chromebook c223': '2023-11-01T00:00:00.000Z', - 'asus chromebook c300': '2019-08-01T00:00:00.000Z', - 'asus chromebook c300ma': '2019-08-01T00:00:00.000Z', - 'asus chromebook c300sa / c301sa': '2021-06-01T00:00:00.000Z', - 'asus chromebook c403': '2023-11-01T00:00:00.000Z', - 'asus chromebook c423': '2023-11-01T00:00:00.000Z', - 'asus chromebook c523': '2023-11-01T00:00:00.000Z', - 'asus chromebook flip c100pa': '2020-07-01T00:00:00.000Z', - 'asus chromebook flip c101pa': '2023-08-01T00:00:00.000Z', - 'asus chromebook flip c213': '2023-11-01T00:00:00.000Z', - 'asus chromebook flip c214': '2025-06-01T00:00:00.000Z', - 'asus chromebook flip c302': '2022-11-01T00:00:00.000Z', - 'asus chromebook flip c434': '2024-06-01T00:00:00.000Z', - 'asus chromebook tablet ct100': '2023-08-01T00:00:00.000Z', - 'asus chromebox (cn60)': '2019-09-01T00:00:00.000Z', - 'asus chromebox 2 (cn62)': '2021-06-01T00:00:00.000Z', - 'asus chromebox 3 (cn65)': '2024-06-01T00:00:00.000Z', - 'asus chromebox 3': '2024-06-01T00:00:00.000Z', - 'asus chromebox cn60': '2019-09-01T00:00:00.000Z', - 'asus chromebox cn62': '2021-06-01T00:00:00.000Z', - 'bobicus chromebook 11': '2020-06-01T00:00:00.000Z', - 'chromebook 11 (c730 / cb3-111)': '2019-08-01T00:00:00.000Z', - 'chromebook 11 (c735)': '2021-01-01T00:00:00.000Z', - 'chromebook 15 (cb515 - 1ht / 1h)': '2023-11-01T00:00:00.000Z', - 'chromebook 311 (c721)': '2025-06-01T00:00:00.000Z', - 'chromebook pcm-116e': '2020-06-01T00:00:00.000Z', - 'consumer chromebook': '2020-06-01T00:00:00.000Z', - 'cr-48': '2015-12-01T00:00:00.000Z', - 'crambo chromebook': '2020-06-01T00:00:00.000Z', - 'ctl chromebook j41 / j41t': '2023-11-01T00:00:00.000Z', - 'ctl chromebook nl7 / nl7t-360 / nl7tw-360': '2023-11-01T00:00:00.000Z', - 'ctl chromebook nl7': '2023-11-01T00:00:00.000Z', - 'ctl chromebook tab tx1': '2023-08-01T00:00:00.000Z', - 'ctl chromebook tablet tx1 for education': '2023-08-01T00:00:00.000Z', - 'ctl chromebox cbx1': '2024-06-01T00:00:00.000Z', - 'ctl j2 / j4 chromebook': '2020-06-01T00:00:00.000Z', - 'ctl j5 chromebook': '2021-08-01T00:00:00.000Z', - 'ctl n6 education chromebook': '2020-06-01T00:00:00.000Z', - 'ctl nl61 chromebook': '2021-08-01T00:00:00.000Z', - 'dell chromebook 11 (3120)': '2020-06-01T00:00:00.000Z', - 'dell chromebook 11 (3180)': '2022-05-01T00:00:00.000Z', - 'dell chromebook 11 (5190)': '2023-11-01T00:00:00.000Z', - 'dell chromebook 11 2-in-1 (3189)': '2022-05-01T00:00:00.000Z', - 'dell chromebook 11 2-in-1 (5190)': '2023-11-01T00:00:00.000Z', - 'dell chromebook 11': '2019-06-01T00:00:00.000Z', - 'dell chromebook 13 (3380)': '2022-11-01T00:00:00.000Z', - 'dell chromebook 13 (7310)': '2020-09-01T00:00:00.000Z', - 'dell chromebook 3100 2-in-1': '2025-06-01T00:00:00.000Z', - 'dell chromebook 3100': '2025-06-01T00:00:00.000Z', - 'dell chromebook 3400': '2025-06-01T00:00:00.000Z', - 'dell chromebox': '2019-09-01T00:00:00.000Z', - 'dell inspiron chromebook 14 2-in-1 (7486)': '2024-06-01T00:00:00.000Z', - 'edugear chromebook k': '2020-06-01T00:00:00.000Z', - 'edugear chromebook m': '2020-06-01T00:00:00.000Z', - 'edugear chromebook r': '2020-06-01T00:00:00.000Z', - 'edugear cmt chromebook': '2021-08-01T00:00:00.000Z', - 'edxis chromebook': '2020-06-01T00:00:00.000Z', - 'edxis education chromebook': '2020-06-01T00:00:00.000Z', - 'epik 11.6" chromebook elb1101': '2020-06-01T00:00:00.000Z', - 'google chromebook pixel (2015)': '2020-06-01T00:00:00.000Z', - 'google chromebook pixel': '2018-06-01T00:00:00.000Z', - 'google cr-48': '2015-12-01T00:00:00.000Z', - 'google pixel slate': '2024-06-01T00:00:00.000Z', - 'google pixelbook': '2024-06-01T00:00:00.000Z', - 'haier chromebook 11 c': '2021-08-01T00:00:00.000Z', - 'haier chromebook 11 g2': '2020-09-01T00:00:00.000Z', - 'haier chromebook 11': '2020-06-01T00:00:00.000Z', - 'haier chromebook 11e': '2020-06-01T00:00:00.000Z', - 'hexa chromebook pi': '2020-06-01T00:00:00.000Z', - 'hisense chromebook 11': '2020-06-01T00:00:00.000Z', - 'hp chromebook 11 1100-1199 / hp chromebook 11 g1': '2018-10-01T00:00:00.000Z', - 'hp chromebook 11 2000-2099 / hp chromebook 11 g2': '2019-06-01T00:00:00.000Z', - 'hp chromebook 11 2100-2199 / hp chromebook 11 g3': '2020-06-01T00:00:00.000Z', - 'hp chromebook 11 2200-2299 / hp chromebook 11 g4/g4 ee': '2020-06-01T00:00:00.000Z', - 'hp chromebook 11 g1': '2018-10-01T00:00:00.000Z', - 'hp chromebook 11 g2': '2019-06-01T00:00:00.000Z', - 'hp chromebook 11 g3': '2020-06-01T00:00:00.000Z', - 'hp chromebook 11 g4/g4 ee': '2020-06-01T00:00:00.000Z', - 'hp chromebook 11 g5 / hp chromebook 11-vxxx': '2021-07-01T00:00:00.000Z', - 'hp chromebook 11 g5 ee': '2022-01-01T00:00:00.000Z', - 'hp chromebook 11 g5': '2021-07-01T00:00:00.000Z', - 'hp chromebook 11 g6 ee': '2023-11-01T00:00:00.000Z', - 'hp chromebook 11 g7 ee': '2025-06-01T00:00:00.000Z', - 'hp chromebook 11a g6 ee': '2025-06-01T00:00:00.000Z', - 'hp chromebook 13 g1': '2022-11-01T00:00:00.000Z', - 'hp chromebook 14 / hp chromebook 14 g5': '2023-11-01T00:00:00.000Z', - 'hp chromebook 14 ak000-099 / hp chromebook 14 g4': '2021-09-01T00:00:00.000Z', - 'hp chromebook 14 db0000-db0999': '2025-06-01T00:00:00.000Z', - 'hp chromebook 14 g3': '2019-10-01T00:00:00.000Z', - 'hp chromebook 14 g4': '2021-09-01T00:00:00.000Z', - 'hp chromebook 14 g5': '2023-11-01T00:00:00.000Z', - 'hp chromebook 14 x000-x999 / hp chromebook 14 g3': '2019-10-01T00:00:00.000Z', - 'hp chromebook 14': '2019-06-01T00:00:00.000Z', - 'hp chromebook 14a g5': '2025-06-01T00:00:00.000Z', - 'hp chromebook 15 g1': '2024-06-01T00:00:00.000Z', - 'hp chromebook x2 ': '2024-06-01T00:00:00.000Z', - 'hp chromebook x360 11 g1 ee': '2023-11-01T00:00:00.000Z', - 'hp chromebook x360 11 g2 ee': '2025-06-01T00:00:00.000Z', - 'hp chromebook x360 14 g1': '2024-06-01T00:00:00.000Z', - 'hp chromebook x360 14': '2024-06-01T00:00:00.000Z', - 'hp chromebox cb1-(000-099) / hp chromebox g1/ hp chromebox for meetings': '2019-09-01T00:00:00.000Z', - 'hp chromebox g1': '2019-09-01T00:00:00.000Z', - 'hp chromebox g2': '2024-06-01T00:00:00.000Z', - 'hp pavilion chromebook 14': '2018-02-01T00:00:00.000Z', - 'jp sa couto chromebook': '2020-06-01T00:00:00.000Z', - 'lava xolo chromebook': '2020-06-01T00:00:00.000Z', - 'lenovo 100e chromebook 2nd gen mtk': '2025-06-01T00:00:00.000Z', - 'lenovo 100e chromebook 2nd gen': '2025-06-01T00:00:00.000Z', - 'lenovo 100e chromebook': '2023-11-01T00:00:00.000Z', - 'lenovo 100s chromebook': '2020-09-01T00:00:00.000Z', - 'lenovo 14e chromebook': '2025-06-01T00:00:00.000Z', - 'lenovo 300e chromebook 2nd gen mtk': '2025-06-01T00:00:00.000Z', - 'lenovo 300e chromebook 2nd gen': '2025-06-01T00:00:00.000Z', - 'lenovo 300e chromebook': '2025-06-01T00:00:00.000Z', - 'lenovo 500e chromebook 2nd gen': '2025-06-01T00:00:00.000Z', - 'lenovo 500e chromebook': '2023-11-01T00:00:00.000Z', - 'lenovo chromebook c330': '2022-06-01T00:00:00.000Z', - 'lenovo chromebook s330': '2022-06-01T00:00:00.000Z', - 'lenovo flex 11 chromebook': '2022-06-01T00:00:00.000Z', - 'lenovo ideapad c330 chromebook': '2022-06-01T00:00:00.000Z', - 'lenovo ideapad s330 chromebook': '2022-06-01T00:00:00.000Z', - 'lenovo n20 chromebook': '2019-06-01T00:00:00.000Z', - 'lenovo n21 chromebook': '2020-06-01T00:00:00.000Z', - 'lenovo n22 chromebook': '2021-06-01T00:00:00.000Z', - 'lenovo n23 chromebook': '2021-06-01T00:00:00.000Z', - 'lenovo n23 yoga chromebook': '2022-06-01T00:00:00.000Z', - 'lenovo n42 chromebook': '2021-06-01T00:00:00.000Z', - 'lenovo thinkcentre chromebox': '2020-06-01T00:00:00.000Z', - 'lenovo thinkpad 11e 3rd gen chromebook': '2021-06-01T00:00:00.000Z', - 'lenovo thinkpad 11e 4th gen chromebook': '2023-11-01T00:00:00.000Z', - 'lenovo thinkpad 11e chromebook (4th gen)/lenovo thinkpad yoga 11e chromebook (4th gen)': '2023-11-01T00:00:00.000Z', - 'lenovo thinkpad 11e chromebook': '2019-06-01T00:00:00.000Z', - 'lenovo thinkpad 13': '2022-11-01T00:00:00.000Z', - 'lenovo thinkpad x131e chromebook': '2018-06-01T00:00:00.000Z', - 'lenovo yoga c630 chromebook': '2024-06-01T00:00:00.000Z', - 'lg chromebase (22cb25s)': '2020-06-01T00:00:00.000Z', - 'lg chromebase (22cv241)': '2019-06-01T00:00:00.000Z', - 'lumos education chromebook': '2020-06-01T00:00:00.000Z', - 'm&a chromebook': '2020-06-01T00:00:00.000Z', - 'mecer chromebook': '2020-06-01T00:00:00.000Z', - 'mecer v2 chromebook': '2021-08-01T00:00:00.000Z', - 'medion chromebook akoya s2013 ': '2020-06-01T00:00:00.000Z', - 'medion chromebook s2015': '2020-06-01T00:00:00.000Z', - 'multilaser chromebook m11c': '2021-08-01T00:00:00.000Z', - 'ncomputing chromebook cx100': '2020-06-01T00:00:00.000Z', - 'ncomputing chromebook cx110': '2020-06-01T00:00:00.000Z', - 'nexian chromebook 11.6\"': '2020-06-01T00:00:00.000Z', - 'pcmerge chromebook al116': '2023-11-01T00:00:00.000Z', - 'pcmerge chromebookpcm-116e/pcm-116eb': '2020-06-01T00:00:00.000Z', - 'pcmerge chromebookpcm-116t-432b': '2021-08-01T00:00:00.000Z', - 'poin2 chromebook 11': '2020-06-01T00:00:00.000Z', - 'poin2 chromebook 11c': '2022-03-01T00:00:00.000Z', - 'poin2 chromebook 14': '2022-03-01T00:00:00.000Z', - 'positivo chromebook c216b': '2021-08-01T00:00:00.000Z', - 'positivo chromebook ch1190': '2020-06-01T00:00:00.000Z', - 'prowise 11.6" entry line chromebook': '2020-06-01T00:00:00.000Z', - 'prowise chromebook eduline': '2023-11-01T00:00:00.000Z', - 'prowise chromebook entryline': '2020-06-01T00:00:00.000Z', - 'prowise chromebook proline': '2021-08-01T00:00:00.000Z', - 'prowise proline chromebook': '2021-08-01T00:00:00.000Z', - 'rgs education chromebook': '2020-06-01T00:00:00.000Z', - 'samsung chromebook - xe303': '2018-07-01T00:00:00.000Z', - 'samsung chromebook 2 11\" - xe500c12': '2020-06-01T00:00:00.000Z', - 'samsung chromebook 2 11\"': '2019-06-01T00:00:00.000Z', - 'samsung chromebook 2 13\"': '2019-06-01T00:00:00.000Z', - 'samsung chromebook 3': '2021-06-01T00:00:00.000Z', - 'samsung chromebook plus (v2)': '2024-06-01T00:00:00.000Z', - 'samsung chromebook plus': '2023-08-01T00:00:00.000Z', - 'samsung chromebook pro': '2022-11-01T00:00:00.000Z', - 'samsung chromebook series 5 550': '2017-05-01T00:00:00.000Z', - 'samsung chromebook series 5': '2016-06-01T00:00:00.000Z', - 'samsung chromebook': '2018-07-01T00:00:00.000Z', - 'samsung chromebox series 3': '2018-03-01T00:00:00.000Z', - 'sector 5 e1 rugged chromebook': '2020-06-01T00:00:00.000Z', - 'sector 5 e3 chromebook': '2023-11-01T00:00:00.000Z', - 'senkatel c1101 chromebook': '2020-06-01T00:00:00.000Z', - 'thinkpad 11e chromebook 3rd gen (yoga/clamshell)': '2021-06-01T00:00:00.000Z', - 'thinkpad 13 chromebook': '2022-11-01T00:00:00.000Z', - 'toshiba chromebook 2 (2015 edition)': '2020-09-01T00:00:00.000Z', - 'toshiba chromebook 2': '2020-06-01T00:00:00.000Z', - 'toshiba chromebook': '2019-06-01T00:00:00.000Z', - 'true idc chromebook 11': '2020-06-01T00:00:00.000Z', - 'true idc chromebook': '2020-06-01T00:00:00.000Z', - 'videonet chromebook bl10': '2020-06-01T00:00:00.000Z', - 'videonet chromebook': '2020-06-01T00:00:00.000Z', - 'viewsonic nmp660 chromebox': '2024-06-01T00:00:00.000Z', - 'viglen chromebook 11': '2020-06-01T00:00:00.000Z', - 'viglen chromebook 11c': '2023-11-01T00:00:00.000Z', - 'viglen chromebook 360': '2021-08-01T00:00:00.000Z', - 'xolo chromebook': '2020-06-01T00:00:00.000Z', -} - COLLABORATIVE_ACL_CHOICES = { 'members': 'ALL_MEMBERS', 'managersonly': 'MANAGERS_ONLY',