def get_or_create_by_code(self, code): """Convenience method for returning the Language that corresponds to the specified code, creating it if needed. If the code is not valid, it raises a ValueError. :param code: language code :returns: language """ # Try to fetch the Language if already on DB. try: language = self.get(code=code) return language except Language.DoesNotExist: pass # Add Language, discarding it if it does not have a valid code. std = standardize_language(code) if std: long_name = "%s%s" % (std.description[0], ' (%s)' % ', '.join(std.description[1:]) if len(std.description) > 1 else '') language = self.create(code=std.code, label=std.description[0], long_name=long_name) return language raise ValueError('%s is not a valid language code' % code)
def standardize_existing(apps, schema_editor): """Custom cleanup of existing Languages: - change code to lowercase - set long_name and label based on standardize_language() """ Language = apps.get_model('books', 'Language') for row in Language.objects.all(): row.code = row.code.lower() std = standardize_language(row.code) if std: long_name = "%s%s" % (std.description[0], ' (%s)' % ', '.join( std.description[1:]) if len(std.description) > 1 else '') row.label = std.description[0] row.long_name = long_name row.save()
def standardize_existing(apps, schema_editor): """Custom cleanup of existing Languages: - change code to lowercase - set long_name and label based on standardize_language() """ Language = apps.get_model('books', 'Language') for row in Language.objects.all(): row.code = row.code.lower() std = standardize_language(row.code) if std: long_name = "%s%s" % (std.description[0], ' (%s)' % ', '.join(std.description[1:]) if len(std.description) > 1 else '') row.label = std.description[0] row.long_name = long_name row.save()