Merge branch 'master' of github.com:Gluejar/regluit
commit
63203ae129
|
@ -4,3 +4,4 @@
|
|||
settings/me.*
|
||||
*.dot
|
||||
reports
|
||||
ENV
|
||||
|
|
43
README.md
43
README.md
|
@ -16,7 +16,7 @@ Here are some instructions for setting up regluit for development on
|
|||
an Ubuntu system. If you are on OS X see notes below
|
||||
to install python-setuptools in step 1:
|
||||
|
||||
1. `aptitude install python-setuptools`
|
||||
1. `aptitude install python-setuptools git`
|
||||
1. `sudo easy_install virtualenv virtualenvwrapper`
|
||||
1. `git clone git@github.com:Gluejar/regluit.git`
|
||||
1. `cd regluit`
|
||||
|
@ -32,9 +32,44 @@ to install python-setuptools in step 1:
|
|||
1. `django-admin.py runserver 0.0.0.0:8000` (you can change the port number from the default value of 8000)
|
||||
1. point your browser at http://localhost:8000/
|
||||
|
||||
OS X
|
||||
-------
|
||||
You should have XCode installed
|
||||
Production Deployment
|
||||
---------------------
|
||||
|
||||
Below are the steps for getting regluit running on EC2 with Apache and mod_wsgi, and talking to an Amazon Relational Data Store instance.
|
||||
|
||||
1. create an ubuntu natty ec2 instance using ami-1aad5273
|
||||
1. `sudo aptitude update`
|
||||
1. `sudo aptitude upgrade`
|
||||
1. `sudo aptitude install git apache libapache2-mod-wsgi mysql-client python-virtualenv python-mysqldb`
|
||||
1. `sudo mkdir /opt/regluit`
|
||||
1. `sudo chown ubuntu:ubuntu /opt/regluit`
|
||||
1. `cd /opt`
|
||||
1. `git config --global user.name "Ed Summers"`
|
||||
1. `git config --global user.email "ehs@pobox.com"`
|
||||
1. `ssh-keygen`
|
||||
1. add `~/.ssh/id_rsa.pub` as a deploy key on github
|
||||
1. `git clone git@github.com:Gluejar/regluit.git`
|
||||
1. `cd /opt/regluit`
|
||||
1. `cp settings/dev.py settings/prod.py`
|
||||
1. create an Amazon RDS instance
|
||||
1. connect to it, e.g. `mysql -u root -h gluejardb.cboagmr25pjs.us-east-1.rds.amazonaws.com -p`
|
||||
1. `CREATE DATABASE unglueit CHARSET utf8;`
|
||||
1. `GRANT ALL ON unglueit.* TO ‘unglueit’@’ip-10-244-250-168.ec2.internal’ IDENTIFIED BY 'unglueit' REQUIRE SSL`
|
||||
1. update settings/prod.py with database credentials
|
||||
1. `virtualenv --no-site-packages ENV`
|
||||
1. `source ENV/bin/activate`
|
||||
1. `pip install -r requirements.pip`
|
||||
1. `echo "/opt/" > ENV/lib/python2.7/site-packages/regluit.pth`
|
||||
1. `django-admin.py syncdb --migrate --settings regluit.settings.prod`
|
||||
1. `sudo ln -s /opt/regluit/deploy/regluit.conf /etc/apache2/sites-available/regluit`
|
||||
1. `sudo a2ensite regluit`
|
||||
1. `sudo /etc/init.d/apache2 restart`
|
||||
|
||||
|
||||
OS X Develper Notes
|
||||
-------------------
|
||||
|
||||
To run regluit on OS X you should have XCode installed
|
||||
|
||||
Install virtualenvwrapper according
|
||||
to the process at http://blog.praveengollakota.com/47430655:
|
||||
|
|
|
@ -88,13 +88,6 @@ class SubjectResource(ModelResource):
|
|||
queryset = models.Subject.objects.all()
|
||||
resource_name = 'subject'
|
||||
|
||||
class EditionCoverResource(ModelResource):
|
||||
edition = fields.ToManyField(EditionResource, 'editions')
|
||||
class Meta:
|
||||
authentication = ApiKeyAuthentication()
|
||||
queryset = models.EditionCover.objects.all()
|
||||
resource_name = 'editioncover'
|
||||
|
||||
class WishlistResource(ModelResource):
|
||||
user = fields.ToOneField(UserResource, 'user')
|
||||
works = fields.ToManyField(WorkResource, 'works')
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import json
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.client import Client
|
||||
|
@ -10,13 +11,13 @@ from regluit.core import bookloader, models
|
|||
class ApiTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
edition = bookloader.add_book(isbn='0441012035')
|
||||
edition = bookloader.add_by_isbn(isbn='0441012035')
|
||||
campaign = models.Campaign.objects.create(
|
||||
name=edition.work.title,
|
||||
work=edition.work,
|
||||
description='Test Campaign',
|
||||
deadline=datetime.datetime.now(),
|
||||
target=1000.0,
|
||||
target=Decimal('1000.00'),
|
||||
)
|
||||
self.user = User.objects.create_user('test', 'test@example.com', 'testpass')
|
||||
self.client = Client()
|
||||
|
|
|
@ -7,7 +7,6 @@ v1_api = Api(api_name='v1')
|
|||
v1_api.register(resources.UserResource())
|
||||
v1_api.register(resources.WorkResource())
|
||||
v1_api.register(resources.EditionResource())
|
||||
v1_api.register(resources.EditionCoverResource())
|
||||
v1_api.register(resources.CampaignResource())
|
||||
v1_api.register(resources.AuthorResource())
|
||||
v1_api.register(resources.SubjectResource())
|
||||
|
|
|
@ -1,8 +1,3 @@
|
|||
"""
|
||||
The module handles fetching books from OpenLibrary and adding them
|
||||
to the local database.
|
||||
"""
|
||||
|
||||
import json
|
||||
import logging
|
||||
|
||||
|
@ -10,94 +5,62 @@ import requests
|
|||
from django.conf import settings
|
||||
|
||||
from regluit.core import models
|
||||
from regluit.core.isbn import convert_10_to_13
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def add_book(isbn):
|
||||
url = "http://openlibrary.org/api/books"
|
||||
bibkeys = "ISBN:%s" % isbn
|
||||
params = {"bibkeys": bibkeys, "jscmd": "details", "format": "json"}
|
||||
results = _get_json(url, params)
|
||||
|
||||
edition = None
|
||||
if results.has_key(bibkeys):
|
||||
logger.info("saving book info for %s", isbn)
|
||||
edition = _save_edition(results[bibkeys]['details'])
|
||||
elif len(isbn) == 10:
|
||||
isbn_13 = convert_10_to_13(isbn)
|
||||
logger.info("lookup failed for %s trying isbn13 %s", isbn, isbn_13)
|
||||
edition = add_book(isbn_13)
|
||||
else:
|
||||
logger.info("lookup failed for %s", isbn)
|
||||
def add_by_isbn(isbn):
|
||||
url = "https://www.googleapis.com/books/v1/volumes"
|
||||
results = _get_json(url, {"q": "isbn:%s" % isbn})
|
||||
|
||||
return edition
|
||||
if not results.has_key('items') or len(results['items']) == 0:
|
||||
logger.warn("no google hits for %s" % isbn)
|
||||
return None
|
||||
|
||||
return add_by_googlebooks_id(results['items'][0]['id'])
|
||||
|
||||
|
||||
def _save_edition(edition_data):
|
||||
edition_key = edition_data['key']
|
||||
edition, created = models.Edition.objects.get_or_create(openlibrary_id=edition_key)
|
||||
edition.title = edition_data.get('title')
|
||||
edition.description = edition_data.get('description')
|
||||
edition.publisher = _first(edition_data, 'publishers')
|
||||
edition.publication_date = edition_data.get('publish_date')
|
||||
def add_by_googlebooks_id(googlebooks_id):
|
||||
url = "https://www.googleapis.com/books/v1/volumes/%s" % googlebooks_id
|
||||
d = _get_json(url)['volumeInfo']
|
||||
|
||||
# assumption: OL has only one isbn_10 or isbn_13 for an edition
|
||||
edition.isbn_10 = _first(edition_data, 'isbn_10')
|
||||
edition.isbn_13 = _first(edition_data, 'isbn_13')
|
||||
e, created = models.Edition.objects.get_or_create(googlebooks_id=googlebooks_id)
|
||||
if not created:
|
||||
return e
|
||||
|
||||
edition.save()
|
||||
e.title = d.get('title')
|
||||
e.description = d.get('description')
|
||||
e.publisher = d.get('publisher')
|
||||
e.publication_date = d.get('publishedDate')
|
||||
|
||||
for work_data in edition_data.get('works', []):
|
||||
_save_work(work_data['key'], edition)
|
||||
for i in d.get('industryIdentifiers', []):
|
||||
if i['type'] == 'ISBN_10':
|
||||
e.isbn_10 = i['identifier']
|
||||
elif i['type'] == 'ISBN_13':
|
||||
e.isbn_13 = i['identifier']
|
||||
|
||||
for cover_id in edition_data.get('covers', []):
|
||||
models.EditionCover.objects.get_or_create(openlibrary_id=cover_id, edition=edition)
|
||||
for a in d.get('authors', []):
|
||||
a, created = models.Author.objects.get_or_create(name=a)
|
||||
a.editions.add(e)
|
||||
|
||||
return edition
|
||||
for s in d.get('categories', []):
|
||||
s, created = models.Subject.objects.get_or_create(name=s)
|
||||
s.editions.add(e)
|
||||
|
||||
# add a stub Work for the edition
|
||||
if e.work == None:
|
||||
w = models.Work.objects.create(title=e.title)
|
||||
w.editions.add(e)
|
||||
|
||||
def _save_work(work_key, edition):
|
||||
url = "http://openlibrary.org" + work_key
|
||||
work_data = _get_json(url)
|
||||
|
||||
work, created = models.Work.objects.get_or_create(openlibrary_id=work_key)
|
||||
work.title = work_data.get('title')
|
||||
work.save()
|
||||
|
||||
for author_data in work_data.get('authors', []):
|
||||
_save_author(author_data['author']['key'], work)
|
||||
|
||||
for subject_name in work_data.get('subjects', []):
|
||||
subject, created = models.Subject.objects.get_or_create(name=subject_name)
|
||||
work.subjects.add(subject)
|
||||
|
||||
work.editions.add(edition)
|
||||
|
||||
return work
|
||||
|
||||
|
||||
def _save_author(author_key, work):
|
||||
url = "http://openlibrary.org" + author_key
|
||||
author_data = _get_json(url)
|
||||
|
||||
author, created = models.Author.objects.get_or_create(openlibrary_id=author_key)
|
||||
author.name = author_data['name']
|
||||
author.save()
|
||||
|
||||
author.works.add(work)
|
||||
|
||||
return author
|
||||
|
||||
|
||||
def _first(dictionary, key):
|
||||
l = dictionary.get(key, [])
|
||||
if len(l) == 0: return None
|
||||
return l[0]
|
||||
return e
|
||||
|
||||
|
||||
def _get_json(url, params={}):
|
||||
headers = {'User-Agent': settings.USER_AGENT, 'Accept': 'application/json'}
|
||||
# TODO: should X-Forwarded-For change based on the request from client?
|
||||
headers = {'User-Agent': settings.USER_AGENT,
|
||||
'Accept': 'application/json',
|
||||
'X-Forwarded-For': '69.174.114.214'}
|
||||
params['key'] = settings.GOOGLE_BOOKS_API_KEY
|
||||
response = requests.get(url, params=params, headers=headers)
|
||||
if response.status_code == 200:
|
||||
return json.loads(response.content)
|
||||
|
|
|
@ -9,8 +9,8 @@ class Command(BaseCommand):
|
|||
def handle(self, filename, **options):
|
||||
for isbn in open(filename):
|
||||
isbn = isbn.strip()
|
||||
edition = bookloader.add_book(isbn)
|
||||
edition = bookloader.add_by_isbn(isbn)
|
||||
if edition:
|
||||
print edition
|
||||
print "loaded %s as %s" % (isbn, edition)
|
||||
else:
|
||||
print "failed to load book for %s" % isbn
|
||||
|
|
|
@ -11,52 +11,102 @@ class Migration(SchemaMigration):
|
|||
# Adding model 'Campaign'
|
||||
db.create_table('core_campaign', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('description', self.gf('django.db.models.fields.CharField')(max_length=10000)),
|
||||
('target', self.gf('django.db.models.fields.FloatField')()),
|
||||
('description', self.gf('django.db.models.fields.TextField')()),
|
||||
('target', self.gf('django.db.models.fields.DecimalField')(max_digits=14, decimal_places=2)),
|
||||
('deadline', self.gf('django.db.models.fields.DateTimeField')()),
|
||||
('activated', self.gf('django.db.models.fields.DateTimeField')(null=True)),
|
||||
('suspended', self.gf('django.db.models.fields.DateTimeField')(null=True)),
|
||||
('withdrawn', self.gf('django.db.models.fields.DateTimeField')(null=True)),
|
||||
('supended_reason', self.gf('django.db.models.fields.TextField')(null=True)),
|
||||
('withdrawn_reason', self.gf('django.db.models.fields.TextField')(null=True)),
|
||||
('paypal_receiver', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)),
|
||||
('amazon_receiver', self.gf('django.db.models.fields.CharField')(max_length=100, null=True)),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='campaign', to=orm['core.Work'])),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='campaigns', to=orm['core.Work'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Campaign'])
|
||||
|
||||
# Adding model 'Work'
|
||||
db.create_table('core_work', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('title', self.gf('django.db.models.fields.CharField')(max_length=1000)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('title', self.gf('django.db.models.fields.CharField')(max_length=1000)),
|
||||
('openlibrary_id', self.gf('django.db.models.fields.CharField')(max_length=50, null=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['Work'])
|
||||
|
||||
# Adding model 'Edition'
|
||||
db.create_table('core_edition', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('title', self.gf('django.db.models.fields.CharField')(max_length=1000)),
|
||||
('publisher', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('year', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='editions', to=orm['core.Work'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Edition'])
|
||||
|
||||
# Adding model 'Identifier'
|
||||
db.create_table('core_identifier', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Edition'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Identifier'])
|
||||
|
||||
# Adding model 'Author'
|
||||
db.create_table('core_author', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='authors', to=orm['core.Edition'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Author'])
|
||||
|
||||
# Adding M2M table for field editions on 'Author'
|
||||
db.create_table('core_author_editions', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('author', models.ForeignKey(orm['core.author'], null=False)),
|
||||
('edition', models.ForeignKey(orm['core.edition'], null=False))
|
||||
))
|
||||
db.create_unique('core_author_editions', ['author_id', 'edition_id'])
|
||||
|
||||
# Adding model 'Subject'
|
||||
db.create_table('core_subject', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
))
|
||||
db.send_create_signal('core', ['Subject'])
|
||||
|
||||
# Adding M2M table for field editions on 'Subject'
|
||||
db.create_table('core_subject_editions', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('subject', models.ForeignKey(orm['core.subject'], null=False)),
|
||||
('edition', models.ForeignKey(orm['core.edition'], null=False))
|
||||
))
|
||||
db.create_unique('core_subject_editions', ['subject_id', 'edition_id'])
|
||||
|
||||
# Adding model 'Edition'
|
||||
db.create_table('core_edition', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('googlebooks_id', self.gf('django.db.models.fields.CharField')(max_length=50)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('title', self.gf('django.db.models.fields.CharField')(max_length=1000)),
|
||||
('description', self.gf('django.db.models.fields.TextField')(default='', null=True)),
|
||||
('publisher', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('publication_date', self.gf('django.db.models.fields.CharField')(max_length=50)),
|
||||
('isbn_10', self.gf('django.db.models.fields.CharField')(max_length=10, null=True)),
|
||||
('isbn_13', self.gf('django.db.models.fields.CharField')(max_length=13, null=True)),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='editions', null=True, to=orm['core.Work'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Edition'])
|
||||
|
||||
# Adding model 'Wishlist'
|
||||
db.create_table('core_wishlist', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('user', self.gf('django.db.models.fields.related.OneToOneField')(related_name='wishlist', unique=True, to=orm['auth.User'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Wishlist'])
|
||||
|
||||
# Adding M2M table for field works on 'Wishlist'
|
||||
db.create_table('core_wishlist_works', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('wishlist', models.ForeignKey(orm['core.wishlist'], null=False)),
|
||||
('work', models.ForeignKey(orm['core.work'], null=False))
|
||||
))
|
||||
db.create_unique('core_wishlist_works', ['wishlist_id', 'work_id'])
|
||||
|
||||
# Adding model 'UserProfile'
|
||||
db.create_table('core_userprofile', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)),
|
||||
('tagline', self.gf('django.db.models.fields.CharField')(max_length=140, blank=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['UserProfile'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
|
@ -66,54 +116,130 @@ class Migration(SchemaMigration):
|
|||
# Deleting model 'Work'
|
||||
db.delete_table('core_work')
|
||||
|
||||
# Deleting model 'Edition'
|
||||
db.delete_table('core_edition')
|
||||
|
||||
# Deleting model 'Identifier'
|
||||
db.delete_table('core_identifier')
|
||||
|
||||
# Deleting model 'Author'
|
||||
db.delete_table('core_author')
|
||||
|
||||
# Removing M2M table for field editions on 'Author'
|
||||
db.delete_table('core_author_editions')
|
||||
|
||||
# Deleting model 'Subject'
|
||||
db.delete_table('core_subject')
|
||||
|
||||
# Removing M2M table for field editions on 'Subject'
|
||||
db.delete_table('core_subject_editions')
|
||||
|
||||
# Deleting model 'Edition'
|
||||
db.delete_table('core_edition')
|
||||
|
||||
# Deleting model 'Wishlist'
|
||||
db.delete_table('core_wishlist')
|
||||
|
||||
# Removing M2M table for field works on 'Wishlist'
|
||||
db.delete_table('core_wishlist_works')
|
||||
|
||||
# Deleting model 'UserProfile'
|
||||
db.delete_table('core_userprofile')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'authors'", 'to': "orm['core.Edition']"}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'editions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'activated': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
'supended_reason': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'suspended': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'target': ('django.db.models.fields.DecimalField', [], {'max_digits': '14', 'decimal_places': '2'}),
|
||||
'withdrawn': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'withdrawn_reason': ('django.db.models.fields.TextField', [], {'null': 'True'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaigns'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
|
||||
'googlebooks_id': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
|
||||
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"}),
|
||||
'year': ('django.db.models.fields.CharField', [], {'max_length': '10'})
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'null': 'True', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'editions': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.userprofile': {
|
||||
'Meta': {'object_name': 'UserProfile'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'tagline': ('django.db.models.fields.CharField', [], {'max_length': '140', 'blank': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,149 +0,0 @@
|
|||
# encoding: 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 model 'Wishlist'
|
||||
db.create_table('core_wishlist', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('user', self.gf('django.db.models.fields.related.OneToOneField')(related_name='wishlist', unique=True, to=orm['auth.User'])),
|
||||
))
|
||||
db.send_create_signal('core', ['Wishlist'])
|
||||
|
||||
# Adding M2M table for field works on 'Wishlist'
|
||||
db.create_table('core_wishlist_works', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('wishlist', models.ForeignKey(orm['core.wishlist'], null=False)),
|
||||
('work', models.ForeignKey(orm['core.work'], null=False))
|
||||
))
|
||||
db.create_unique('core_wishlist_works', ['wishlist_id', 'work_id'])
|
||||
|
||||
# Adding field 'Author.created'
|
||||
db.add_column('core_author', 'created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2011, 9, 1, 22, 52, 7, 412736), blank=True), keep_default=False)
|
||||
|
||||
# Changing field 'Author.edition'
|
||||
db.alter_column('core_author', 'edition_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['core.Edition']))
|
||||
|
||||
# Adding field 'Campaign.created'
|
||||
db.add_column('core_campaign', 'created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2011, 9, 1, 22, 52, 41, 752714), blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'Identifier.created'
|
||||
db.add_column('core_identifier', 'created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.datetime(2011, 9, 1, 22, 52, 54, 12735), blank=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'Wishlist'
|
||||
db.delete_table('core_wishlist')
|
||||
|
||||
# Removing M2M table for field works on 'Wishlist'
|
||||
db.delete_table('core_wishlist_works')
|
||||
|
||||
# Deleting field 'Author.created'
|
||||
db.delete_column('core_author', 'created')
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Author.edition'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Author.edition' and its values cannot be restored.")
|
||||
|
||||
# Deleting field 'Campaign.created'
|
||||
db.delete_column('core_campaign', 'created')
|
||||
|
||||
# Deleting field 'Identifier.created'
|
||||
db.delete_column('core_identifier', 'created')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'authors'", 'null': 'True', 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"}),
|
||||
'year': ('django.db.models.fields.CharField', [], {'max_length': '10'})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,109 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Changing field 'Author.edition'
|
||||
db.alter_column('core_author', 'edition_id', self.gf('django.db.models.fields.related.ForeignKey')(default='', to=orm['core.Edition']))
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'Author.edition'
|
||||
db.alter_column('core_author', 'edition_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['core.Edition']))
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'authors'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"}),
|
||||
'year': ('django.db.models.fields.CharField', [], {'max_length': '10'})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,175 +0,0 @@
|
|||
# encoding: 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 model 'Subject'
|
||||
db.create_table('core_subject', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
))
|
||||
db.send_create_signal('core', ['Subject'])
|
||||
|
||||
# Adding M2M table for field works on 'Subject'
|
||||
db.create_table('core_subject_works', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('subject', models.ForeignKey(orm['core.subject'], null=False)),
|
||||
('work', models.ForeignKey(orm['core.work'], null=False))
|
||||
))
|
||||
db.create_unique('core_subject_works', ['subject_id', 'work_id'])
|
||||
|
||||
# Deleting field 'Edition.year'
|
||||
db.delete_column('core_edition', 'year')
|
||||
|
||||
# Adding field 'Edition.description'
|
||||
db.add_column('core_edition', 'description', self.gf('django.db.models.fields.TextField')(default=''), keep_default=False)
|
||||
|
||||
# Adding field 'Edition.publication_date'
|
||||
db.add_column('core_edition', 'publication_date', self.gf('django.db.models.fields.CharField')(default=datetime.datetime(2011, 9, 9, 0, 23, 21, 713964), max_length=50), keep_default=False)
|
||||
|
||||
# Adding field 'Edition.page_count'
|
||||
db.add_column('core_edition', 'page_count', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
|
||||
|
||||
# Deleting field 'Author.edition'
|
||||
db.delete_column('core_author', 'edition_id')
|
||||
|
||||
# Adding M2M table for field works on 'Author'
|
||||
db.create_table('core_author_works', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('author', models.ForeignKey(orm['core.author'], null=False)),
|
||||
('work', models.ForeignKey(orm['core.work'], null=False))
|
||||
))
|
||||
db.create_unique('core_author_works', ['author_id', 'work_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'Subject'
|
||||
db.delete_table('core_subject')
|
||||
|
||||
# Removing M2M table for field works on 'Subject'
|
||||
db.delete_table('core_subject_works')
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Edition.year'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Edition.year' and its values cannot be restored.")
|
||||
|
||||
# Deleting field 'Edition.description'
|
||||
db.delete_column('core_edition', 'description')
|
||||
|
||||
# Deleting field 'Edition.publication_date'
|
||||
db.delete_column('core_edition', 'publication_date')
|
||||
|
||||
# Deleting field 'Edition.page_count'
|
||||
db.delete_column('core_edition', 'page_count')
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Author.edition'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Author.edition' and its values cannot be restored.")
|
||||
|
||||
# Removing M2M table for field works on 'Author'
|
||||
db.delete_table('core_author_works')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,119 +0,0 @@
|
|||
# encoding: 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 'Edition.language'
|
||||
db.add_column('core_edition', 'language', self.gf('django.db.models.fields.CharField')(default='eng', max_length=5), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'Edition.language'
|
||||
db.delete_column('core_edition', 'language')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'language': ('django.db.models.fields.CharField', [], {'max_length': '5'}),
|
||||
'page_count': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,123 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Deleting field 'Edition.language'
|
||||
db.delete_column('core_edition', 'language')
|
||||
|
||||
# Deleting field 'Edition.page_count'
|
||||
db.delete_column('core_edition', 'page_count')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Edition.language'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Edition.language' and its values cannot be restored.")
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Edition.page_count'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Edition.page_count' and its values cannot be restored.")
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.identifier': {
|
||||
'Meta': {'object_name': 'Identifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,137 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Deleting model 'Identifier'
|
||||
db.delete_table('core_identifier')
|
||||
|
||||
# Adding model 'EditionIdentifier'
|
||||
db.create_table('core_editionidentifier', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Edition'])),
|
||||
))
|
||||
db.send_create_signal('core', ['EditionIdentifier'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding model 'Identifier'
|
||||
db.create_table('core_identifier', (
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Edition'])),
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['Identifier'])
|
||||
|
||||
# Deleting model 'EditionIdentifier'
|
||||
db.delete_table('core_editionidentifier')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editionidentifier': {
|
||||
'Meta': {'object_name': 'EditionIdentifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,132 +0,0 @@
|
|||
# encoding: 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 model 'WorkIdentifier'
|
||||
db.create_table('core_workidentifier', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Work'])),
|
||||
))
|
||||
db.send_create_signal('core', ['WorkIdentifier'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'WorkIdentifier'
|
||||
db.delete_table('core_workidentifier')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editionidentifier': {
|
||||
'Meta': {'object_name': 'EditionIdentifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
},
|
||||
'core.workidentifier': {
|
||||
'Meta': {'object_name': 'WorkIdentifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Work']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,136 +0,0 @@
|
|||
# encoding: 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 model 'EditionCover'
|
||||
db.create_table('core_editioncover', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('openlibrary_id', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='covers', to=orm['core.Edition'])),
|
||||
))
|
||||
db.send_create_signal('core', ['EditionCover'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'EditionCover'
|
||||
db.delete_table('core_editioncover')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editioncover': {
|
||||
'Meta': {'object_name': 'EditionCover'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'covers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'core.editionidentifier': {
|
||||
'Meta': {'object_name': 'EditionIdentifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
},
|
||||
'core.workidentifier': {
|
||||
'Meta': {'object_name': 'WorkIdentifier'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'identifiers'", 'to': "orm['core.Work']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,170 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Deleting model 'EditionIdentifier'
|
||||
db.delete_table('core_editionidentifier')
|
||||
|
||||
# Deleting model 'WorkIdentifier'
|
||||
db.delete_table('core_workidentifier')
|
||||
|
||||
# Adding field 'Work.openlibrary_id'
|
||||
db.add_column('core_work', 'openlibrary_id', self.gf('django.db.models.fields.CharField')(max_length=50, null=True), keep_default=False)
|
||||
|
||||
# Adding field 'Edition.isbn_10'
|
||||
db.add_column('core_edition', 'isbn_10', self.gf('django.db.models.fields.CharField')(max_length=10, null=True), keep_default=False)
|
||||
|
||||
# Adding field 'Edition.isbn_13'
|
||||
db.add_column('core_edition', 'isbn_13', self.gf('django.db.models.fields.CharField')(max_length=13, null=True), keep_default=False)
|
||||
|
||||
# Adding field 'Edition.openlibrary_id'
|
||||
db.add_column('core_edition', 'openlibrary_id', self.gf('django.db.models.fields.CharField')(max_length=50, null=True), keep_default=False)
|
||||
|
||||
# Adding field 'Author.openlibrary_id'
|
||||
db.add_column('core_author', 'openlibrary_id', self.gf('django.db.models.fields.CharField')(max_length=50, null=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding model 'EditionIdentifier'
|
||||
db.create_table('core_editionidentifier', (
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('edition', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Edition'])),
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['EditionIdentifier'])
|
||||
|
||||
# Adding model 'WorkIdentifier'
|
||||
db.create_table('core_workidentifier', (
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=10)),
|
||||
('created', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('work', self.gf('django.db.models.fields.related.ForeignKey')(related_name='identifiers', to=orm['core.Work'])),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=500)),
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['WorkIdentifier'])
|
||||
|
||||
# Deleting field 'Work.openlibrary_id'
|
||||
db.delete_column('core_work', 'openlibrary_id')
|
||||
|
||||
# Deleting field 'Edition.isbn_10'
|
||||
db.delete_column('core_edition', 'isbn_10')
|
||||
|
||||
# Deleting field 'Edition.isbn_13'
|
||||
db.delete_column('core_edition', 'isbn_13')
|
||||
|
||||
# Deleting field 'Edition.openlibrary_id'
|
||||
db.delete_column('core_edition', 'openlibrary_id')
|
||||
|
||||
# Deleting field 'Author.openlibrary_id'
|
||||
db.delete_column('core_author', 'openlibrary_id')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaign'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
|
||||
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editioncover': {
|
||||
'Meta': {'object_name': 'EditionCover'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'covers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,126 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Changing field 'Edition.description'
|
||||
db.alter_column('core_edition', 'description', self.gf('django.db.models.fields.TextField')(null=True))
|
||||
|
||||
# Changing field 'Edition.work'
|
||||
db.alter_column('core_edition', 'work_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['core.Work']))
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'Edition.description'
|
||||
db.alter_column('core_edition', 'description', self.gf('django.db.models.fields.TextField')())
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'Edition.work'
|
||||
raise RuntimeError("Cannot reverse this migration. 'Edition.work' and its values cannot be restored.")
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaigns'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
|
||||
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'null': 'True', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editioncover': {
|
||||
'Meta': {'object_name': 'EditionCover'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'covers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,131 +0,0 @@
|
|||
# encoding: 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 model 'UserProfile'
|
||||
db.create_table('core_userprofile', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], unique=True)),
|
||||
('tagline', self.gf('django.db.models.fields.CharField')(max_length=140, blank=True)),
|
||||
))
|
||||
db.send_create_signal('core', ['UserProfile'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'UserProfile'
|
||||
db.delete_table('core_userprofile')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.FloatField', [], {}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaigns'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
|
||||
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'null': 'True', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editioncover': {
|
||||
'Meta': {'object_name': 'EditionCover'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'covers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.userprofile': {
|
||||
'Meta': {'object_name': 'UserProfile'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'tagline': ('django.db.models.fields.CharField', [], {'max_length': '140', 'blank': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'unique': 'True'})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
|
@ -1,132 +0,0 @@
|
|||
# encoding: 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):
|
||||
|
||||
# Changing field 'Campaign.target'
|
||||
db.alter_column('core_campaign', 'target', self.gf('django.db.models.fields.DecimalField')(max_digits=14, decimal_places=2))
|
||||
|
||||
# Changing field 'UserProfile.user'
|
||||
db.alter_column('core_userprofile', 'user_id', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True))
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'Campaign.target'
|
||||
db.alter_column('core_campaign', 'target', self.gf('django.db.models.fields.FloatField')())
|
||||
|
||||
# Changing field 'UserProfile.user'
|
||||
db.alter_column('core_userprofile', 'user_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], unique=True))
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'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'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'core.author': {
|
||||
'Meta': {'object_name': 'Author'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'authors'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.campaign': {
|
||||
'Meta': {'object_name': 'Campaign'},
|
||||
'amazon_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'deadline': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '10000'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'paypal_receiver': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True'}),
|
||||
'target': ('django.db.models.fields.DecimalField', [], {'max_digits': '14', 'decimal_places': '2'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'campaigns'", 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.edition': {
|
||||
'Meta': {'object_name': 'Edition'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'default': "''", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'isbn_10': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
|
||||
'isbn_13': ('django.db.models.fields.CharField', [], {'max_length': '13', 'null': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'publication_date': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
|
||||
'publisher': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'work': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'editions'", 'null': 'True', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.editioncover': {
|
||||
'Meta': {'object_name': 'EditionCover'},
|
||||
'edition': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'covers'", 'to': "orm['core.Edition']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'core.subject': {
|
||||
'Meta': {'object_name': 'Subject'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'subjects'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.userprofile': {
|
||||
'Meta': {'object_name': 'UserProfile'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'tagline': ('django.db.models.fields.CharField', [], {'max_length': '140', 'blank': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'})
|
||||
},
|
||||
'core.wishlist': {
|
||||
'Meta': {'object_name': 'Wishlist'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.OneToOneField', [], {'related_name': "'wishlist'", 'unique': 'True', 'to': "orm['auth.User']"}),
|
||||
'works': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'wishlists'", 'symmetrical': 'False', 'to': "orm['core.Work']"})
|
||||
},
|
||||
'core.work': {
|
||||
'Meta': {'object_name': 'Work'},
|
||||
'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'openlibrary_id': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '1000'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['core']
|
109
core/models.py
109
core/models.py
|
@ -1,20 +1,95 @@
|
|||
import random
|
||||
import datetime
|
||||
from decimal import Decimal
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import Q
|
||||
from django.contrib.auth.models import User
|
||||
from decimal import Decimal
|
||||
|
||||
class UnglueitError(RuntimeError):
|
||||
pass
|
||||
|
||||
class Campaign(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
name = models.CharField(max_length=500, null=False)
|
||||
description = models.CharField(max_length=10000, null=False)
|
||||
description = models.TextField(null=False)
|
||||
target = models.DecimalField(max_digits=14, decimal_places=2)
|
||||
deadline = models.DateTimeField(null=False)
|
||||
activated = models.DateTimeField(null=True)
|
||||
suspended = models.DateTimeField(null=True)
|
||||
withdrawn = models.DateTimeField(null=True)
|
||||
supended_reason = models.TextField(null=True)
|
||||
withdrawn_reason = models.TextField(null=True)
|
||||
paypal_receiver = models.CharField(max_length=100, null=True)
|
||||
amazon_receiver = models.CharField(max_length=100, null=True)
|
||||
work = models.ForeignKey("Work", related_name="campaigns")
|
||||
work = models.ForeignKey("Work", related_name="campaigns", null=False)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"Campaign for %s" % self.work.title
|
||||
try:
|
||||
return u"Campaign for %s" % self.work.title
|
||||
except:
|
||||
return u"Campaign %s (no associated work)" % self.name
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
"""Returns the status of the campaign
|
||||
"""
|
||||
now = datetime.datetime.utcnow()
|
||||
|
||||
if self.activated is None:
|
||||
return 'INITIALIZED'
|
||||
elif self.suspended is not None:
|
||||
return 'SUSPENDED'
|
||||
elif self.withdrawn is not None:
|
||||
return 'WITHDRAWN'
|
||||
elif self.deadline < now:
|
||||
if self.current_total >= self.target:
|
||||
return 'SUCCESSFUL'
|
||||
else:
|
||||
return 'UNSUCCESSFUL'
|
||||
else:
|
||||
return 'ACTIVE'
|
||||
|
||||
@property
|
||||
def current_total(self):
|
||||
p = PaymentManager()
|
||||
return p.query_campaign(campaign=self,summary=True)
|
||||
|
||||
def activate(self):
|
||||
status = self.status
|
||||
if status != 'INITIALIZED':
|
||||
raise UnglueitError('Campaign needs to be initialized in order to be activated')
|
||||
self.activated = datetime.datetime.utcnow()
|
||||
self.save()
|
||||
return self
|
||||
|
||||
def suspend(self, reason):
|
||||
status = self.status
|
||||
if status != 'ACTIVE':
|
||||
raise UnglueitError('Campaign needs to be active in order to be suspended')
|
||||
self.suspended = datetime.datetime.utcnow()
|
||||
self.supended_reason = reason
|
||||
self.save()
|
||||
return self
|
||||
|
||||
def withdraw(self, reason):
|
||||
status = self.status
|
||||
if status != 'ACTIVE':
|
||||
raise UnglueitError('Campaign needs to be active in order to be withdrawn')
|
||||
self.withdrawn = datetime.datetime.utcnow()
|
||||
self.withdrawn_reason = reason
|
||||
self.save()
|
||||
return self
|
||||
|
||||
def resume(self):
|
||||
"""Change campaign status from SUSPENDED to ACTIVE. We may want to track reason for resuming and track history"""
|
||||
status = self.status
|
||||
if status != 'SUSPENDED':
|
||||
raise UnglueitError('Campaign needs to be suspended in order to be resumed')
|
||||
self.suspended = None
|
||||
self.suspended_reason = None
|
||||
self.save()
|
||||
return self
|
||||
|
||||
|
||||
class Work(models.Model):
|
||||
|
@ -22,15 +97,10 @@ class Work(models.Model):
|
|||
title = models.CharField(max_length=1000)
|
||||
openlibrary_id = models.CharField(max_length=50, null=True)
|
||||
|
||||
@classmethod
|
||||
def get_by_isbn(klass, isbn):
|
||||
for w in Work.objects.filter(Q(editions__isbn_10=isbn) | Q(editions__isbn_13=isbn)):
|
||||
return w
|
||||
return None
|
||||
|
||||
def cover_image_small(self):
|
||||
first_isbn = self.editions.all()[0].isbn_10
|
||||
return "http://covers.openlibrary.org/b/isbn/%s-S.jpg" % first_isbn
|
||||
server_id = random.randint(0, 9)
|
||||
gb_id = self.editions.all()[0].googlebooks_id
|
||||
return "http://bks%i.books.google.com/books?id=%s&printsec=frontcover&img=1&zoom=5" % (server_id, gb_id)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.title
|
||||
|
@ -39,8 +109,7 @@ class Work(models.Model):
|
|||
class Author(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
name = models.CharField(max_length=500)
|
||||
openlibrary_id = models.CharField(max_length=50, null=True)
|
||||
works = models.ManyToManyField("Work", related_name="authors")
|
||||
editions = models.ManyToManyField("Edition", related_name="authors")
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
@ -49,13 +118,14 @@ class Author(models.Model):
|
|||
class Subject(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
name = models.CharField(max_length=500)
|
||||
works = models.ManyToManyField("Work", related_name="subjects")
|
||||
editions = models.ManyToManyField("Edition", related_name="subjects")
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Edition(models.Model):
|
||||
googlebooks_id = models.CharField(max_length=50, null=False)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
title = models.CharField(max_length=1000)
|
||||
description = models.TextField(default='', null=True)
|
||||
|
@ -63,11 +133,10 @@ class Edition(models.Model):
|
|||
publication_date = models.CharField(max_length=50)
|
||||
isbn_10 = models.CharField(max_length=10, null=True)
|
||||
isbn_13 = models.CharField(max_length=13, null=True)
|
||||
openlibrary_id = models.CharField(max_length=50, null=True)
|
||||
work = models.ForeignKey("Work", related_name="editions", null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.title
|
||||
return "%s (%s)" % (self.title, self.isbn_13)
|
||||
|
||||
@classmethod
|
||||
def get_by_isbn(klass, isbn):
|
||||
|
@ -75,11 +144,6 @@ class Edition(models.Model):
|
|||
return e
|
||||
return None
|
||||
|
||||
class EditionCover(models.Model):
|
||||
openlibrary_id = models.IntegerField()
|
||||
edition = models.ForeignKey("Edition", related_name="covers")
|
||||
|
||||
|
||||
class Wishlist(models.Model):
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
user = models.OneToOneField(User, related_name='wishlist')
|
||||
|
@ -90,3 +154,4 @@ class UserProfile(models.Model):
|
|||
tagline = models.CharField(max_length=140, blank=True)
|
||||
|
||||
from regluit.core import signals
|
||||
from regluit.payment.manager import PaymentManager
|
||||
|
|
|
@ -13,7 +13,7 @@ def gluejar_search(q):
|
|||
r = {'title': v.get('title', ""),
|
||||
'description': v.get('description', ""),
|
||||
'publisher': v.get('publisher', ""),
|
||||
'google_id': item.get('selfLink')}
|
||||
'googlebooks_id': item.get('id')}
|
||||
|
||||
# TODO: allow multiple authors
|
||||
if v.has_key('authors') and len(v['authors']) > 0:
|
||||
|
|
131
core/tests.py
131
core/tests.py
|
@ -1,46 +1,50 @@
|
|||
from django.test import TestCase
|
||||
from decimal import Decimal as D
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from django.test import TestCase
|
||||
from django.utils import unittest
|
||||
from django.db import IntegrityError
|
||||
|
||||
from regluit.payment.models import Transaction
|
||||
from regluit.core.models import Campaign, Work, UnglueitError
|
||||
from regluit.core import bookloader, models, search
|
||||
from regluit.payment.parameters import PAYMENT_TYPE_AUTHORIZATION
|
||||
|
||||
class TestBooks(TestCase):
|
||||
|
||||
def test_add_book(self):
|
||||
# edition
|
||||
edition = bookloader.add_book(isbn='0441012035')
|
||||
edition = bookloader.add_by_isbn('0441012035')
|
||||
self.assertEqual(edition.title, 'Neuromancer')
|
||||
self.assertEqual(edition.publication_date, '2004')
|
||||
self.assertEqual(edition.publisher, 'Ace Books')
|
||||
self.assertEqual(edition.isbn_10, '0441012035')
|
||||
self.assertEqual(edition.isbn_13, None)
|
||||
self.assertEqual(edition.openlibrary_id, "/books/OL3305354M")
|
||||
|
||||
# edition covers
|
||||
covers = edition.covers.all()
|
||||
self.assertEqual(len(covers), 1)
|
||||
self.assertEqual(covers[0].openlibrary_id, 284192)
|
||||
|
||||
# work
|
||||
work = edition.work
|
||||
self.assertTrue(work)
|
||||
self.assertEqual(work.authors.all()[0].name, 'William F. Gibson')
|
||||
self.assertEqual(edition.isbn_13, '9780441012039')
|
||||
self.assertEqual(edition.googlebooks_id, "2NyiPwAACAAJ")
|
||||
|
||||
# subjects
|
||||
subject_names = [subject.name for subject in work.subjects.all()]
|
||||
self.assertEqual(len(subject_names), 18)
|
||||
self.assertTrue('Fiction' in subject_names)
|
||||
subject_names = [subject.name for subject in edition.subjects.all()]
|
||||
self.assertEqual(len(subject_names), 11)
|
||||
self.assertTrue('Japan' in subject_names)
|
||||
|
||||
# authors
|
||||
author_names = [author.name for author in work.authors.all()]
|
||||
self.assertEqual(len(author_names), 1)
|
||||
self.assertEqual(author_names[0], "William F. Gibson")
|
||||
self.assertEqual(edition.authors.all().count(), 1)
|
||||
self.assertEqual(edition.authors.all()[0].name, 'William Gibson')
|
||||
|
||||
# work
|
||||
self.assertTrue(edition.work)
|
||||
|
||||
def test_double_add(self):
|
||||
bookloader.add_book(isbn='0441012035')
|
||||
bookloader.add_book(isbn='0441012035')
|
||||
bookloader.add_by_isbn('0441012035')
|
||||
bookloader.add_by_isbn('0441012035')
|
||||
self.assertEqual(models.Edition.objects.all().count(), 1)
|
||||
self.assertEqual(models.Author.objects.all().count(), 1)
|
||||
self.assertEqual(models.Work.objects.all().count(), 1)
|
||||
self.assertEqual(models.Subject.objects.all().count(), 18)
|
||||
self.assertEqual(models.Subject.objects.all().count(), 11)
|
||||
|
||||
def test_missing_isbn(self):
|
||||
e = bookloader.add_by_isbn('0139391401')
|
||||
self.assertEqual(e, None)
|
||||
|
||||
class SearchTests(TestCase):
|
||||
|
||||
|
@ -55,7 +59,88 @@ class SearchTests(TestCase):
|
|||
self.assertTrue(r.has_key('image'))
|
||||
self.assertTrue(r.has_key('publisher'))
|
||||
self.assertTrue(r.has_key('isbn_10'))
|
||||
self.assertTrue(r.has_key('googlebooks_id'))
|
||||
|
||||
def test_googlebooks_search(self):
|
||||
response = search.googlebooks_search('melville')
|
||||
self.assertEqual(len(response['items']), 10)
|
||||
|
||||
|
||||
class CampaignTests(TestCase):
|
||||
|
||||
def test_required_fields(self):
|
||||
# a campaign must have a target, deadline and a work
|
||||
|
||||
c = Campaign()
|
||||
self.assertRaises(IntegrityError, c.save)
|
||||
|
||||
c = Campaign(target=D('1000.00'))
|
||||
self.assertRaises(IntegrityError, c.save)
|
||||
|
||||
c = Campaign(target=D('1000.00'), deadline=datetime(2012, 1, 1))
|
||||
self.assertRaises(IntegrityError, c.save)
|
||||
|
||||
#w = Work()
|
||||
#w.save()
|
||||
#c = Campaign(target=D('1000.00'), deadline=datetime(2012, 1, 1), work=w)
|
||||
#c.save()
|
||||
|
||||
|
||||
def test_campaign_status(self):
|
||||
w = Work()
|
||||
w.save()
|
||||
# INITIALIZED
|
||||
c1 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
|
||||
c1.save()
|
||||
self.assertEqual(c1.status, 'INITIALIZED')
|
||||
# ACTIVATED
|
||||
c2 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
|
||||
c2.save()
|
||||
self.assertEqual(c2.status, 'INITIALIZED')
|
||||
c2.activate()
|
||||
self.assertEqual(c2.status, 'ACTIVE')
|
||||
# SUSPENDED
|
||||
c2.suspend(reason="for testing")
|
||||
self.assertEqual(c2.status, 'SUSPENDED')
|
||||
# RESUMING
|
||||
c2.resume()
|
||||
self.assertEqual(c2.suspended, None)
|
||||
self.assertEqual(c2.status,'ACTIVE')
|
||||
# should not let me suspend a campaign that hasn't been initialized
|
||||
self.assertRaises(UnglueitError, c1.suspend, "for testing")
|
||||
# UNSUCCESSFUL
|
||||
c3 = Campaign(target=D('1000.00'),deadline=datetime.utcnow() - timedelta(days=1),work=w)
|
||||
c3.save()
|
||||
c3.activate()
|
||||
self.assertEqual(c3.status, 'UNSUCCESSFUL')
|
||||
# SUCCESSFUL
|
||||
c4 = Campaign(target=D('1000.00'),deadline=datetime.utcnow() - timedelta(days=1),work=w)
|
||||
c4.save()
|
||||
c4.activate()
|
||||
|
||||
t = Transaction()
|
||||
t.amount = D('1234.00')
|
||||
t.type = PAYMENT_TYPE_AUTHORIZATION
|
||||
t.status = 'ACTIVE'
|
||||
t.campaign = c4
|
||||
t.save()
|
||||
self.assertEqual(c4.status, 'SUCCESSFUL')
|
||||
|
||||
# ACTIVE
|
||||
c4.deadline = datetime.utcnow() + timedelta(days=1)
|
||||
c4.save()
|
||||
self.assertEqual(c4.status, 'ACTIVE')
|
||||
|
||||
# WITHDRAWN
|
||||
c5 = Campaign(target=D('1000.00'),deadline=datetime(2012,1,1),work=w)
|
||||
c5.save()
|
||||
c5.activate().withdraw('testing')
|
||||
self.assertEqual(c5.status, 'WITHDRAWN')
|
||||
|
||||
def suite():
|
||||
|
||||
testcases = [TestBooks, SearchTests, CampaignTests]
|
||||
suites = unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(testcase) for testcase in testcases])
|
||||
return suites
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
WSGIPythonHome /opt/regluit/ENV
|
||||
WSGISocketPrefix /opt/regluit
|
||||
WSGIDaemonProcess regluit-wsgi-app processes=4 threads=4 python-eggs=/tmp/regluit-python-eggs
|
||||
WSGIScriptAlias / /opt/regluit/deploy/regluit.wsgi
|
||||
|
||||
<Directory /opt/regluit/static>
|
||||
Options Indexes FollowSymLinks
|
||||
AllowOverride None
|
||||
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Directory>
|
||||
|
||||
Alias /static /opt/regluit/static
|
|
@ -1,10 +1,8 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import socket
|
||||
|
||||
import django.core.handlers.wsgi
|
||||
|
||||
hostname = socket.gethostname()
|
||||
os.environ['DJANGO_SETTING_MODULE'] = 'regluit.settings_%s' % hostname
|
||||
application = django.core.handlers.wsgi.WSGIHander()
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'regluit.settings.prod'
|
||||
application = django.core.handlers.wsgi.WSGIHandler()
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django import forms
|
||||
from django.db import models
|
||||
#from django.forms import Form, ModelForm, Textarea, CharField, ValidationError, RegexField
|
||||
from regluit.core.models import UserProfile
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
|
|
@ -6,9 +6,9 @@ $(document).ready(function() {
|
|||
$(".add-wishlist").each(function (index, element) {
|
||||
$(element).click(function() {
|
||||
var span = $(element).find("span");
|
||||
var isbn = span.attr('id')
|
||||
if (!isbn) return;
|
||||
$.post('/wishlist/', {'isbn': isbn}, function(data) {
|
||||
var gb_id = span.attr('id')
|
||||
if (!gb_id) return;
|
||||
$.post('/wishlist/', {'googlebooks_id': gb_id}, function(data) {
|
||||
span.fadeOut();
|
||||
var newSpan = $("<span>On Your Wishlist!</span>").hide();
|
||||
span.replaceWith(newSpan);
|
||||
|
@ -68,7 +68,7 @@ $(document).ready(function() {
|
|||
{% if result.on_wishlist %}
|
||||
<span>On Your Wishlist!</span>
|
||||
{% else %}
|
||||
<span id="{{ result.isbn_10 }}">Add to Wishlist</span>
|
||||
<span id="{{ result.googlebooks_id }}">Add to Wishlist</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="booklist-status">
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
"""
|
||||
This file demonstrates two different styles of tests (one doctest and one
|
||||
unittest). These will both pass when you run "manage.py test".
|
||||
|
||||
Replace these with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.client import Client
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.failUnlessEqual(1 + 1, 2)
|
||||
class WishlistTests(TestCase):
|
||||
|
||||
__test__ = {"doctest": """
|
||||
Another way to test that 1 + 1 is equal to 2.
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_user('test', 'test@example.org', 'test')
|
||||
self.client = Client()
|
||||
self.client.login(username='test', password='test')
|
||||
|
||||
>>> 1 + 1 == 2
|
||||
True
|
||||
"""}
|
||||
def test_add_remove(self):
|
||||
# add a book to the wishlist
|
||||
r = self.client.post("/wishlist/", {"googlebooks_id": "2NyiPwAACAAJ"},
|
||||
HTTP_X_REQUESTED_WITH="XMLHttpRequest")
|
||||
self.assertEqual(r.status_code, 302)
|
||||
self.assertEqual(self.user.wishlist.works.all().count(), 1)
|
||||
|
||||
# remove the book
|
||||
r = self.client.post("/wishlist/", {"remove_work_id": "1"},
|
||||
HTTP_X_REQUESTED_WITH="XMLHttpRequest")
|
||||
self.assertEqual(self.user.wishlist.works.all().count(), 0)
|
||||
|
|
|
@ -50,14 +50,16 @@ def search(request):
|
|||
q = request.GET.get('q', None)
|
||||
results = gluejar_search(q)
|
||||
|
||||
# flag search result as on wishlist
|
||||
# TODO: make this better and faster
|
||||
# flag search result as on wishlist as appropriate
|
||||
if not request.user.is_anonymous():
|
||||
# get a list of all the googlebooks_ids for works on the user's wishlist
|
||||
wishlist = request.user.wishlist
|
||||
editions = models.Edition.objects.filter(work__wishlists__in=[wishlist])
|
||||
googlebooks_ids = [e['googlebooks_id'] for e in editions.values('googlebooks_id')]
|
||||
|
||||
# if the results is on their wishlist flag it
|
||||
for result in results:
|
||||
if not result.has_key('isbn_10'):
|
||||
continue
|
||||
work = models.Work.get_by_isbn(result['isbn_10'])
|
||||
if work and work in request.user.wishlist.works.all():
|
||||
if result['googlebooks_id'] in googlebooks_ids:
|
||||
result['on_wishlist'] = True
|
||||
else:
|
||||
result['on_wishlist'] = False
|
||||
|
@ -69,20 +71,15 @@ def search(request):
|
|||
return render(request, 'search.html', context)
|
||||
|
||||
# TODO: perhaps this functionality belongs in the API?
|
||||
@csrf_exempt
|
||||
@require_POST
|
||||
@login_required
|
||||
@csrf_exempt
|
||||
def wishlist(request):
|
||||
isbn = request.POST.get('isbn', None)
|
||||
googlebooks_id = request.POST.get('googlebooks_id', None)
|
||||
remove_work_id = request.POST.get('remove_work_id', None)
|
||||
if isbn:
|
||||
edition = models.Edition.get_by_isbn(isbn)
|
||||
if not edition:
|
||||
print "loading book"
|
||||
edition = bookloader.add_book(isbn)
|
||||
if edition:
|
||||
print "adding edition"
|
||||
request.user.wishlist.works.add(edition.work)
|
||||
if googlebooks_id:
|
||||
edition = bookloader.add_by_googlebooks_id(googlebooks_id)
|
||||
request.user.wishlist.works.add(edition.work)
|
||||
# TODO: redirect to work page, when it exists
|
||||
return HttpResponseRedirect('/')
|
||||
elif remove_work_id:
|
||||
|
|
|
@ -108,8 +108,8 @@ class PaymentManager( object ):
|
|||
authorized_list = []
|
||||
|
||||
if summary:
|
||||
pledged_amount = 0.0
|
||||
authorized_amount = 0.0
|
||||
pledged_amount = D('0.00')
|
||||
authorized_amount = D('0.00')
|
||||
|
||||
for t in pledged_list:
|
||||
for r in t.receiver_set.all():
|
||||
|
@ -174,7 +174,7 @@ class PaymentManager( object ):
|
|||
return value: either a float summary or a list of transactions
|
||||
|
||||
'''
|
||||
def query_campaign(self, list, summary=False, pledged=True, authorized=True):
|
||||
def query_list(self, list, summary=False, pledged=True, authorized=True):
|
||||
|
||||
transactions = Transaction.objects.filter(list=list)
|
||||
return self.run_query(transactions, summary, pledged, authorized)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from regluit.payment.parameters import *
|
||||
from django.conf import settings
|
||||
from regluit.payment.models import Transaction
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import simplejson as json
|
||||
|
@ -92,16 +93,16 @@ class Pay( object ):
|
|||
def __init__( self, transaction):
|
||||
|
||||
headers = {
|
||||
'X-PAYPAL-SECURITY-USERID':PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':PAYPAL_APPID,
|
||||
'X-PAYPAL-SECURITY-USERID':settings.PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':settings.PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':settings.PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':settings.PAYPAL_APPID,
|
||||
'X-PAYPAL-REQUEST-DATA-FORMAT':'JSON',
|
||||
'X-PAYPAL-RESPONSE-DATA-FORMAT':'JSON'
|
||||
}
|
||||
|
||||
return_url = BASE_URL + COMPLETE_URL
|
||||
cancel_url = BASE_URL + CANCEL_URL
|
||||
return_url = settings.BASE_URL + COMPLETE_URL
|
||||
cancel_url = settings.BASE_URL + CANCEL_URL
|
||||
logger.info("Return URL: " + return_url)
|
||||
logger.info("Cancel URL: " + cancel_url)
|
||||
|
||||
|
@ -131,7 +132,7 @@ class Pay( object ):
|
|||
'returnUrl': return_url,
|
||||
'cancelUrl': cancel_url,
|
||||
'requestEnvelope': { 'errorLanguage': 'en_US' },
|
||||
'ipnNotificationUrl': BASE_URL + 'paypalipn'
|
||||
'ipnNotificationUrl': settings.BASE_URL + 'paypalipn'
|
||||
}
|
||||
|
||||
if transaction.reference:
|
||||
|
@ -139,7 +140,7 @@ class Pay( object ):
|
|||
|
||||
self.raw_request = json.dumps(data)
|
||||
|
||||
self.raw_response = url_request( PAYPAL_ENDPOINT, "/AdaptivePayments/Pay", data=self.raw_request, headers=headers ).content()
|
||||
self.raw_response = url_request(settings.PAYPAL_ENDPOINT, "/AdaptivePayments/Pay", data=self.raw_request, headers=headers ).content()
|
||||
logger.info("paypal PAY response was: %s" % self.raw_response)
|
||||
self.response = json.loads( self.raw_response )
|
||||
logger.info(self.response)
|
||||
|
@ -165,7 +166,7 @@ class Pay( object ):
|
|||
return self.response['payKey']
|
||||
|
||||
def next_url( self ):
|
||||
return '%s?cmd=_ap-payment&paykey=%s' % ( PAYPAL_PAYMENT_HOST, self.response['payKey'] )
|
||||
return '%s?cmd=_ap-payment&paykey=%s' % (settings.PAYPAL_PAYMENT_HOST, self.response['payKey'] )
|
||||
|
||||
|
||||
class CancelPreapproval(object):
|
||||
|
@ -173,10 +174,10 @@ class CancelPreapproval(object):
|
|||
def __init__(self, transaction):
|
||||
|
||||
headers = {
|
||||
'X-PAYPAL-SECURITY-USERID':PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':PAYPAL_APPID,
|
||||
'X-PAYPAL-SECURITY-USERID':settings.PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':settings.PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':settings.PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':settings.PAYPAL_APPID,
|
||||
'X-PAYPAL-REQUEST-DATA-FORMAT':'JSON',
|
||||
'X-PAYPAL-RESPONSE-DATA-FORMAT':'JSON',
|
||||
}
|
||||
|
@ -187,7 +188,7 @@ class CancelPreapproval(object):
|
|||
}
|
||||
|
||||
self.raw_request = json.dumps(data)
|
||||
self.raw_response = url_request(PAYPAL_ENDPOINT, "/AdaptivePayments/CancelPreapproval", data=self.raw_request, headers=headers ).content()
|
||||
self.raw_response = url_request(settings.PAYPAL_ENDPOINT, "/AdaptivePayments/CancelPreapproval", data=self.raw_request, headers=headers ).content()
|
||||
logger.info("paypal CANCEL PREAPPROBAL response was: %s" % self.raw_response)
|
||||
self.response = json.loads( self.raw_response )
|
||||
logger.info(self.response)
|
||||
|
@ -217,16 +218,16 @@ class Preapproval( object ):
|
|||
def __init__( self, transaction, amount ):
|
||||
|
||||
headers = {
|
||||
'X-PAYPAL-SECURITY-USERID':PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':PAYPAL_APPID,
|
||||
'X-PAYPAL-SECURITY-USERID':settings.PAYPAL_USERNAME,
|
||||
'X-PAYPAL-SECURITY-PASSWORD':settings.PAYPAL_PASSWORD,
|
||||
'X-PAYPAL-SECURITY-SIGNATURE':settings.PAYPAL_SIGNATURE,
|
||||
'X-PAYPAL-APPLICATION-ID':settings.PAYPAL_APPID,
|
||||
'X-PAYPAL-REQUEST-DATA-FORMAT':'JSON',
|
||||
'X-PAYPAL-RESPONSE-DATA-FORMAT':'JSON',
|
||||
}
|
||||
|
||||
return_url = BASE_URL + COMPLETE_URL
|
||||
cancel_url = BASE_URL + CANCEL_URL
|
||||
return_url = settings.BASE_URL + COMPLETE_URL
|
||||
cancel_url = settings.BASE_URL + CANCEL_URL
|
||||
|
||||
# set the expiration date for the preapproval
|
||||
now = datetime.datetime.utcnow()
|
||||
|
@ -245,11 +246,11 @@ class Preapproval( object ):
|
|||
'returnUrl': return_url,
|
||||
'cancelUrl': cancel_url,
|
||||
'requestEnvelope': { 'errorLanguage': 'en_US' },
|
||||
'ipnNotificationUrl': BASE_URL + 'paypalipn'
|
||||
'ipnNotificationUrl': settings.BASE_URL + 'paypalipn'
|
||||
}
|
||||
|
||||
self.raw_request = json.dumps(data)
|
||||
self.raw_response = url_request(PAYPAL_ENDPOINT, "/AdaptivePayments/Preapproval", data=self.raw_request, headers=headers ).content()
|
||||
self.raw_response = url_request(settings.PAYPAL_ENDPOINT, "/AdaptivePayments/Preapproval", data=self.raw_request, headers=headers ).content()
|
||||
logger.info("paypal PREAPPROVAL response was: %s" % self.raw_response)
|
||||
self.response = json.loads( self.raw_response )
|
||||
logger.info(self.response)
|
||||
|
@ -261,7 +262,7 @@ class Preapproval( object ):
|
|||
return None
|
||||
|
||||
def next_url( self ):
|
||||
return '%s?cmd=_ap-preapproval&preapprovalkey=%s' % ( PAYPAL_PAYMENT_HOST, self.response['preapprovalKey'] )
|
||||
return '%s?cmd=_ap-preapproval&preapprovalkey=%s' % ( settings.PAYPAL_PAYMENT_HOST, self.response['preapprovalKey'] )
|
||||
|
||||
def error( self ):
|
||||
if self.response.has_key('error'):
|
||||
|
@ -286,7 +287,7 @@ class IPN( object ):
|
|||
# verify that the request is paypal's
|
||||
self.error = None
|
||||
|
||||
url = "%s?cmd=_notify-validate" % PAYPAL_PAYMENT_HOST
|
||||
url = "%s?cmd=_notify-validate" % settings.PAYPAL_PAYMENT_HOST
|
||||
data=urllib.urlencode(request.POST.copy())
|
||||
req = urllib2.Request(url, data)
|
||||
response = urllib2.urlopen(req)
|
||||
|
|
|
@ -6,11 +6,12 @@ Replace this with more appropriate tests for your application.
|
|||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
from django.utils import unittest
|
||||
from regluit.payment.manager import PaymentManager
|
||||
from regluit.payment.paypal import IPN, IPN_PAY_STATUS_ACTIVE, IPN_PAY_STATUS_COMPLETED, IPN_TXN_STATUS_COMPLETED
|
||||
from noseselenium.cases import SeleniumTestCaseMixin
|
||||
from regluit.payment.models import Transaction
|
||||
from regluit.core.models import Campaign, Wishlist
|
||||
from regluit.core.models import Campaign, Wishlist, Work
|
||||
from django.contrib.auth.models import User
|
||||
from regluit.payment.parameters import *
|
||||
import traceback
|
||||
|
@ -19,7 +20,8 @@ from django.core.exceptions import ValidationError
|
|||
import time
|
||||
from selenium import selenium, webdriver
|
||||
|
||||
|
||||
from decimal import Decimal as D
|
||||
import datetime
|
||||
|
||||
def loginSandbox(test, selenium):
|
||||
|
||||
|
@ -214,5 +216,39 @@ class AuthorizeTest(TestCase):
|
|||
|
||||
self.assertEqual(t.status, IPN_PAY_STATUS_ACTIVE)
|
||||
|
||||
class TransactionTest(TestCase):
|
||||
def setUp(self):
|
||||
"""
|
||||
"""
|
||||
pass
|
||||
def testSimple(self):
|
||||
"""
|
||||
create a single transaction with PAYMENT_TYPE_INSTANT / COMPLETED with a $12.34 pledge and see whether the payment
|
||||
manager can query and get the right amount.
|
||||
"""
|
||||
|
||||
w = Work()
|
||||
w.save()
|
||||
c = Campaign(target=D('1000.00'),deadline=datetime.datetime(2012,1,1),work=w)
|
||||
c.save()
|
||||
|
||||
t = Transaction()
|
||||
t.amount = D('12.34')
|
||||
t.type = PAYMENT_TYPE_AUTHORIZATION
|
||||
t.status = 'ACTIVE'
|
||||
t.campaign = c
|
||||
t.save()
|
||||
|
||||
p = PaymentManager()
|
||||
results = p.query_campaign(campaign=c)
|
||||
self.assertEqual(results[0].amount, D('12.34'))
|
||||
|
||||
|
||||
def suite():
|
||||
|
||||
#testcases = [PledgeTest, AuthorizeTest]
|
||||
testcases = [TransactionTest]
|
||||
suites = unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(testcase) for testcase in testcases])
|
||||
return suites
|
||||
|
||||
|
|
@ -2,6 +2,7 @@ from regluit.payment.manager import PaymentManager
|
|||
from regluit.payment.paypal import IPN
|
||||
from regluit.payment.models import Transaction
|
||||
from regluit.core.models import Campaign, Wishlist
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from regluit.payment.parameters import *
|
||||
from django.http import HttpResponse, HttpRequest, HttpResponseRedirect
|
||||
|
|
|
@ -179,6 +179,6 @@ LOGOUT_URL = "/accounts/logout/"
|
|||
|
||||
USER_AGENT = "unglue.it.bot v0.0.1 <http://unglue.it>"
|
||||
|
||||
SOUTH_TESTS_MIGRATE = False
|
||||
SOUTH_TESTS_MIGRATE = True
|
||||
|
||||
AUTH_PROFILE_MODULE = "core.userprofile"
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
from regluit.settings.common import *
|
||||
|
||||
DEBUG = True
|
||||
TEMPLATE_DEBUG = DEBUG
|
||||
|
||||
ADMINS = (
|
||||
('Ed Summers', 'ehs@pobox.com'),
|
||||
)
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': 'regluit.db',
|
||||
'USER': '',
|
||||
'PASSWORD': '',
|
||||
'HOST': '',
|
||||
'PORT': '',
|
||||
}
|
||||
}
|
||||
|
||||
TIME_ZONE = 'America/New_York'
|
||||
SECRET_KEY = '_^_off!8zsj4+)%qq623m&$7_m-q$iau5le0w!mw&n5tgt#x=t'
|
||||
|
||||
# settings for outbout email
|
||||
# if you have a gmail account you can use your email address and password
|
||||
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_HOST_USER = 'me@gmail.com'
|
||||
EMAIL_HOST_PASSWORD = 'my-password'
|
||||
EMAIL_PORT = 587
|
||||
DEFAULT_FROM_EMAIL = 'info@gluejar.com'
|
||||
|
||||
# twitter auth
|
||||
# you'll need to create a new Twitter application to fill in these blanks
|
||||
# https://dev.twitter.com/apps/new
|
||||
|
||||
TWITTER_CONSUMER_KEY = ''
|
||||
TWITTER_CONSUMER_SECRET = ''
|
||||
|
||||
# facebook auth
|
||||
# you'll need to create a new Facebook application to fill in these blanks
|
||||
# https://developers.facebook.com/apps/
|
||||
|
||||
FACEBOOK_APP_ID = ''
|
||||
FACEBOOK_API_SECRET = ''
|
||||
|
||||
# google auth
|
||||
# you'll need to create a new Google application to fill in these blanks
|
||||
# https://code.google.com/apis/console/
|
||||
GOOGLE_OAUTH2_CLIENT_ID = ''
|
||||
GOOGLE_OAUTH2_CLIENT_SECRET = ''
|
||||
GOOGLE_DISPLAY_NAME = 'unglue it!'
|
||||
|
||||
# you'll need to register a GoogleBooks API key
|
||||
# https://code.google.com/apis/console
|
||||
GOOGLE_BOOKS_API_KEY = 'AIzaSyBE36z7o6NUafIWcLEB8yk2I47-8_5y1_0'
|
||||
|
||||
PAYPAL_USERNAME = ''
|
||||
PAYPAL_PASSWORD = ''
|
||||
PAYPAL_SIGNATURE = ''
|
||||
PAYPAL_APPID = ''
|
||||
|
||||
PAYPAL_ENDPOINT = 'svcs.sandbox.paypal.com' # sandbox
|
||||
PAYPAL_PAYMENT_HOST = 'http://www.sandbox.paypal.com' # sandbox
|
||||
|
||||
PAYPAL_SANDBOX_LOGIN = ''
|
||||
PAYPAL_SANDBOX_PASSWORD = ''
|
||||
|
||||
PAYPAL_BUYER_LOGIN =''
|
||||
PAYPAL_BUYER_PASSWORD = ''
|
||||
|
||||
BASE_URL = 'http://0.0.0.0/'
|
|
@ -0,0 +1,48 @@
|
|||
from regluit.settings.common import *
|
||||
|
||||
DEBUG = True
|
||||
TEMPLATE_DEBUG = DEBUG
|
||||
|
||||
ADMINS = (
|
||||
('Ed Summers', 'ehs@pobox.com'),
|
||||
)
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.mysql',
|
||||
'NAME': 'unglueit_dev',
|
||||
'USER': 'unglueit_dev',
|
||||
'PASSWORD': 'unglu3it',
|
||||
'HOST': 'gluejardb.cboagmr25pjs.us-east-1.rds.amazonaws.com',
|
||||
'PORT': '',
|
||||
}
|
||||
}
|
||||
|
||||
TIME_ZONE = 'America/New_York'
|
||||
SECRET_KEY = '_^_off!8zsj4+)%qq623m&$7_m-q$iau5le0w!mw&n5tgt#x=t'
|
||||
|
||||
# django
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_HOST_USER = 'ed.summers@gmail.com'
|
||||
EMAIL_HOST_PASSWORD = 'hvkhjwujmwzvraag'
|
||||
EMAIL_PORT = 587
|
||||
DEFAULT_FROM_EMAIL = 'info@gluejar.com'
|
||||
|
||||
# googlebooks
|
||||
GOOGLE_BOOKS_API_KEY = 'AIzaSyBE36z7o6NUafIWcLEB8yk2I47-8_5y1_0'
|
||||
|
||||
# twitter auth
|
||||
TWITTER_CONSUMER_KEY = 'sd9StEg1N1qB8gGb2GRX4A'
|
||||
TWITTER_CONSUMER_SECRET = 'YSKHn8Du6EWqpcWZ6sp5tqDPvcOBXK0WJWVGWyB0'
|
||||
|
||||
# facebook auth
|
||||
FACEBOOK_APP_ID = '242881179080779'
|
||||
FACEBOOK_API_SECRET = '5eae483a0e92113d884c427b578ef23a'
|
||||
|
||||
# google auth
|
||||
GOOGLE_OAUTH2_CLIENT_ID = '989608723367.apps.googleusercontent.com'
|
||||
GOOGLE_OAUTH2_CLIENT_SECRET = '3UqalKyNynnaaarumUIWh8vS'
|
||||
GOOGLE_DISPLAY_NAME = 'unglue it!'
|
|
@ -27,9 +27,7 @@
|
|||
0156372088
|
||||
0139391401
|
||||
0300022867
|
||||
0300084587
|
||||
0691063184
|
||||
0691004765
|
||||
0940242753
|
||||
0671240773
|
||||
0060852240
|
||||
|
@ -41,22 +39,15 @@
|
|||
0465028381
|
||||
0716760355
|
||||
1597261076
|
||||
1559638583
|
||||
0393014886
|
||||
0452011752
|
||||
0151400563
|
||||
0812536363
|
||||
0441007465
|
||||
0441569595
|
||||
0441012035
|
||||
0393311198
|
||||
0525200150
|
||||
0375704078
|
||||
0773723749
|
||||
0760759146
|
||||
0441478123
|
||||
0553383043
|
||||
006076029X
|
||||
0802714544
|
||||
0743442539
|
||||
0743431677
|
||||
|
|
Loading…
Reference in New Issue