Skip to content

Commit e78f93e

Browse files
committed
Merge pull request #118 from waveaccounting/master
Adds indexes to the OAuth2 related models.
2 parents 5412a45 + d56ad55 commit e78f93e

File tree

2 files changed

+124
-5
lines changed

2 files changed

+124
-5
lines changed
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
# -*- coding: utf-8 -*-
2+
import datetime
3+
from south.db import db
4+
from south.v2 import SchemaMigration
5+
from django.db import models
6+
7+
try:
8+
from django.contrib.auth import get_user_model
9+
except ImportError: # django < 1.5
10+
from django.contrib.auth.models import User
11+
else:
12+
User = get_user_model()
13+
14+
from oauth2_provider.models import get_application_model
15+
ApplicationModel = get_application_model()
16+
17+
18+
class Migration(SchemaMigration):
19+
20+
def forwards(self, orm):
21+
# Adding index on 'RefreshToken', fields ['token']
22+
db.create_index(u'oauth2_provider_refreshtoken', ['token'])
23+
24+
# Adding index on 'Grant', fields ['code']
25+
db.create_index(u'oauth2_provider_grant', ['code'])
26+
27+
# Adding index on 'AccessToken', fields ['token']
28+
db.create_index(u'oauth2_provider_accesstoken', ['token'])
29+
30+
31+
def backwards(self, orm):
32+
# Removing index on 'AccessToken', fields ['token']
33+
db.delete_index(u'oauth2_provider_accesstoken', ['token'])
34+
35+
# Removing index on 'Grant', fields ['code']
36+
db.delete_index(u'oauth2_provider_grant', ['code'])
37+
38+
# Removing index on 'RefreshToken', fields ['token']
39+
db.delete_index(u'oauth2_provider_refreshtoken', ['token'])
40+
41+
42+
models = {
43+
u'auth.group': {
44+
'Meta': {'object_name': 'Group'},
45+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
46+
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
47+
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
48+
},
49+
u'auth.permission': {
50+
'Meta': {'ordering': "(u'content_type__app_label', u'content_type__model', u'codename')", 'unique_together': "((u'content_type', u'codename'),)", 'object_name': 'Permission'},
51+
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
52+
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']"}),
53+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
54+
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
55+
},
56+
u"%s.%s" % (User._meta.app_label, User._meta.object_name): {
57+
'Meta': {'object_name': User.__name__},
58+
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
59+
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
60+
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
61+
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
62+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
63+
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
64+
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
65+
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
66+
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
67+
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
68+
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
69+
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
70+
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
71+
},
72+
u'contenttypes.contenttype': {
73+
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
74+
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
75+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
76+
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
77+
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
78+
},
79+
u'oauth2_provider.accesstoken': {
80+
'Meta': {'object_name': 'AccessToken'},
81+
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (ApplicationModel._meta.app_label, ApplicationModel._meta.object_name)}),
82+
'expires': ('django.db.models.fields.DateTimeField', [], {}),
83+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84+
'scope': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
85+
'token': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
86+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (User._meta.app_label, User._meta.object_name)})
87+
},
88+
u"%s.%s" % (ApplicationModel._meta.app_label, ApplicationModel._meta.object_name): {
89+
'Meta': {'object_name': ApplicationModel.__name__},
90+
'authorization_grant_type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
91+
'client_id': ('django.db.models.fields.CharField', [], {'default': "'30f17d266183cd455bc57ce8548a439db3491353'", 'unique': 'True', 'max_length': '100'}),
92+
'client_secret': ('django.db.models.fields.CharField', [], {'default': "'18e68df61ad8e1af355644ddf6a636b269b6309aafbd2a34d4f5ed6c5562e44c0792c5b2441571e85cbf8a85249dca5537dedb6fd6f60e134f4a60f3865c8395'", 'max_length': '255', 'blank': 'True'}),
93+
'client_type': ('django.db.models.fields.CharField', [], {'max_length': '32'}),
94+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
95+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
96+
'redirect_uris': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
97+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (User._meta.app_label, User._meta.object_name)})
98+
},
99+
u'oauth2_provider.grant': {
100+
'Meta': {'object_name': 'Grant'},
101+
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (ApplicationModel._meta.app_label, ApplicationModel._meta.object_name)}),
102+
'code': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
103+
'expires': ('django.db.models.fields.DateTimeField', [], {}),
104+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
105+
'redirect_uri': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
106+
'scope': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
107+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (User._meta.app_label, User._meta.object_name)})
108+
},
109+
u'oauth2_provider.refreshtoken': {
110+
'Meta': {'object_name': 'RefreshToken'},
111+
'access_token': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'refresh_token'", 'unique': 'True', 'to': u"orm['oauth2_provider.AccessToken']"}),
112+
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (ApplicationModel._meta.app_label, ApplicationModel._meta.object_name)}),
113+
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
114+
'token': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
115+
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['%s.%s']"% (User._meta.app_label, User._meta.object_name)})
116+
}
117+
}
118+
119+
complete_apps = ['oauth2_provider']

oauth2_provider/models.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class AbstractApplication(models.Model):
5959
)
6060

6161
client_id = models.CharField(max_length=100, unique=True,
62-
default=generate_client_id)
62+
default=generate_client_id, db_index=True)
6363
user = models.ForeignKey(AUTH_USER_MODEL)
6464
help_text = _("Allowed URIs list, space separated")
6565
redirect_uris = models.TextField(help_text=help_text,
@@ -68,7 +68,7 @@ class AbstractApplication(models.Model):
6868
authorization_grant_type = models.CharField(max_length=32,
6969
choices=GRANT_TYPES)
7070
client_secret = models.CharField(max_length=255, blank=True,
71-
default=generate_client_secret)
71+
default=generate_client_secret, db_index=True)
7272
name = models.CharField(max_length=255, blank=True)
7373

7474
class Meta:
@@ -135,7 +135,7 @@ class Grant(models.Model):
135135
* :attr:`scope` Required scopes, optional
136136
"""
137137
user = models.ForeignKey(AUTH_USER_MODEL)
138-
code = models.CharField(max_length=255) # code comes from oauthlib
138+
code = models.CharField(max_length=255, db_index=True) # code comes from oauthlib
139139
application = models.ForeignKey(oauth2_settings.APPLICATION_MODEL)
140140
expires = models.DateTimeField()
141141
redirect_uri = models.CharField(max_length=255)
@@ -170,7 +170,7 @@ class AccessToken(models.Model):
170170
* :attr:`scope` Allowed scopes
171171
"""
172172
user = models.ForeignKey(AUTH_USER_MODEL)
173-
token = models.CharField(max_length=255)
173+
token = models.CharField(max_length=255, db_index=True)
174174
application = models.ForeignKey(oauth2_settings.APPLICATION_MODEL)
175175
expires = models.DateTimeField()
176176
scope = models.TextField(blank=True)
@@ -222,7 +222,7 @@ class RefreshToken(models.Model):
222222
bounded to
223223
"""
224224
user = models.ForeignKey(AUTH_USER_MODEL)
225-
token = models.CharField(max_length=255)
225+
token = models.CharField(max_length=255, db_index=True)
226226
application = models.ForeignKey(oauth2_settings.APPLICATION_MODEL)
227227
access_token = models.OneToOneField(AccessToken,
228228
related_name='refresh_token')

0 commit comments

Comments
 (0)