Example #1
0
    def extract_document(cls, obj_id, obj=None):
        """Extract the following fields from a document."""

        if obj is None:
            obj = cls.get_model().objects.get(pk=obj_id)
        doc = {}

        attrs = (
            'id',
            'is_vouched',
            'ircname',
        )
        for a in attrs:
            data = getattr(obj, a)
            if isinstance(data, basestring):
                data = data.lower()
            doc.update({a: data})

        doc['country'] = ([obj.country.name.lower(), obj.country.code2]
                          if obj.country else None)
        doc['region'] = obj.region.name.lower() if obj.region else None
        doc['city'] = obj.city.name.lower() if obj.city else None

        # user data
        attrs = ('username', 'email', 'last_login', 'date_joined')
        for a in attrs:
            data = getattr(obj.user, a)
            if isinstance(data, basestring):
                data = data.lower()
            doc.update({a: data})

        doc.update(dict(fullname=obj.full_name.lower()))
        doc.update(dict(name=obj.full_name.lower()))
        doc.update(dict(bio=obj.bio))
        doc.update(dict(has_photo=bool(obj.photo)))

        for attribute in ['groups', 'skills']:
            groups = []
            for g in getattr(obj, attribute).all():
                groups.extend(g.aliases.values_list('name', flat=True))
            doc[attribute] = groups
        # Add to search index language code, language name in English
        # native lanugage name.
        languages = []
        for code in obj.languages.values_list('code', flat=True):
            languages.append(code)
            languages.append(langcode_to_name(code, 'en_US').lower())
            languages.append(langcode_to_name(code, code).lower())
        doc['languages'] = list(set(languages))
        return doc
Example #2
0
    def extract_document(cls, obj_id, obj=None):
        """Extract the following fields from a document."""

        if obj is None:
            obj = cls.get_model().objects.get(pk=obj_id)
        doc = {}

        attrs = ('id', 'is_vouched', 'ircname',
                 'allows_mozilla_sites', 'allows_community_sites')
        for a in attrs:
            data = getattr(obj, a)
            if isinstance(data, basestring):
                data = data.lower()
            doc.update({a: data})

        doc['country'] = ([obj.geo_country.name.lower(), obj.geo_country.code]
                          if obj.geo_country else None)
        doc['region'] = obj.geo_region.name.lower() if obj.geo_region else None
        doc['city'] = obj.geo_city.name.lower() if obj.geo_city else None

        # user data
        attrs = ('username', 'email', 'last_login', 'date_joined')
        for a in attrs:
            data = getattr(obj.user, a)
            if isinstance(data, basestring):
                data = data.lower()
            doc.update({a: data})

        doc.update(dict(fullname=obj.full_name.lower()))
        doc.update(dict(name=obj.full_name.lower()))
        doc.update(dict(bio=obj.bio))
        doc.update(dict(has_photo=bool(obj.photo)))

        for attribute in ['groups', 'skills']:
            groups = []
            for g in getattr(obj, attribute).all():
                groups.extend(g.aliases.values_list('name', flat=True))
            doc[attribute] = groups
        # Add to search index language code, language name in English
        # native lanugage name.
        languages = []
        for code in obj.languages.values_list('code', flat=True):
            languages.append(code)
            languages.append(langcode_to_name(code, 'en_US').lower())
            languages.append(langcode_to_name(code, code).lower())
        doc['languages'] = list(set(languages))
        return doc
Example #3
0
 def test_invalid_code(self):
     """Test the language name with invalid language code."""
     activate('fr')
     name = langcode_to_name('foobar')
     eq_(name, 'foobar')
Example #4
0
 def test_valid_code(self):
     """Test the name of a language with valid language code."""
     activate('fr')
     name = langcode_to_name('en')
     eq_(name, u'Anglais')
 def test_valid_code(self):
     """Test the name of a language with valid language code."""
     activate('fr')
     name = langcode_to_name('en')
     eq_(name, u'Anglais')
 def test_invalid_code(self):
     """Test the language name with invalid language code."""
     activate('fr')
     name = langcode_to_name('foobar')
     eq_(name, 'foobar')
Example #7
0
 def test_valid_code(self):
     """Test the name of a language with valid language code."""
     activate("fr")
     name = langcode_to_name("en")
     eq_(name, "Anglais")