Repository: mozilla/kitsune

Issue:
Add ability to attach a smaller product logo for product pages
[The PR that replaced the product logos with the "?" SVG](https://github.com/mozilla/kitsune/pull/3255) [appears to have done so on purpose](https://github.com/mozilla/kitsune/pull/3255/files#diff-9fb8e903b164ade55bd42033512b9b29R21).

Are there mockups showing what should be used in place of the "?" SVG?

[original comment](https://github.com/mozilla/kitsune/pull/3312#issuecomment-421391396)


Discussion:
cc @madasan
cc @grailean
For reference, here's [a link to the dev server](https://dev.sumo.moz.works/en-US/products/firefox) showing an example of the missing(?) logo treatment.

(For George - notice the "? Firefox" underneath the search bar. Is this intentional or should there be a logo there?)
@jpetto the ? icon was intentional, in my design is different arranged and the icon is grayish.  
What does this mean and was this sent personally to me...

> What does this mean and was this sent personally to me...

@teeshirtman88 looks like [you are following this repo](https://github.com/mozilla/kitsune/watchers?page=3), so by default I believe you get notifications on new issues. You can change your notifications on this repo by going to the "Watch" menu near the top right of the screen. Hope that helps!
Archive of product icons sized for this specific layout:

https://www.dropbox.com/s/120m4nottujckq3/product_icons.zip?dl=0

Resolving patch:
diff --git a/kitsune/products/migrations/0003_auto_20181001_1347.py b/kitsune/products/migrations/0003_auto_20181001_1347.py
new file mode 100644
--- /dev/null
+++ b/kitsune/products/migrations/0003_auto_20181001_1347.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('products', '0002_topic_in_aaq'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='product',
+            name='image_alternate',
+            field=models.ImageField(help_text='Used everywhere except the home page. Must be 96x96.', max_length=250, null=True, upload_to=b'uploads/products/', blank=True),
+        ),
+        migrations.AlterField(
+            model_name='product',
+            name='image',
+            field=models.ImageField(help_text='Used on the the home page. Must be 484x244.', max_length=250, null=True, upload_to=b'uploads/products/', blank=True),
+        ),
+    ]
diff --git a/kitsune/products/models.py b/kitsune/products/models.py
--- a/kitsune/products/models.py
+++ b/kitsune/products/models.py
@@ -19,7 +19,12 @@ class Product(ModelBase):
                               blank=True,
                               max_length=settings.MAX_FILEPATH_LENGTH,
                               # no l10n in admin
-                              help_text=u'The image must be 96x96.')
+                              help_text=u'Used on the the home page. Must be 484x244.')
+    image_alternate = models.ImageField(upload_to=settings.PRODUCT_IMAGE_PATH, null=True,
+                                        blank=True,
+                                        max_length=settings.MAX_FILEPATH_LENGTH,
+                                        help_text=(u'Used everywhere except the home '
+                                                   'page. Must be 96x96.'))
     image_offset = models.IntegerField(default=None, null=True, editable=False)
     image_cachebuster = models.CharField(max_length=32, default=None,
                                          null=True, editable=False)
@@ -48,6 +53,13 @@ def image_url(self):
             return self.image.url
         return os.path.join(settings.STATIC_URL, 'products', 'img', 'product_placeholder.png')
 
+    @property
+    def image_alternate_url(self):
+        if self.image_alternate:
+            return self.image_alternate.url
+        return os.path.join(settings.STATIC_URL, 'products', 'img',
+                            'product_placeholder_alternate.png')
+
     def questions_enabled(self, locale):
         return self.questions_locales.filter(locale=locale).exists()
 


Test patch: