Esempio n. 1
0
    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,))
Esempio n. 2
0
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
        })
Esempio n. 3
0
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})
Esempio n. 4
0
    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"]
Esempio n. 5
0
    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, ))
Esempio n. 6
0
    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']