コード例 #1
0
ファイル: views.py プロジェクト: atiqueahmedziad/zamboni
def website_summary(request, addon_id):
    website = get_object_or_404(Website, pk=addon_id)
    if not hasattr(website, 'keywords_list'):
        attach_tags([website])

    return render(request, 'lookup/website_summary.html', {
        'website': website,
    })
コード例 #2
0
    def extract_document(cls, pk=None, obj=None):
        """Converts this instance into an Elasticsearch document"""
        if obj is None:
            obj = cls.get_model().objects.get(pk=pk)

        # Attach translations for searching and indexing.
        attach_trans_dict(cls.get_model(), [obj])

        # Attach tags (keywords).
        attach_tags([obj])

        attrs = ('created', 'default_locale', 'id', 'icon_hash', 'icon_type',
                 'is_disabled', 'last_updated', 'mobile_url', 'modified',
                 'promo_img_hash', 'status', 'tv_url', 'url')
        doc = dict(zip(attrs, attrgetter(*attrs)(obj)))

        doc['category'] = obj.categories or []
        doc['device'] = obj.devices or []
        doc['name_sort'] = unicode(obj.name).lower()
        doc['preferred_regions'] = obj.preferred_regions or []
        doc['tags'] = getattr(obj, 'keywords_list', [])
        doc['tv_featured'] = obj.keywords.filter(
            tag_text='featured-tv').exists()
        doc['url_tokenized'] = cls.strip_url(obj.url)

        # For now, websites are not reviewed, since we're manually injecting
        # data, so just use last_updated.
        doc['reviewed'] = obj.last_updated

        # Add boost, popularity, trending values.
        doc.update(cls.extract_popularity_trending_boost(obj))

        # Handle localized fields. This adds both the field used for search and
        # the one with all translations for the API.
        for field in cls.translated_fields:
            doc.update(
                cls.extract_field_translations(obj,
                                               field,
                                               include_field_for_search=True))

        # Handle language-specific analyzers.
        for field in cls.fields_with_language_analyzers:
            doc.update(cls.extract_field_analyzed_translations(obj, field))

        return doc
コード例 #3
0
ファイル: indexers.py プロジェクト: TwinkleChawla/zamboni
    def extract_document(cls, pk=None, obj=None):
        """Converts this instance into an Elasticsearch document"""
        if obj is None:
            obj = cls.get_model().objects.get(pk=pk)

        # Attach translations for searching and indexing.
        attach_trans_dict(cls.get_model(), [obj])

        # Attach tags (keywords).
        attach_tags([obj])

        attrs = ('created', 'default_locale', 'id', 'icon_hash', 'icon_type',
                 'is_disabled', 'last_updated', 'mobile_url', 'modified',
                 'promo_img_hash', 'status', 'tv_url', 'url')
        doc = dict(zip(attrs, attrgetter(*attrs)(obj)))

        doc['category'] = obj.categories or []
        doc['device'] = obj.devices or []
        doc['developer_name'] = (unicode(obj.developer_name)
                                 if obj.developer_name else None)
        doc['name_sort'] = unicode(obj.name).lower()
        doc['preferred_regions'] = obj.preferred_regions or []
        doc['tags'] = getattr(obj, 'keywords_list', [])
        doc['tv_featured'] = obj.keywords.filter(
            tag_text='featured-tv').exists()
        doc['url_tokenized'] = cls.strip_url(obj.url)

        # For now, websites are not reviewed, since we're manually injecting
        # data, so just use last_updated.
        doc['reviewed'] = obj.last_updated

        # Add boost, popularity, trending values.
        doc.update(cls.extract_popularity_trending_boost(obj))

        # Handle localized fields. This adds both the field used for search and
        # the one with all translations for the API.
        for field in cls.translated_fields:
            doc.update(cls.extract_field_translations(
                obj, field, include_field_for_search=True))

        # Handle language-specific analyzers.
        for field in cls.fields_with_language_analyzers:
            doc.update(cls.extract_field_analyzed_translations(obj, field))

        return doc
コード例 #4
0
ファイル: views.py プロジェクト: waseem18/zamboni
def website_summary(request, addon_id):
    website = get_object_or_404(Website, pk=addon_id)

    if request.FILES:
        promo_img_form = PromoImgForm(request.POST, request.FILES)
    else:
        promo_img_form = PromoImgForm()
    if 'promo_img' in request.FILES and promo_img_form.is_valid():
        promo_img_form.save(website)
        messages.success(request, 'Promo image successfully uploaded.')
        return redirect(reverse('lookup.website_summary', args=[website.pk]))

    if not hasattr(website, 'keywords_list'):
        attach_tags([website])

    return render(request, 'lookup/website_summary.html', {
        'website': website,
        'promo_img_form': promo_img_form,
    })
コード例 #5
0
ファイル: test_models.py プロジェクト: waseem18/zamboni
    def test_attach_tags_websites(self):
        tag1 = Tag.objects.create(tag_text='abc', blocked=False)
        tag2 = Tag.objects.create(tag_text='xyz', blocked=False)
        tag3 = Tag.objects.create(tag_text='swearword', blocked=True)

        website1 = website_factory()
        website1.keywords.add(tag1)
        website1.keywords.add(tag2)
        website1.keywords.add(tag3)

        website2 = website_factory()
        website2.keywords.add(tag2)
        website2.keywords.add(tag3)

        website3 = website_factory()

        ok_(not hasattr(website1, 'keywords_list'))
        attach_tags([website3, website2, website1])
        eq_(website1.keywords_list, ['abc', 'xyz'])
        eq_(website2.keywords_list, ['xyz'])
        ok_(not hasattr(website3, 'keywords_list'))
コード例 #6
0
ファイル: test_models.py プロジェクト: waseem18/zamboni
    def test_attach_tags_apps(self):
        tag1 = Tag.objects.create(tag_text='abc', blocked=False)
        tag2 = Tag.objects.create(tag_text='xyz', blocked=False)
        tag3 = Tag.objects.create(tag_text='swearword', blocked=True)

        app1 = app_factory()
        app1.tags.add(tag1)
        app1.tags.add(tag2)
        app1.tags.add(tag3)

        app2 = app_factory()
        app2.tags.add(tag2)
        app2.tags.add(tag3)

        app3 = app_factory()

        ok_(not hasattr(app1, 'tags_list'))
        attach_tags([app3, app2, app1])
        eq_(app1.tags_list, ['abc', 'xyz'])
        eq_(app2.tags_list, ['xyz'])
        ok_(not hasattr(app3, 'tags_list'))
コード例 #7
0
ファイル: test_models.py プロジェクト: ujdhesa/zamboni
    def test_attach_tags_websites(self):
        tag1 = Tag.objects.create(tag_text="abc", blocked=False)
        tag2 = Tag.objects.create(tag_text="xyz", blocked=False)
        tag3 = Tag.objects.create(tag_text="swearword", blocked=True)

        website1 = website_factory()
        website1.keywords.add(tag1)
        website1.keywords.add(tag2)
        website1.keywords.add(tag3)

        website2 = website_factory()
        website2.keywords.add(tag2)
        website2.keywords.add(tag3)

        website3 = website_factory()

        ok_(not hasattr(website1, "keywords_list"))
        attach_tags([website3, website2, website1])
        eq_(website1.keywords_list, ["abc", "xyz"])
        eq_(website2.keywords_list, ["xyz"])
        ok_(not hasattr(website3, "keywords_list"))
コード例 #8
0
ファイル: test_models.py プロジェクト: ujdhesa/zamboni
    def test_attach_tags_apps(self):
        tag1 = Tag.objects.create(tag_text="abc", blocked=False)
        tag2 = Tag.objects.create(tag_text="xyz", blocked=False)
        tag3 = Tag.objects.create(tag_text="swearword", blocked=True)

        app1 = app_factory()
        app1.tags.add(tag1)
        app1.tags.add(tag2)
        app1.tags.add(tag3)

        app2 = app_factory()
        app2.tags.add(tag2)
        app2.tags.add(tag3)

        app3 = app_factory()

        ok_(not hasattr(app1, "tags_list"))
        attach_tags([app3, app2, app1])
        eq_(app1.tags_list, ["abc", "xyz"])
        eq_(app2.tags_list, ["xyz"])
        ok_(not hasattr(app3, "tags_list"))
コード例 #9
0
 def get_tags(self, app):
     if not hasattr(app, 'tags_list'):
         attach_tags([app])
     return getattr(app, 'tags_list', [])
コード例 #10
0
ファイル: serializers.py プロジェクト: Hitechverma/zamboni
 def get_tags(self, app):
     if not hasattr(app, 'tags_list'):
         attach_tags([app])
     return getattr(app, 'tags_list', [])
コード例 #11
0
ファイル: serializers.py プロジェクト: Hitechverma/zamboni
 def get_keywords(self, obj):
     if not hasattr(obj, 'keywords_list'):
         attach_tags([obj])
     return getattr(obj, 'keywords_list', [])
コード例 #12
0
 def get_keywords(self, obj):
     if not hasattr(obj, 'keywords_list'):
         attach_tags([obj])
     return getattr(obj, 'keywords_list', [])