import json
import tempfile

from django.core.management.commands.makemessages import Command as BaseCommand

from bluebottle.clients.utils import get_currencies


class Command(BaseCommand):
    """ Extend the makemessages to include some of the fixtures """

    fixtures = [
        ('bb_projects', 'project_data.json'),
        ('bb_tasks', 'skills.json'),
        ('geo', 'geo_data.json'),
    ]

    def handle(self, *args, **kwargs):
        with tempfile.NamedTemporaryFile(dir='bluebottle', suffix='.py') as temp:
            for app, file in self.fixtures:
                with open('bluebottle/{}/fixtures/{}'.format(app, file)) as fixture_file:
                    strings = [
                        fixture['fields']['name'].encode('utf-8')
                        for fixture
                        in json.load(fixture_file)
                    ]

                    for string in strings:
                        temp.write('gettext("{}")\n'.format(string))

            for currency in get_currencies():
                temp.write('gettext("{}")\n'.format(currency['name']))

            temp.flush()

            return super(Command, self).handle(*args, **kwargs)

import json
import os

from django.core.management.commands.makemessages import Command as BaseCommand

from bluebottle.clients.utils import get_currencies


class Command(BaseCommand):
    """ Extend the makemessages to include some of the fixtures """

    fixtures = [
        ('bb_projects', 'project_data.json'),
        ('bb_tasks', 'skills.json'),
        ('geo', 'geo_data.json'),
    ]

    def handle(self, *args, **kwargs):
        with open('bluebottle/fixtures.py', 'w') as temp:
            for app, file in self.fixtures:
                with open('bluebottle/{}/fixtures/{}'.format(app, file)) as fixture_file:
                    strings = [
                        fixture['fields']['name'].encode('utf-8')
                        for fixture
                        in json.load(fixture_file)
                    ]

                    for string in strings:
                        temp.write('gettext("{}")\n'.format(string))

            for currency in get_currencies():
                temp.write('gettext("{}")\n'.format(currency['name']))

            temp.flush()

            super(Command, self).handle(*args, **kwargs)

        os.unlink('bluebottle/fixtures.py')

Make sure we always use the same filename for the fixtures translations. This way the translations do not contain accidental changes.
Make sure we always use the same filename for the fixtures translations.
This way the translations do not contain accidental changes.
