Пример #1
0
    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)
Пример #2
0
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()
Пример #3
0
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()