Merged in Joe's django utilities changes

This commit is contained in:
ade@google.com
2010-10-20 17:38:47 -07:00
2 changed files with 39 additions and 36 deletions

36
apiclient/ext/django.py Normal file
View File

@@ -0,0 +1,36 @@
from django.db import models
class OAuthCredentialsField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self):
return 'VARCHAR'
def to_python(self, value):
if value is None:
return None
if isinstance(value, apiclient.oauth.Credentials):
return value
return pickle.loads(base64.b64decode(value))
def get_db_prep_value(self, value):
return base64.b64encode(pickle.dumps(value))
class FlowThreeLeggedField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self):
return 'VARCHAR'
def to_python(self, value):
print "In to_python", value
if value is None:
return None
if isinstance(value, apiclient.oauth.FlowThreeLegged):
return value
return pickle.loads(base64.b64decode(value))
def get_db_prep_value(self, value):
return base64.b64encode(pickle.dumps(value))

View File

@@ -1,48 +1,15 @@
import pickle import pickle
import base64 import base64
import apiclient.oauth
from django.contrib import admin from django.contrib import admin
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from apiclient.ext.django import FlowThreeLeggedField
from apiclient.ext.django import OAuthCredentialsField
# Create your models here. # Create your models here.
class OAuthCredentialsField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self):
return 'VARCHAR'
def to_python(self, value):
if value is None:
return None
if isinstance(value, apiclient.oauth.Credentials):
return value
return pickle.loads(base64.b64decode(value))
def get_db_prep_value(self, value):
return base64.b64encode(pickle.dumps(value))
class FlowThreeLeggedField(models.Field):
__metaclass__ = models.SubfieldBase
def db_type(self):
return 'VARCHAR'
def to_python(self, value):
print "In to_python", value
if value is None:
return None
if isinstance(value, apiclient.oauth.FlowThreeLegged):
return value
return pickle.loads(base64.b64decode(value))
def get_db_prep_value(self, value):
return base64.b64encode(pickle.dumps(value))
# The Flow could also be stored in memcache since it is short lived. # The Flow could also be stored in memcache since it is short lived.
class Flow(models.Model): class Flow(models.Model):
id = models.ForeignKey(User, primary_key=True) id = models.ForeignKey(User, primary_key=True)