Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix migrations when using 1.5+ custom user model #35

Merged
merged 1 commit into from Sep 17, 2013
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 16 additions & 0 deletions app_metrics/compat.py
@@ -0,0 +1,16 @@
from django.conf import settings
import django

__all__ = ['User', 'AUTH_USER_MODEL']

AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')


# Django 1.5+ compatibility
if django.VERSION >= (1, 5):
from django.contrib.auth import get_user_model
User = get_user_model()
username_field = User.USERNAME_FIELD
else:
from django.contrib.auth.models import User
username_field = 'username'
12 changes: 7 additions & 5 deletions app_metrics/migrations/0001_initial.py
Expand Up @@ -4,6 +4,8 @@
from south.v2 import SchemaMigration
from django.db import models

from app_metrics.compat import AUTH_USER_MODEL


class Migration(SchemaMigration):

Expand Down Expand Up @@ -39,7 +41,7 @@ def forwards(self, orm):
db.create_table('app_metrics_metricset_email_recipients', (
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
('metricset', models.ForeignKey(orm['app_metrics.metricset'], null=False)),
('user', models.ForeignKey(orm['auth.user'], null=False))
('user', models.ForeignKey(orm[AUTH_USER_MODEL], null=False))
))
db.create_unique('app_metrics_metricset_email_recipients', ['metricset_id', 'user_id'])

Expand Down Expand Up @@ -146,7 +148,7 @@ def backwards(self, orm):
},
'app_metrics.metricset': {
'Meta': {'object_name': 'MetricSet'},
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}),
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm[AUTH_USER_MODEL]", 'symmetrical': 'False'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'metrics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_metrics.Metric']", 'symmetrical': 'False'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
Expand Down Expand Up @@ -182,8 +184,8 @@ def backwards(self, orm):
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
AUTH_USER_MODEL: {
'Meta': {'object_name': AUTH_USER_MODEL.split('.')[-1]},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
Expand All @@ -207,4 +209,4 @@ def backwards(self, orm):
}
}

complete_apps = ['app_metrics']
complete_apps = ['app_metrics']
10 changes: 6 additions & 4 deletions app_metrics/migrations/0002_alter_created_to_datetime.py
Expand Up @@ -4,6 +4,8 @@
from south.v2 import SchemaMigration
from django.db import models

from app_metrics.compat import AUTH_USER_MODEL


class Migration(SchemaMigration):

Expand Down Expand Up @@ -45,7 +47,7 @@ def backwards(self, orm):
},
'app_metrics.metricset': {
'Meta': {'object_name': 'MetricSet'},
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}),
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm[AUTH_USER_MODEL]", 'symmetrical': 'False'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'metrics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_metrics.Metric']", 'symmetrical': 'False'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
Expand Down Expand Up @@ -81,8 +83,8 @@ def backwards(self, orm):
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
AUTH_USER_MODEL: {
'Meta': {'object_name': AUTH_USER_MODEL.split('.')[-1]},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
Expand All @@ -106,4 +108,4 @@ def backwards(self, orm):
}
}

complete_apps = ['app_metrics']
complete_apps = ['app_metrics']
10 changes: 6 additions & 4 deletions app_metrics/migrations/0003_auto__add_gauge.py
Expand Up @@ -4,6 +4,8 @@
from south.v2 import SchemaMigration
from django.db import models

from app_metrics.compat import AUTH_USER_MODEL


class Migration(SchemaMigration):

Expand Down Expand Up @@ -64,7 +66,7 @@ def backwards(self, orm):
},
'app_metrics.metricset': {
'Meta': {'object_name': 'MetricSet'},
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}),
'email_recipients': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm[AUTH_USER_MODEL]", 'symmetrical': 'False'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'metrics': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['app_metrics.Metric']", 'symmetrical': 'False'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
Expand Down Expand Up @@ -100,8 +102,8 @@ def backwards(self, orm):
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
},
'auth.user': {
'Meta': {'object_name': 'User'},
AUTH_USER_MODEL: {
'Meta': {'object_name': AUTH_USER_MODEL.split('.')[-1]},
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
Expand All @@ -125,4 +127,4 @@ def backwards(self, orm):
}
}

complete_apps = ['app_metrics']
complete_apps = ['app_metrics']
10 changes: 7 additions & 3 deletions app_metrics/models.py
@@ -1,11 +1,10 @@
import datetime

from django.conf import settings
from django.db import models, IntegrityError
from django.template.defaultfilters import slugify
from django.utils.translation import ugettext_lazy as _

USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
from app_metrics.compat import User


class Metric(models.Model):
Expand Down Expand Up @@ -33,11 +32,12 @@ def save(self, *args, **kwargs):
else:
return super(Metric, self).save(*args, **kwargs)


class MetricSet(models.Model):
""" A set of metrics that should be sent via email to certain users """
name = models.CharField(_('name'), max_length=50)
metrics = models.ManyToManyField(Metric, verbose_name=_('metrics'))
email_recipients = models.ManyToManyField(USER_MODEL, verbose_name=_('email recipients'))
email_recipients = models.ManyToManyField(User, verbose_name=_('email recipients'))
no_email = models.BooleanField(_('no e-mail'), default=False)
send_daily = models.BooleanField(_('send daily'), default=True)
send_weekly = models.BooleanField(_('send weekly'), default=False)
Expand All @@ -50,6 +50,7 @@ class Meta:
def __unicode__(self):
return self.name


class MetricItem(models.Model):
""" Individual metric items """
metric = models.ForeignKey(Metric, verbose_name=_('metric'))
Expand All @@ -67,6 +68,7 @@ def __unicode__(self):
'created': self.created
}


class MetricDay(models.Model):
""" Aggregation of Metrics on a per day basis """
metric = models.ForeignKey(Metric, verbose_name=_('metric'))
Expand All @@ -83,6 +85,7 @@ def __unicode__(self):
'created': self.created
}


class MetricWeek(models.Model):
""" Aggregation of Metrics on a weekly basis """
metric = models.ForeignKey(Metric, verbose_name=_('metric'))
Expand All @@ -100,6 +103,7 @@ def __unicode__(self):
'year': self.created.strftime("%Y")
}


class MetricMonth(models.Model):
""" Aggregation of Metrics on monthly basis """
metric = models.ForeignKey(Metric, verbose_name=('metric'))
Expand Down