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
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
def test_invalid_code(self): """Test the language name with invalid language code.""" activate('fr') name = langcode_to_name('foobar') eq_(name, 'foobar')
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, "Anglais")