def _create_bundle(self, prod, locale=settings.WIKI_DEFAULT_LANGUAGE): p = product(title=prod, save=True) t = topic(title="topic1", product=p, save=True) if locale == settings.WIKI_DEFAULT_LANGUAGE: parent = lambda i: None else: def parent(i): d = document(title="test {0} {1}".format(locale, i), locale=settings.WIKI_DEFAULT_LANGUAGE, save=True) d.products.add(p) d.topics.add(t) d.save() revision(summary="test article {0}".format(i), document=d, is_approved=True, save=True) return d for i in xrange(5): d = document(title="test {0} {1}".format(locale, i), locale=locale, save=True) revision(summary="test article {0}".format(i), document=d, is_approved=True, save=True) d.products.add(p) d.topics.add(t) d.parent = parent(i) d.save() build_kb_bundles((prod,))
def offline_admin(request): redis = redis_client('default') action = request.POST.get('action') if action == 'generate_all': log.info('Requested regenerating all bundles.') build_kb_bundles() messages.add_message(request, messages.SUCCESS, 'Bundles regenerated!') elif action == 'delete_all': if redis.delete(*redis.keys('osumo:*')): messages.add_message(request, messages.SUCCESS, 'Deleted all bundles!') else: messages.add_message(request, messages.ERROR, 'Bundle deleting failed.') keys = redis.keys('osumo:*') bundles = [] totalsize = 0 for key in keys: bundle = {} # reverse operation to redis_bundle_name, the schema is: # osumo:locale~product tmp = key.split(':')[1].split('~') locale, bundle['product'] = tuple(tmp) # to get the non .lower()'ed version. locale = settings.LANGUAGE_URL_MAP[locale] bundle['locale'] = settings.LOCALES[locale].english bundle['hash'] = redis.hget(key, 'hash') updated = redis.hget(key, 'updated') if updated is not None: updated = float(redis.hget(key, 'updated')) updated = datetime.datetime.fromtimestamp(updated) bundle['updated'] = updated.strftime('%Y-%m-%d %H:%M:%S') else: bundle['updated'] = 'N/A' bundle['size'] = round(len(redis.hget(key, 'bundle')) / 1024.0, 2) totalsize += bundle['size'] bundles.append(bundle) # Sorting by by locale and then product bundles.sort(key=lambda x: x['locale'] + x['product']) totalsize /= 1024 totalsize = round(totalsize, 2) return render( request, 'admin/offline.html', { 'title': 'Offline SUMO Administration', 'bundles': bundles, 'totalsize': totalsize })
def offline_admin(request): redis = redis_client('default') action = request.POST.get('action') if action == 'generate_all': log.info('Requested regenerating all bundles.') build_kb_bundles() messages.add_message(request, messages.SUCCESS, 'Bundles regenerated!') elif action == 'delete_all': if redis.delete(*redis.keys('osumo:*')): messages.add_message(request, messages.SUCCESS, 'Deleted all bundles!') else: messages.add_message(request, messages.ERROR, 'Bundle deleting failed.') keys = redis.keys('osumo:*') bundles = [] totalsize = 0 for key in keys: bundle = {} # reverse operation to redis_bundle_name, the schema is: # osumo:locale~product tmp = key.split(':')[1].split('~') locale, bundle['product'] = tuple(tmp) # to get the non .lower()'ed version. locale = settings.LANGUAGE_URL_MAP[locale] bundle['locale'] = settings.LOCALES[locale].english bundle['hash'] = redis.hget(key, 'hash') updated = redis.hget(key, 'updated') if updated is not None: updated = float(redis.hget(key, 'updated')) updated = datetime.datetime.fromtimestamp(updated) bundle['updated'] = updated.strftime('%Y-%m-%d %H:%M:%S') else: bundle['updated'] = 'N/A' bundle['size'] = round(len(redis.hget(key, 'bundle')) / 1024.0, 2) totalsize += bundle['size'] bundles.append(bundle) # Sorting by by locale and then product bundles.sort(key=lambda x: x['locale'] + x['product']) totalsize /= 1024 totalsize = round(totalsize, 2) return render(request, 'admin/offline.html', {'title': 'Offline SUMO Administration', 'bundles': bundles, 'totalsize': totalsize})
def test_get_bundle_meta(self): self._create_bundle("firefox", "en-US") url = reverse("offline.bundle_meta") + "?locale=en-US&product=firefox" resp = self.client.get(url, follow=True) meta = json.loads(resp.content) hash1 = meta["hash"] assert resp["Content-Type"] == "application/json" assert len(hash1) == 40 # sha1 hexdigest should be 40 char long. doc = Document.objects.all()[0] # getting one document should be okay. doc.title = "some differnet title!" doc.save() # rebuild bundle as the version is different now. build_kb_bundles(("firefox",)) # test to see if the hash has changed. resp = self.client.get(url, follow=True) assert hash1 != json.loads(resp.content)["hash"]
def _create_bundle(self, prod, locale=settings.WIKI_DEFAULT_LANGUAGE): p = product(title=prod, save=True) t = topic(title='topic1', product=p, save=True) if locale == settings.WIKI_DEFAULT_LANGUAGE: parent = lambda i: None else: def parent(i): d = document(title='test {0} {1}'.format(locale, i), locale=settings.WIKI_DEFAULT_LANGUAGE, save=True) d.products.add(p) d.topics.add(t) d.save() revision(summary='test article {0}'.format(i), document=d, is_approved=True, save=True) return d for i in xrange(5): d = document(title='test {0} {1}'.format(locale, i), locale=locale, save=True) revision(summary='test article {0}'.format(i), document=d, is_approved=True, save=True) d.products.add(p) d.topics.add(t) d.parent = parent(i) d.save() build_kb_bundles((prod, ))
def test_get_bundle_meta(self): self._create_bundle('firefox', 'en-US') url = (reverse('offline.bundle_meta') + '?locale=en-US&product=firefox') resp = self.client.get(url, follow=True) meta = json.loads(resp.content) hash1 = meta['hash'] assert resp['Content-Type'] == 'application/json' assert len(hash1) == 40 # sha1 hexdigest should be 40 char long. doc = Document.objects.all()[0] # getting one document should be okay. doc.title = 'some differnet title!' doc.save() # rebuild bundle as the version is different now. build_kb_bundles(('firefox', )) # test to see if the hash has changed. resp = self.client.get(url, follow=True) assert hash1 != json.loads(resp.content)['hash']