Example #1
0
def test_transfield_changed():
    initial = {
        'some_field': 'some_val',
        'name_en-us': Translation.objects.create(
            id=500, locale='en-us', localized_string='test_name')
    }
    data = {'some_field': 'some_val',
            'name': {'init': '', 'en-us': 'test_name'}}

    # No change.
    eq_(transfield_changed('name', initial, data), 0)

    # Changed localization.
    data['name']['en-us'] = 'test_name_changed'
    eq_(transfield_changed('name', initial, data), 1)

    # New localization.
    data['name']['en-us'] = 'test_name'
    data['name']['en-af'] = Translation.objects.create(
        id=505, locale='en-af', localized_string='test_name_localized')
    eq_(transfield_changed('name', initial, data), 1)

    # Deleted localization.
    del initial['name_en-us']
    eq_(transfield_changed('name', initial, data), 1)
Example #2
0
def test_transfield_changed():
    initial = {
        'some_field': 'some_val',
        'name_en-us': Translation.objects.create(
            id=500, locale='en-us', localized_string='test_name')
    }
    data = {'some_field': 'some_val',
            'name': {'init': '', 'en-us': 'test_name'}}

    # No change.
    eq_(transfield_changed('name', initial, data), 0)

    # Changed localization.
    data['name']['en-us'] = 'test_name_changed'
    eq_(transfield_changed('name', initial, data), 1)

    # New localization.
    data['name']['en-us'] = 'test_name'
    data['name']['en-af'] = Translation.objects.create(
        id=505, locale='en-af', localized_string='test_name_localized')
    eq_(transfield_changed('name', initial, data), 1)

    # Deleted localization.
    del initial['name_en-us']
    eq_(transfield_changed('name', initial, data), 1)
Example #3
0
    def save(self):
        addon = self.instance
        persona = addon.persona
        data = self.cleaned_data

        # Update Persona-specific data.
        persona_data = {
            'license': int(data['license']),
            'accentcolor': data['accentcolor'].lstrip('#'),
            'textcolor': data['textcolor'].lstrip('#'),
            'author': self.request.amo_user.username,
            'display_username': self.request.amo_user.name
        }
        changed = False
        for k, v in persona_data.iteritems():
            if v != getattr(persona, k):
                changed = True
                setattr(persona, k, v)
        if changed:
            persona.save()

        if self.changed_data:
            amo.log(amo.LOG.EDIT_PROPERTIES, addon)
        self.instance.modified = datetime.now()

        # Update Addon-specific data.
        changed = (
            set(self.old_tags) != data['tags'] or  # Check if tags changed.
            self.initial['slug'] != data['slug'] or  # Check if slug changed.
            transfield_changed('description', self.initial, data) or
            transfield_changed('name', self.initial, data))
        if changed:
            # Only save if addon data changed.
            super(EditThemeForm, self).save()

        # Update tags.
        tags_new = data['tags']
        tags_old = [slugify(t, spaces=True) for t in self.old_tags]
        # Add new tags.
        for t in set(tags_new) - set(tags_old):
            Tag(tag_text=t).save_tag(addon)
        # Remove old tags.
        for t in set(tags_old) - set(tags_new):
            Tag(tag_text=t).remove_tag(addon)

        # Update category.
        if data['category'].id != self.initial['category']:
            addon_cat = addon.addoncategory_set.all()[0]
            addon_cat.category = data['category']
            addon_cat.save()

        # Theme reupload.
        if not addon.is_pending():
            if data['header_hash'] or data['footer_hash']:
                save_theme_reupload.delay(
                    data['header_hash'], data['footer_hash'], addon)

        return data
Example #4
0
    def save(self):
        addon = self.instance
        persona = addon.persona
        data = self.cleaned_data

        # Update Persona-specific data.
        persona_data = {
            'license': int(data['license']),
            'accentcolor': data['accentcolor'].lstrip('#'),
            'textcolor': data['textcolor'].lstrip('#'),
            'author': self.request.amo_user.username,
            'display_username': self.request.amo_user.name
        }
        changed = False
        for k, v in persona_data.iteritems():
            if v != getattr(persona, k):
                changed = True
                setattr(persona, k, v)
        if changed:
            persona.save()

        if self.changed_data:
            amo.log(amo.LOG.EDIT_PROPERTIES, addon)
        self.instance.modified = datetime.now()

        # Update Addon-specific data.
        changed = (
            set(self.old_tags) != data['tags'] or  # Check if tags changed.
            self.initial['slug'] != data['slug'] or  # Check if slug changed.
            transfield_changed('description', self.initial, data)
            or transfield_changed('name', self.initial, data))
        if changed:
            # Only save if addon data changed.
            super(EditThemeForm, self).save()

        # Update tags.
        tags_new = data['tags']
        tags_old = [slugify(t, spaces=True) for t in self.old_tags]
        # Add new tags.
        for t in set(tags_new) - set(tags_old):
            Tag(tag_text=t).save_tag(addon)
        # Remove old tags.
        for t in set(tags_old) - set(tags_new):
            Tag(tag_text=t).remove_tag(addon)

        # Update category.
        if data['category'].id != self.initial['category']:
            addon_cat = addon.addoncategory_set.all()[0]
            addon_cat.category = data['category']
            addon_cat.save()

        # Theme reupload.
        if not addon.is_pending():
            if data['header_hash'] or data['footer_hash']:
                save_theme_reupload.delay(data['header_hash'],
                                          data['footer_hash'], addon)

        return data