Skip to content

Commit

Permalink
[fix bug 1162907] Add campaign in desktop snippets and stats ping.
Browse files Browse the repository at this point in the history
  • Loading branch information
glogiotatidis committed May 11, 2015
1 parent 6a8b352 commit c1462c8
Show file tree
Hide file tree
Showing 4 changed files with 149 additions and 3 deletions.
2 changes: 1 addition & 1 deletion snippets/base/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class SnippetAdmin(BaseSnippetAdmin):
filter_horizontal = ('exclude_from_search_providers', 'client_match_rules', 'countries')

fieldsets = (
(None, {'fields': ('name', 'priority', 'disabled',
(None, {'fields': ('name', 'priority', 'disabled', 'campaign',
'created', 'modified')}),
('Content', {
'fields': ('template', 'data'),
Expand Down
138 changes: 138 additions & 0 deletions snippets/base/migrations/0021_auto__add_field_snippet_campaign.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding field 'Snippet.campaign'
db.add_column(u'base_snippet', 'campaign',
self.gf('django.db.models.fields.CharField')(default='', max_length=255, blank=True),
keep_default=False)


def backwards(self, orm):
# Deleting field 'Snippet.campaign'
db.delete_column(u'base_snippet', 'campaign')


models = {
u'base.clientmatchrule': {
'Meta': {'ordering': "('-modified',)", 'object_name': 'ClientMatchRule'},
'appbuildid': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'build_target': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'channel': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'description': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
'distribution': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'distribution_version': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'is_exclusion': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'locale': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'name': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'os_version': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'startpage_version': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'}),
'version': ('snippets.base.fields.RegexField', [], {'max_length': '255', 'blank': 'True'})
},
u'base.jsonsnippet': {
'Meta': {'ordering': "('-modified',)", 'object_name': 'JSONSnippet'},
'client_match_rules': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['base.ClientMatchRule']", 'symmetrical': 'False', 'blank': 'True'}),
'countries': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['base.TargetedCountry']", 'symmetrical': 'False', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'disabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'icon': ('django.db.models.fields.TextField', [], {}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
'on_aurora': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_beta': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_nightly': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_release': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'on_startpage_1': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'priority': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
'publish_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'publish_start': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'text': ('django.db.models.fields.CharField', [], {'max_length': '140'}),
'url': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
'weight': ('django.db.models.fields.IntegerField', [], {'default': '100'})
},
u'base.jsonsnippetlocale': {
'Meta': {'object_name': 'JSONSnippetLocale'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'locale': ('snippets.base.fields.LocaleField', [], {'default': "'en-US'", 'max_length': '32'}),
'snippet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locale_set'", 'to': u"orm['base.JSONSnippet']"})
},
u'base.searchprovider': {
'Meta': {'ordering': "('id',)", 'object_name': 'SearchProvider'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'identifier': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
},
u'base.snippet': {
'Meta': {'ordering': "('-modified',)", 'object_name': 'Snippet'},
'campaign': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '255', 'blank': 'True'}),
'client_match_rules': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['base.ClientMatchRule']", 'symmetrical': 'False', 'blank': 'True'}),
'countries': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['base.TargetedCountry']", 'symmetrical': 'False', 'blank': 'True'}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'data': ('django.db.models.fields.TextField', [], {'default': "'{}'"}),
'disabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'exclude_from_search_providers': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['base.SearchProvider']", 'symmetrical': 'False', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
'on_aurora': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_beta': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_nightly': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_release': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'on_startpage_1': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
'on_startpage_2': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'on_startpage_3': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'on_startpage_4': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
'priority': ('django.db.models.fields.IntegerField', [], {'default': '0', 'blank': 'True'}),
'publish_end': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'publish_start': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'template': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['base.SnippetTemplate']"}),
'weight': ('django.db.models.fields.IntegerField', [], {'default': '100'})
},
u'base.snippetlocale': {
'Meta': {'object_name': 'SnippetLocale'},
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'locale': ('snippets.base.fields.LocaleField', [], {'default': "'en-US'", 'max_length': '32'}),
'snippet': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'locale_set'", 'to': u"orm['base.Snippet']"})
},
u'base.snippettemplate': {
'Meta': {'object_name': 'SnippetTemplate'},
'code': ('django.db.models.fields.TextField', [], {}),
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
},
u'base.snippettemplatevariable': {
'Meta': {'object_name': 'SnippetTemplateVariable'},
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'template': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'variable_set'", 'to': u"orm['base.SnippetTemplate']"}),
'type': ('django.db.models.fields.IntegerField', [], {'default': '0'})
},
u'base.targetedcountry': {
'Meta': {'ordering': "('id',)", 'object_name': 'TargetedCountry'},
'code': ('snippets.base.fields.CountryField', [], {'default': "u'us'", 'unique': 'True', 'max_length': '16'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
},
u'base.uploadedfile': {
'Meta': {'object_name': 'UploadedFile'},
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'modified': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
}
}

complete_apps = ['base']
3 changes: 3 additions & 0 deletions snippets/base/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,8 @@ class Snippet(CachingMixin, SnippetBaseModel):
exclude_from_search_providers = models.ManyToManyField(
'SearchProvider', blank=True, verbose_name='Excluded Search Providers')

campaign = models.CharField(max_length=255, blank=True, default='',
help_text='Optional campaign name. Will be added in the stats ping.')
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)

Expand All @@ -347,6 +349,7 @@ def render(self):
# Use a list for attrs to make the output order predictable.
attrs = [('data-snippet-id', self.id),
('data-weight', self.weight),
('data-campaign', self.campaign),
('class', 'snippet-metadata')]

if self.id:
Expand Down
9 changes: 7 additions & 2 deletions snippets/base/templates/base/includes/snippet_js.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,13 @@
}

var show_snippet_id = 'unknown';
var show_snippet_campaign = '';
if (metaParent) {
show_snippet_id = metaParent.dataset.snippetId || 'unknown';
show_snippet_campaign = metaParent.dataset.campaign || '';
}
document.getElementById('snippet_set').setAttribute('data-snippet-id', show_snippet_id);
document.getElementById('snippet_set').setAttribute('data-campaign', show_snippet_campaign);
sendImpression();

// Trigger show_snippet event on snippet node.
Expand Down Expand Up @@ -397,9 +400,11 @@

var snippet_set = document.getElementById('snippet_set');
var locale = snippet_set.getAttribute('data-locale');
var userCountry = snippet_set.getAttribute('data-user-country');
var userCountry = snippet_set.getAttribute('data-user-country') || '';
var campaign = snippet_set.getAttribute('data-campaign') || '';
var snippet_id = snippet_set.getAttribute('data-snippet-id');
var url = SNIPPET_METRICS_URL + '?snippet_name=' + snippet_id + '&locale=' + locale + '&country=' + userCountry + '&metric=' + metric;
var url = (SNIPPET_METRICS_URL + '?snippet_name=' + snippet_id +
'&locale=' + locale + '&country=' + userCountry + '&metric=' + metric + '&campaign=' + campaign);
var r = new XMLHttpRequest();
r.open('GET', url);
if (callback) {
Expand Down

0 comments on commit c1462c8

Please sign in to comment.