Skip to content
This repository has been archived by the owner on Mar 15, 2018. It is now read-only.

Commit

Permalink
Merge pull request #1187 from diox/screenshots-remove-captions
Browse files Browse the repository at this point in the history
Remove captions from webapp previews (bug 920210)
  • Loading branch information
diox committed Oct 16, 2013
2 parents e490ead + c7e3d91 commit b51493c
Show file tree
Hide file tree
Showing 14 changed files with 52 additions and 67 deletions.
6 changes: 3 additions & 3 deletions apps/translations/models.py
Expand Up @@ -184,7 +184,7 @@ class Meta:

def delete_translation(obj, fieldname):
field = obj._meta.get_field(fieldname)
trans = getattr(obj, field.name)
trans_id = getattr(obj, field.attname)
obj.update(**{field.name: None})
if trans:
Translation.objects.filter(id=trans.id).delete()
if trans_id:
Translation.objects.filter(id=trans_id).delete()
15 changes: 15 additions & 0 deletions migrations/675-remove-captions-from-webapp-previews.py
@@ -0,0 +1,15 @@
#!/usr/bin/env python
import amo
from addons.models import Preview
from translations.models import delete_translation


def run():
"""
Remove captions from Webapp Previews.
"""

for prev in Preview.objects.filter(
addon__type=amo.ADDON_WEBAPP,
caption__isnull=False).no_transforms().no_cache().iterator():
delete_translation(prev, 'caption')
8 changes: 2 additions & 6 deletions mkt/developers/forms.py
Expand Up @@ -186,7 +186,6 @@ def verify_app_domain(manifest_url, exclude=None, packaged=False):


class PreviewForm(happyforms.ModelForm):
caption = TransField(widget=TransTextarea, required=False)
file_upload = forms.FileField(required=False)
upload_hash = forms.CharField(required=False)
# This lets us POST the data URIs of the unsaved previews so we can still
Expand Down Expand Up @@ -225,7 +224,7 @@ def save(self, addon, commit=True):

class Meta:
model = Preview
fields = ('caption', 'file_upload', 'upload_hash', 'id', 'position')
fields = ('file_upload', 'upload_hash', 'id', 'position')


class AdminSettingsForm(PreviewForm):
Expand All @@ -238,7 +237,7 @@ class AdminSettingsForm(PreviewForm):

class Meta:
model = Preview
fields = ('caption', 'file_upload', 'upload_hash', 'position')
fields = ('file_upload', 'upload_hash', 'position')

def __init__(self, *args, **kw):
# Get the object for the app's promo `Preview` and pass it to the form.
Expand All @@ -263,9 +262,6 @@ def __init__(self, *args, **kw):
rs.append(ALL_RATINGS.index(rating))
self.initial['app_ratings'] = rs

def clean_caption(self):
return '__promo__'

def clean_position(self):
return -1

Expand Down
Expand Up @@ -121,13 +121,6 @@
{% endif %}
{{ form.id }}
<span class="js-hidden delete">{{ form.DELETE }}{{ form.DELETE.label_tag() }}</span>
<div class="edit-previews-text">
<label data-for="{{ form.prefix }}-{{ form.caption.name }}" class="above-the-field">
{{ _('Please provide a caption for this:') }}
</label>
{{ form.caption }}
<a href="#" class="remove">x</a>
</div>
<div class="js-hidden position">
{{ form.position }}
</div>
Expand Down
6 changes: 3 additions & 3 deletions mkt/developers/tests/test_forms.py
Expand Up @@ -40,7 +40,7 @@ def setUp(self):
@mock.patch('amo.models.ModelBase.update')
def test_preview_modified(self, update_mock):
name = 'transparent.png'
form = forms.PreviewForm({'caption': 'test', 'upload_hash': name,
form = forms.PreviewForm({'upload_hash': name,
'position': 1})
shutil.copyfile(get_image_path(name), os.path.join(self.dest, name))
assert form.is_valid(), form.errors
Expand All @@ -49,7 +49,7 @@ def test_preview_modified(self, update_mock):

def test_preview_size(self):
name = 'non-animated.gif'
form = forms.PreviewForm({'caption': 'test', 'upload_hash': name,
form = forms.PreviewForm({'upload_hash': name,
'position': 1})
with storage.open(os.path.join(self.dest, name), 'wb') as f:
copyfileobj(open(get_image_path(name)), f)
Expand All @@ -59,7 +59,7 @@ def test_preview_size(self):
{u'image': [250, 297], u'thumbnail': [180, 214]})

def check_file_type(self, type_):
form = forms.PreviewForm({'caption': 'test', 'upload_hash': type_,
form = forms.PreviewForm({'upload_hash': type_,
'position': 1})
assert form.is_valid(), form.errors
form.save(self.addon)
Expand Down
4 changes: 2 additions & 2 deletions mkt/developers/tests/test_tasks.py
Expand Up @@ -183,7 +183,7 @@ class TestResizePreview(amo.tests.TestCase):

def test_preview(self):
addon = Webapp.objects.get(pk=337141)
preview = Preview.objects.create(addon=addon, caption='Test')
preview = Preview.objects.create(addon=addon)
src = get_image_path('preview.jpg')
tasks.resize_preview(src, preview)
preview = preview.reload()
Expand All @@ -196,7 +196,7 @@ def test_preview(self):

def test_preview_rotated(self):
addon = Webapp.objects.get(pk=337141)
preview = Preview.objects.create(addon=addon, caption='Test')
preview = Preview.objects.create(addon=addon)
src = get_image_path('preview_landscape.jpg')
tasks.resize_preview(src, preview)
preview = preview.reload()
Expand Down
52 changes: 22 additions & 30 deletions mkt/developers/tests/test_views_edit.py
Expand Up @@ -801,8 +801,7 @@ def add(self, handle, Video, video_library, num=1):
# Create and post with the formset.
fields = []
for i in xrange(num):
fields.append(self.formset_new_form(caption='hi',
upload_hash=upload_hash,
fields.append(self.formset_new_form(upload_hash=upload_hash,
position=i))
data_formset = self.formset_media(*fields)

Expand Down Expand Up @@ -848,18 +847,19 @@ def test_edit_preview_video_size(self):
@mock.patch('lib.video.tasks.resize_video')
@mock.patch('mimetypes.guess_type', lambda *a: ('video/webm', 'webm'))
def test_edit_preview_video_add(self, resize_video):
eq_(self.get_webapp().previews.count(), 0)
self.preview_video_add()
eq_(str(self.get_webapp().previews.all()[0].caption), 'hi')
eq_(self.get_webapp().previews.count(), 1)

def test_edit_preview_add(self):
eq_(self.get_webapp().previews.count(), 0)
self.preview_add()
eq_(str(self.get_webapp().previews.all()[0].caption), 'hi')
eq_(self.get_webapp().previews.count(), 1)

def test_edit_preview_edit(self):
self.preview_add()
preview = self.get_webapp().previews.all()[0]
edited = {'caption': 'bye',
'upload_hash': 'xxx',
edited = {'upload_hash': 'xxx',
'id': preview.id,
'position': preview.position,
'file_upload': None}
Expand All @@ -868,37 +868,35 @@ def test_edit_preview_edit(self):

self.client.post(self.edit_url, data_formset)

previews = self.get_webapp().previews
eq_(str(previews.all()[0].caption), 'bye')
eq_(previews.count(), 1)
eq_(self.get_webapp().previews.count(), 1)

def test_edit_preview_reorder(self):
self.preview_add(3)

previews = self.get_webapp().previews.all()
previews = list(self.get_webapp().previews.all())

base = dict(upload_hash='xxx', file_upload=None)

# Three preview forms were generated; mix them up here.
a = dict(caption='first', position=1, id=previews[2].id)
b = dict(caption='second', position=2, id=previews[0].id)
c = dict(caption='third', position=3, id=previews[1].id)
a = dict(position=1, id=previews[2].id)
b = dict(position=2, id=previews[0].id)
c = dict(position=3, id=previews[1].id)
a.update(base)
b.update(base)
c.update(base)

# Add them in backwards ("third", "second", "first")
data_formset = self.formset_media({}, *(c, b, a), initial_count=3)
eq_(data_formset['files-0-caption'], 'third')
eq_(data_formset['files-1-caption'], 'second')
eq_(data_formset['files-2-caption'], 'first')
eq_(data_formset['files-0-id'], previews[1].id)
eq_(data_formset['files-1-id'], previews[0].id)
eq_(data_formset['files-2-id'], previews[2].id)

self.client.post(self.edit_url, data_formset)

# They should come out "first", "second", "third".
eq_(self.get_webapp().previews.all()[0].caption, 'first')
eq_(self.get_webapp().previews.all()[1].caption, 'second')
eq_(self.get_webapp().previews.all()[2].caption, 'third')
eq_(self.get_webapp().previews.all()[0].id, previews[2].id)
eq_(self.get_webapp().previews.all()[1].id, previews[0].id)
eq_(self.get_webapp().previews.all()[2].id, previews[1].id)

def test_edit_preview_delete(self):
self.preview_add()
Expand Down Expand Up @@ -1241,8 +1239,7 @@ def test_edit_no_post_as_nonadmin(self):
eq_(self.client.post(self.edit_url).status_code, 403)

def post_contact(self, **kw):
data = {'caption': 'ball so hard that ish cray',
'position': '1',
data = {'position': '1',
'upload_hash': 'abcdef',
'mozilla_contact': 'a@mozilla.com'}
data.update(kw)
Expand Down Expand Up @@ -1291,8 +1288,7 @@ def test_ratings_edit_add(self):
# TODO: Test AdminSettingsForm in test_forms.py.
self.log_in_with('Apps:Configure')

data = {'caption': 'ball so hard that ish cray',
'position': '1',
data = {'position': '1',
'upload_hash': 'abcdef',
'app_ratings': '2'
}
Expand All @@ -1305,8 +1301,7 @@ def test_ratings_edit_add(self):
def test_ratings_edit_add_dupe(self):
self.log_in_with('Apps:Configure')

data = {'caption': 'ball so hard that ish cray',
'position': '1',
data = {'position': '1',
'upload_hash': 'abcdef',
'app_ratings': ('1', '2')
}
Expand All @@ -1319,8 +1314,7 @@ def test_ratings_edit_update(self):
self.log_in_with('Apps:Configure')
webapp = self.get_webapp()
ContentRating.objects.create(addon=webapp, ratings_body=0, rating=2)
data = {'caption': 'ball so hard that ish cray',
'position': '1',
data = {'position': '1',
'upload_hash': 'abcdef',
'app_ratings': '3',
}
Expand Down Expand Up @@ -1355,8 +1349,7 @@ class TestPromoUpload(TestAdmin):
fixtures = TestEdit.fixtures

def post(self, **kw):
data = {'caption': 'ball so hard that ish cray',
'position': '1',
data = {'position': '1',
'upload_hash': 'abcdef'}
data.update(kw)
self.client.post(self.edit_url, data)
Expand All @@ -1370,7 +1363,6 @@ def test_add(self):
eq_(list(webapp.get_previews()), [])

promo = webapp.get_promo()
eq_(promo.caption, '__promo__')
eq_(promo.position, -1)

def test_delete(self):
Expand Down
2 changes: 1 addition & 1 deletion mkt/reviewers/templates/reviewers/includes/details.html
Expand Up @@ -151,7 +151,7 @@ <h2 id="more-about">{{ _('Description') }}</h2>
<h2>{{ _('Image Gallery') }}</h2>
{% for preview in previews %}
<a class="screenshot thumbnail" rel="jquery-lightbox"
href="{{ preview.image_url }}" title="{{ preview.caption }}">
href="{{ preview.image_url }}">
<img src="{{ preview.thumbnail_url }}">
</a>
{% endfor %}
Expand Down
Expand Up @@ -9,7 +9,7 @@
{% for preview in previews %}
<li>
<a class="screenshot thumbnail" rel="jquery-lightbox"
href="{{ preview.image_url }}" title="{{ preview.caption }}">
href="{{ preview.image_url }}">
<img src="{{ preview.thumbnail_url }}">
</a>
</li>
Expand Down
1 change: 0 additions & 1 deletion mkt/site/helpers.py
Expand Up @@ -140,7 +140,6 @@ def product_as_dict(request, product, purchased=None, receipt_type=None,
'fullUrl': jinja2.escape(p.image_url),
'type': jinja2.escape(p.filetype),
'thumbUrl': jinja2.escape(p.thumbnail_url),
'caption': jinja2.escape(p.caption) if p.caption else ''
}
previews.append(preview)
ret.update({'previews': previews})
Expand Down
2 changes: 1 addition & 1 deletion mkt/submit/api.py
Expand Up @@ -153,7 +153,7 @@ class Meta(MarketplaceModelResource.Meta):
list_allowed_methods = ['post']
allowed_methods = ['get', 'delete']
always_return_data = True
fields = ['id', 'filetype', 'caption']
fields = ['id', 'filetype']
authentication = OAuthAuthentication()
authorization = OwnerAuthorization()
resource_name = 'preview'
Expand Down
7 changes: 0 additions & 7 deletions mkt/submit/templates/submit/details.html
Expand Up @@ -142,13 +142,6 @@ <h2 class="output">{{ addon.name }}</h2>
{% endif %}
{{ form.id }}
<span class="js-hidden delete">{{ form.DELETE }}{{ form.DELETE.label_tag() }}</span>
<div class="edit-previews-text">
<label data-for="{{ form.prefix }}-{{ form.caption.name }}" class="above-the-field">
{{ _('Please provide a caption for this:') }}
</label>
{{ form.caption }}
<a href="#" class="remove">x</a>
</div>
<div class="js-hidden position">
{{ form.position }}
</div>
Expand Down
1 change: 0 additions & 1 deletion mkt/webapps/models.py
Expand Up @@ -1248,7 +1248,6 @@ def extract_document(cls, pk, obj=None):
obj.addonuser_set.filter(role=amo.AUTHOR_ROLE_OWNER)]
d['popularity'] = d['_boost'] = len(installed_ids)
d['previews'] = [{'filetype': p.filetype,
'caption': unicode(p.caption),
'image_url': p.image_url,
'thumbnail_url': p.thumbnail_url}
for p in obj.previews.all()]
Expand Down
6 changes: 2 additions & 4 deletions mkt/webapps/tests/test_utils_.py
Expand Up @@ -34,14 +34,12 @@ def test_no_previews(self):
eq_(app_to_dict(self.app)['previews'], [])

def test_with_preview(self):
obj = Preview.objects.create(**{'caption': 'foo',
obj = Preview.objects.create(**{
'filetype': 'image/png', 'thumbtype': 'image/png',
'addon': self.app})
preview = app_to_dict(self.app)['previews'][0]
self.assertSetEqual(preview,
['caption', 'filetype', 'id', 'image_url', 'thumbnail_url',
'resource_uri'])
eq_(preview['caption'], 'foo')
['filetype', 'id', 'image_url', 'thumbnail_url', 'resource_uri'])
eq_(int(preview['id']), obj.pk)

def test_no_rating(self):
Expand Down

0 comments on commit b51493c

Please sign in to comment.