class Migration(migrations.Migration): dependencies = [ ('wagtaildocs', '0007_merge'), ('wagtailcore', '0040_page_draft_title'), ('snippets', '0010_communityresource_sharedcontent'), ('books', '0048_auto_20180405_1621'), ] operations = [ migrations.CreateModel( name='BookCommunityResources', fields=[ ('communityresource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='snippets.CommunityResource')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ], options={ 'abstract': False, 'ordering': ['sort_order'], }, bases=('snippets.communityresource', models.Model), ), migrations.CreateModel( name='CommunityResources', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link_external', models.URLField(blank=True, verbose_name='External link')), ('link_text', models.CharField(help_text='Call to Action Text', max_length=255)), ('link_document', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('link_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.Page')), ('resource', models.ForeignKey(help_text='Manage resources through snippets.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='snippets.CommunityResource')), ], ), migrations.AddField( model_name='book', name='community_resources', field=wagtail.core.fields.StreamField((('content', books.models.SharedContentChooserBlock(snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))), null=True), ), migrations.AddField( model_name='bookcommunityresources', name='book_community_resource', field=modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='book_community_resources', to='books.Book'), ), ]
class Migration(migrations.Migration): dependencies = [ ('books', '0018_auto_20170624_1354'), ('members', '0004_membership_key_allowed'), ] operations = [ migrations.CreateModel( name='KeyFee', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start_date', models.DateField(default=datetime.date.today, help_text='The first day on which the membership is valid.')), ('end_date', models.DateField(default=datetime.date.today, help_text='The last day on which the membership is valid.')), ('sale_price', models.DecimalField(decimal_places=2, default=Decimal('0.00'), help_text='The price at which this item sold.', max_digits=6)), ('ctrlid', models.CharField(default=members.models.next_keyfee_ctrlid, help_text="Payment processor's id for this line item if it was part of an online purchase.", max_length=40, unique=True)), ('protected', models.BooleanField(default=False, help_text='Protect against further auto processing by ETL, etc. Prevents overwrites of manually entered data.')), ], options={ 'abstract': False, }, bases=(books.models.JournalLiner, models.Model), ), migrations.RemoveField( model_name='membership', name='key_allowed', ), migrations.AddField( model_name='keyfee', name='membership', field=models.OneToOneField(blank=True, default=None, help_text='The associated membership. MUST be specified, eventually!', null=True, on_delete=django.db.models.deletion.SET_NULL, to='members.Membership'), ), migrations.AddField( model_name='keyfee', name='sale', field=models.ForeignKey(blank=True, default=None, help_text='The sale that includes this line item.', null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Sale'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=255)), ('author', models.CharField(max_length=255)), ('description', models.CharField(max_length=255)), ('genre', models.CharField(max_length=255)), ('year', models.IntegerField()), ('quantity', models.IntegerField()), ('price', models.FloatField()), ('image', models.FileField(upload_to=books.models.book_img_path)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('seller', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='Profile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('birthdate', models.DateField()), ('address', models.CharField(max_length=255)), ('balance', models.FloatField(default=0)), ('image', models.ImageField(blank=True, upload_to=books.models.user_img_path)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('email_confirmed', models.BooleanField(default=False)), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='BookSale', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('price_per_piece', models.FloatField()), ('quantity', models.IntegerField()), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('book', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.book')), ('buyer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['-created_at'], }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ISBN', models.CharField(max_length=13, unique=True)), ('title', models.CharField(max_length=30, verbose_name='도서명')), ('author', models.CharField(blank=True, max_length=30, verbose_name='저자')), ('publisher', models.CharField(blank=True, max_length=30, verbose_name='출판사')), ('intro', models.TextField(max_length=100, verbose_name='서평')), ('status', models.CharField(choices=[('대여가능', '대여 가능'), ('예약', '예약 중'), ('대여중', '대여 중'), ('대여불가능', '대여 불가능')], default='대여가능', max_length=10, verbose_name='상태')), ('bookcover', imagekit.models.fields.ProcessedImageField( blank=True, upload_to=books.models.file_path)), ('stored_at', models.DateTimeField(auto_now_add=True)), ], options={ 'ordering': ['-stored_at'], }, ), migrations.CreateModel( name='Review', fields=[ ('book', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='books.book')), ('comment', models.TextField(max_length=100, verbose_name='리뷰')), ('rate', models.IntegerField( default=1, validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5) ], verbose_name='별점')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Novel', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=20, verbose_name='名称')), ('number', models.IntegerField(default=books.models.num, verbose_name='编号')), ], ), migrations.CreateModel( name='NovelTag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('tag', models.CharField(max_length=60, verbose_name='标签')), ], ), migrations.CreateModel( name='User', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('mail', models.CharField(max_length=50, verbose_name='邮箱')), ], ), migrations.CreateModel( name='UserToSc', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('number', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Novel')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.User')), ], ), migrations.AddField( model_name='user', name='number', field=models.ManyToManyField(through='books.UserToSc', to='books.Novel', verbose_name='num1'), ), migrations.CreateModel( name='NumToTag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('num', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Novel')), ('tags', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.NovelTag')), ], ), migrations.AddField( model_name='noveltag', name='number', field=models.ManyToManyField(through='books.NumToTag', to='books.Novel', verbose_name='num'), ), migrations.CreateModel( name='NovelMessage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('author', models.CharField(max_length=30, verbose_name='作者')), ('introduce', models.CharField(max_length=999, verbose_name='介绍')), ('up', models.IntegerField(default=books.models.up_num, verbose_name='点赞')), ('serialize', models.BooleanField(default=1, verbose_name='连载状态')), ('vip_type', models.BooleanField(default=0, verbose_name='VIP可阅读')), ('cover', models.ImageField(null=True, upload_to='cover', verbose_name='封面')), ('novel_num', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to='books.Novel', verbose_name='小说编号')), ], options={ 'ordering': ['-up'], }, ), migrations.AddField( model_name='novel', name='mail', field=models.ManyToManyField(through='books.UserToSc', to='books.User'), ), migrations.AddField( model_name='novel', name='tag', field=models.ManyToManyField(through='books.NumToTag', to='books.NovelTag'), ), migrations.CreateModel( name='Chapter', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('chapter', models.CharField(max_length=100, verbose_name='小说章节')), ('content', models.TextField(verbose_name='单章内容')), ('topic', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Novel')), ], ), ]
class Migration(migrations.Migration): replaces = [('books', '0001_initial'), ('books', '0002_auto_20160218_1121'), ('books', '0003_auto_20160222_1200'), ('books', '0004_auto_20160222_1230'), ('books', '0005_auto_20160224_1637'), ('books', '0006_auto_20160225_1410'), ('books', '0007_auto_20160229_1326'), ('books', '0008_book_concept_coach_link'), ('books', '0009_auto_20160307_1106'), ('books', '0010_auto_20160309_1016'), ('books', '0011_book_table_of_contents'), ('books', '0012_book_student_handbook'), ('books', '0013_auto_20160316_1555'), ('books', '0014_book_errata_link'), ('books', '0015_auto_20160328_1056'), ('books', '0016_book_license_text'), ('books', '0017_auto_20160407_1154'), ('books', '0018_book_ibook_link_volume_2'), ('books', '0019_auto_20160419_0955'), ('books', '0020_auto_20160421_2139'), ('books', '0021_auto_20160531_1045'), ('books', '0022_auto_20160617_1216'), ('books', '0023_auto_20160622_1556'), ('books', '0024_book_authors'), ('books', '0025_auto_20160719_1359'), ('books', '0026_auto_20160815_1159'), ('books', '0027_auto_20160901_1548'), ('books', '0028_book_coming_soon'), ('books', '0029_auto_20161025_1300'), ('books', '0030_auto_20161026_1541'), ('books', '0031_auto_20170330_0831'), ('books', '0032_book_comp_copy_available'), ('books', '0033_auto_20170414_0856'), ('books', '0034_book_tutor_marketing_book'), ('books', '0035_auto_20170706_2239'), ('books', '0036_auto_20170707_1305'), ('books', '0037_book_kindle_link'), ('books', '0038_auto_20180125_1347'), ('books', '0039_auto_20180301_1107'), ('books', '0040_auto_20180402_1158'), ('books', '0041_auto_20180403_1123'), ('books', '0042_auto_20180403_1132'), ('books', '0043_auto_20180405_1413'), ('books', '0044_auto_20180405_1452'), ('books', '0045_auto_20180405_1454'), ('books', '0046_auto_20180405_1459'), ('books', '0047_auto_20180405_1531'), ('books', '0048_auto_20180405_1621'), ('books', '0049_auto_20180406_0959'), ('books', '0050_auto_20180406_1002'), ('books', '0051_bookcommunityresources'), ('books', '0052_auto_20180406_1005'), ('books', '0053_auto_20180409_1242'), ('books', '0054_auto_20180418_1034'), ('books', '0055_auto_20180502_1255'), ('books', '0056_auto_20180711_0921'), ('books', '0057_auto_20180713_1227'), ('books', '0058_remove_book_subject'), ('books', '0059_book_subject'), ('books', '0060_auto_20180920_1155'), ('books', '0061_book_chegg_link'), ('books', '0062_book_chegg_link_text'), ('books', '0063_auto_20190220_0836'), ('books', '0064_remove_book_subject'), ('books', '0065_book_book_cover_text_color'), ('books', '0066_auto_20190515_1206'), ('books', '0067_auto_20190710_1351'), ('books', '0068_auto_20190710_1356'), ('books', '0069_auto_20190710_1358'), ('books', '0070_auto_20190710_1424'), ('books', '0071_auto_20190710_1504'), ('books', '0072_book_webview_rex_link'), ('books', '0073_auto_20190730_1437'), ('books', '0073_auto_20190730_1153'), ('books', '0074_merge_20190805_1353'), ('books', '0075_book_study_edge_link'), ('books', '0076_auto_20190805_1642'), ('books', '0077_auto_20190806_1342'), ('books', '0078_auto_20190916_1211'), ('books', '0079_remove_book_table_of_contents'), ('books', '0079_auto_20191003_1236'), ('books', '0080_merge_20191003_1238'), ('books', '0081_book_table_of_contents'), ('books', '0082_book_videos'), ('books', '0083_auto_20191113_1616'), ('books', '0084_auto_20200210_1041'), ('books', '0084_auto_20200203_1638'), ('books', '0085_merge_20200210_1046'), ('books', '0086_auto_20200211_0906'), ('books', '0087_book_partner_page_link_text'), ('books', '0088_auto_20200309_1624'), ('books', '0089_auto_20200309_1627'), ('books', '0090_auto_20200310_1016'), ('books', '0092_auto_20200403_1514'), ('books', '0084_auto_20200213_1156'), ('books', '0087_merge_20200213_1202'), ('books', '0088_merge_20200311_0956'), ('books', '0091_merge_20200325_0813'), ('books', '0093_merge_20200403_1547'), ('books', '0094_auto_20200415_1139'), ('books', '0095_book_use_alt_errata_schedule'), ('books', '0096_auto_20200511_1312'), ('books', '0097_facultyresources_k12'), ('books', '0098_auto_20200710_0830'), ('books', '0099_auto_20200710_0936'), ('books', '0100_videofacultyresources')] dependencies = [ ('wagtaildocs', '0010_document_file_hash'), ('wagtailcore', '0040_page_draft_title'), ('wagtailcore', '0023_alter_page_revision_on_delete_behaviour'), ('snippets', '0002_communityresource'), ('snippets', '0001_initial'), ('allies', '0001_initial'), ('wagtailimages', '0020_add-verbose-name'), ('wagtaildocs', '0007_merge'), ('snippets', '__first__'), ('wagtailimages', '0010_change_on_delete_behaviour'), ('snippets', '0010_communityresource_sharedcontent'), ('wagtaildocs', '0004_capitalizeverbose'), ] operations = [ migrations.CreateModel( name='BookAlly', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('book_link_url', models.URLField(blank=True, help_text='Call to Action Link')), ('book_link_text', models.CharField(help_text='Call to Action Text', max_length=255)), ], ), migrations.CreateModel( name='BookIndex', fields=[ ('page_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')), ('page_description', models.TextField()), ('dev_standards_heading', models.CharField(blank=True, max_length=255, null=True)), ('dev_standard_1_heading', models.CharField(blank=True, max_length=255, null=True)), ('dev_standard_1_description', wagtail.core.fields.RichTextField()), ('dev_standard_2_heading', models.CharField(blank=True, max_length=255, null=True)), ('dev_standard_2_description', wagtail.core.fields.RichTextField()), ('dev_standard_3_heading', models.CharField(blank=True, max_length=255, null=True)), ('dev_standard_3_description', wagtail.core.fields.RichTextField()), ('subject_list_heading', models.CharField(blank=True, max_length=255, null=True)), ('promote_image', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image')), ], options={ 'abstract': False, }, bases=('wagtailcore.page', ), ), migrations.CreateModel( name='FacultyResources', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link_external', models.URLField( blank=True, help_text= 'Provide an external URL starting with http:// (or fill out either one of the following two).', verbose_name='External link')), ('link_document', models.ForeignKey( blank=True, help_text='Or select a document for viewers to download.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('link_page', models.ForeignKey( blank=True, help_text='Or select an existing page to attach.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.Page')), ('resource', models.ForeignKey( help_text='Manage resources through snippets.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='snippets.FacultyResource')), ('link_text', models.CharField(default='', help_text='Call to Action Text', max_length=255)), ('coming_soon_text', models.CharField( blank=True, help_text= 'If there is text in this field a coming soon banner will be added with this description.', max_length=255, null=True)), ('updated', models.DateTimeField( blank=True, help_text='Late date resource was updated', null=True)), ('featured', models.BooleanField( default=False, help_text='Add to featured bar on resource page')), ('k12', models.BooleanField(default=False, help_text='Add K12 banner to resource')), ('video_reference_number', models.IntegerField(blank=True, null=True)), ], ), migrations.CreateModel( name='Quotes', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('quote_text', wagtail.core.fields.RichTextField()), ('quote_author', models.CharField(max_length=255)), ('quote_author_school', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Book', fields=[ ('page_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')), ('created', models.DateTimeField(auto_now_add=True)), ('cnx_id', models.CharField( blank=True, help_text= 'This is used to pull relevant information from CNX.', max_length=255, null=True)), ('updated', models.DateTimeField( blank=True, help_text='Late date web content was updated', null=True)), ('description', wagtail.core.fields.RichTextField( blank=True, help_text='Description shown on Book Detail page.')), ('publish_date', models.DateField(help_text='Date the book is published on.', null=True)), ('print_isbn_10', models.CharField( blank=True, help_text='ISBN 10 for print version (hardcover).', max_length=255, null=True)), ('print_isbn_13', models.CharField( blank=True, help_text='ISBN 13 for print version (hardcover).', max_length=255, null=True)), ('license_name', models.CharField(blank=True, editable=False, help_text='Name of the license.', max_length=255, null=True)), ('license_version', models.CharField(blank=True, editable=False, help_text='Version of the license.', max_length=255, null=True)), ('license_url', models.CharField(blank=True, editable=False, help_text='External URL of the license.', max_length=255, null=True)), ('cover', models.ForeignKey( help_text='The book cover to be shown on the website.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('is_ap', models.BooleanField( default=False, help_text= 'Whether this book is an AP (Advanced Placement) book.')), ('high_resolution_pdf', models.ForeignKey( blank=True, help_text='High quality PDF document of the book.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('ibook_link', models.URLField(blank=True, help_text='Link to iBook')), ('low_resolution_pdf', models.ForeignKey( blank=True, help_text='Low quality PDF document of the book.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('webview_link', models.URLField(blank=True, help_text='Link to CNX Webview book')), ('amazon_link', models.URLField(blank=True, help_text='Link to Amazon')), ('bookshare_link', models.URLField(blank=True, help_text='Link to Bookshare resources')), ('license_text', models.TextField(blank=True, help_text='Overrides default license text.', null=True)), ('ibook_link_volume_2', models.URLField(blank=True, help_text='Link to secondary iBook')), ('community_resource_cta', models.CharField(blank=True, help_text='Call the action text.', max_length=255, null=True)), ('community_resource_url', models.URLField(blank=True, help_text='URL of the external source.')), ('authors', wagtail.core.fields.StreamField([ ('author', wagtail.core.blocks.StructBlock([ ('name', wagtail.core.blocks.CharBlock( help_text='Full name of the author.', required=True)), ('university', wagtail.core.blocks.CharBlock( help_text= 'Name of the university/institution the author is associated with.', required=False)), ('country', wagtail.core.blocks.CharBlock( help_text= 'Country of the university/institution.', required=False)), ('senior_author', wagtail.core.blocks.BooleanBlock( help_text= 'Whether the author is a senior author. (Senior authors are shown before non-senior authors.)', required=False)), ('display_at_top', wagtail.core.blocks.BooleanBlock( help_text='Whether display the author on top.', required=False)) ])) ], null=True)), ('coming_soon', models.BooleanField(default=False)), ('salesforce_abbreviation', models.CharField(blank=True, max_length=255, null=True)), ('salesforce_name', models.CharField(blank=True, max_length=255, null=True)), ('amazon_coming_soon', models.BooleanField( default=False, help_text= 'Whether this book is coming to Amazon bookstore.')), ('bookstore_coming_soon', models.BooleanField( default=False, help_text='Whether this book is coming to bookstore soon.' )), ('comp_copy_available', models.BooleanField( default=True, help_text='Whether free compy available for teachers.')), ('tutor_marketing_book', models.BooleanField( default=False, help_text='Whether this is a Tutor marketing book.')), ('digital_isbn_10', models.CharField(blank=True, help_text='ISBN 10 for digital version.', max_length=255, null=True)), ('digital_isbn_13', models.CharField(blank=True, help_text='ISBN 13 for digital version.', max_length=255, null=True)), ('ibook_isbn_10', models.CharField(blank=True, help_text='ISBN 10 for iBook version.', max_length=255, null=True)), ('ibook_isbn_13', models.CharField(blank=True, help_text='ISBN 13 for iBook version.', max_length=255, null=True)), ('ibook_volume_2_isbn_10', models.CharField(blank=True, help_text='ISBN 10 for iBook v2 version.', max_length=255, null=True)), ('ibook_volume_2_isbn_13', models.CharField(blank=True, help_text='ISBN 13 for iBook v2 version.', max_length=255, null=True)), ('kindle_link', models.URLField(blank=True, help_text='Link to Kindle version')), ('community_resource_blurb', models.TextField(blank=True, help_text='Blurb.')), ('community_resource_feature_text', models.TextField( blank=True, help_text='Text of the community resource feature.')), ('cover_color', models.CharField(choices=[('blue', 'Blue'), ('deep-green', 'Deep Green'), ('gold', 'Gold'), ('gray', 'Gray'), ('green', 'Green'), ('light-blue', 'Light Blue'), ('light-gray', 'Light Gray'), ('medium-blue', 'Medium Blue'), ('orange', 'Orange'), ('red', 'Red'), ('yellow', 'Yellow')], default='blue', help_text='The color of the cover.', max_length=255)), ('reverse_gradient', models.BooleanField(default=False)), ('title_image', models.ForeignKey( help_text= 'The svg for title image to be shown on the website.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('community_resource_feature_link', models.ForeignKey( blank=True, help_text='Document of the community resource feature.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('ally_content', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, null=True)), ('bookstore_content', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, help_text='Bookstore content.', null=True)), ('comp_copy_content', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, help_text='Content of the free copy.', null=True)), ('errata_content', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, help_text='Errata content.', null=True)), ('free_stuff_instructor', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, help_text= 'Snippet to show texts for free instructor resources.', null=True)), ('free_stuff_student', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, help_text= 'Snipped to show texts for free student resources.', null=True)), ('webinar_content', wagtail.core.fields.StreamField( [('content', books.models.SharedContentChooserBlock( snippets.models.SharedContent)), ('link', wagtail.core.blocks.URLBlock(required=False)), ('link_text', wagtail.core.blocks.CharBlock(required=False))], blank=True, null=True)), ('community_resource_heading', models.CharField( blank=True, help_text='Snipped to show texts for community resources.', max_length=255, null=True)), ('community_resource_logo', models.ForeignKey( blank=True, help_text='Logo for community resources.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('book_state', models.CharField(choices=[ ('live', 'Live'), ('coming_soon', 'Coming Soon'), ('new_edition_available', 'New Edition Available (Show new edition correction schedule)' ), ('deprecated', 'Deprecated (Disallow errata submissions and show deprecated schedule)' ), ('retired', 'Retired (Remove from website)') ], default='live', help_text='The state of the book.', max_length=255)), ('promote_image', models.ForeignKey( blank=True, help_text='Promote image.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image')), ('chegg_link', models.URLField(blank=True, help_text='Link to Chegg e-reader', null=True)), ('chegg_link_text', models.CharField(blank=True, help_text='Text for Chegg link.', max_length=255, null=True)), ('book_cover_text_color', models.CharField( choices=[ ('yellow', 'Yellow'), ('light_blue', 'Light Blue'), ('dark_blue', 'Dark Blue'), ('green', 'Green'), ('white', 'White'), ('grey', 'Grey'), ('red', 'Red'), ('white_red', 'White/Red'), ('white_blue', 'White/Blue'), ('green_white', 'Green/White'), ('yellow_white', 'Yellow/White'), ('grey_white', 'Grey/White'), ('white_grey', 'White/Grey'), ('white_orange', 'White/Orange') ], default='yellow', help_text= 'Use by the Unified team - this will not change the text color on the book cover.', max_length=255)), ('webview_rex_link', models.URLField(blank=True, help_text='Link to REX Webview book')), ('print_softcover_isbn_10', models.CharField( blank=True, help_text='ISBN 10 for print version (softcover).', max_length=255, null=True)), ('print_softcover_isbn_13', models.CharField( blank=True, help_text='ISBN 13 for print version (softcover).', max_length=255, null=True)), ('last_updated_pdf', models.DateTimeField( blank=True, help_text='Last time PDF was revised.', null=True, verbose_name='PDF Content Revision Date')), ('enable_study_edge', models.BooleanField( default=False, help_text= 'This will cause the link to the Study Edge app appear on the book details page.' )), ('rex_callout_blurb', models.CharField( blank=True, help_text='Additional text for the REX callout.', max_length=255, null=True)), ('rex_callout_title', models.CharField(blank=True, default='Recommended', help_text='Title of the REX callout', max_length=255, null=True)), ('table_of_contents', django.contrib.postgres.fields.jsonb.JSONField( blank=True, editable=False, help_text='TOC.', null=True)), ('videos', wagtail.core.fields.StreamField( [('video', wagtail.core.blocks.ListBlock( wagtail.core.blocks.StructBlock([ ('title', wagtail.core.blocks.CharBlock()), ('description', wagtail.core.blocks.RichTextBlock()), ('embed', wagtail.core.blocks.RawHTMLBlock()) ])))], blank=True, null=True)), ('partner_list_label', models.CharField( blank=True, help_text= 'Controls the heading text on the book detail page for partners. This will update ALL books to use this value!', max_length=255, null=True)), ('partner_page_link_text', models.CharField( blank=True, help_text='Link to partners page on top right of list.', max_length=255, null=True)), ('featured_resources_header', models.CharField( blank=True, help_text= 'Featured resource header on instructor resources tab.', max_length=255, null=True)), ], options={ 'abstract': False, }, bases=('wagtailcore.page', ), ), migrations.CreateModel( name='Authors', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(help_text='Full name of the author.', max_length=255)), ('university', models.CharField( blank=True, help_text= 'Name of the university/institution the author is associated with.', max_length=255, null=True)), ('country', models.CharField( blank=True, help_text='Country of the university/institution.', max_length=255, null=True)), ('senior_author', models.BooleanField( default=False, help_text= 'Whether the author is a senior author. (Senior authors are shown before non-senior authors.)' )), ('display_at_top', models.BooleanField( default=False, help_text='Whether display the author on top.')), ('book', modelcluster.fields.ParentalKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='book_contributing_authors', to='books.Book')), ], ), migrations.CreateModel( name='BookQuotes', fields=[ ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ], options={ 'ordering': ['sort_order'], 'abstract': False, }, bases=('books.quotes', models.Model), ), migrations.CreateModel( name='BookFacultyResources', fields=[ ('facultyresources_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='books.FacultyResources')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ('book_faculty_resource', modelcluster.fields.ParentalKey( on_delete=django.db.models.deletion.CASCADE, related_name='book_faculty_resources', to='books.Book')), ], options={ 'ordering': ['sort_order'], 'abstract': False, }, bases=('books.facultyresources', models.Model), ), migrations.CreateModel( name='BookAllies', fields=[ ('bookally_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='books.BookAlly')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ('book_ally', modelcluster.fields.ParentalKey( on_delete=django.db.models.deletion.CASCADE, related_name='book_allies', to='books.Book')), ], options={ 'ordering': ['sort_order'], 'abstract': False, }, bases=('books.bookally', models.Model), ), migrations.CreateModel( name='StudentResources', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link_external', models.URLField( blank=True, help_text= 'Provide an external URL starting with http:// (or fill out either one of the following two).', verbose_name='External link')), ('link_text', models.CharField(help_text='Call to Action Text', max_length=255)), ('link_document', models.ForeignKey( blank=True, help_text='Or select a document for viewers to download.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtaildocs.Document')), ('link_page', models.ForeignKey( blank=True, help_text='Or select an existing page to attach.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.Page')), ('resource', models.ForeignKey( help_text='Manage resources through snippets.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='snippets.StudentResource')), ('coming_soon_text', models.CharField( blank=True, help_text= 'If there is text in this field a coming soon banner will be added with this description.', max_length=255, null=True)), ('updated', models.DateTimeField( blank=True, help_text='Late date resource was updated', null=True)), ], ), migrations.CreateModel( name='BookStudentResources', fields=[ ('studentresources_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='books.StudentResources')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ('book_student_resource', modelcluster.fields.ParentalKey( on_delete=django.db.models.deletion.CASCADE, related_name='book_student_resources', to='books.Book')), ], options={ 'abstract': False, 'ordering': ['sort_order'], }, bases=('books.studentresources', models.Model), ), migrations.CreateModel( name='BookSharedContent', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('link', models.URLField(blank=True, null=True)), ('link_text', models.CharField(blank=True, max_length=255, null=True)), ], ), migrations.CreateModel( name='BookSharedContents', fields=[ ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ], options={ 'abstract': False, 'ordering': ['sort_order'], }, bases=('books.booksharedcontent', models.Model), ), migrations.DeleteModel(name='BookSharedContent', ), migrations.DeleteModel(name='BookSharedContents', ), migrations.DeleteModel(name='BookQuotes', ), migrations.DeleteModel(name='Quotes', ), migrations.CreateModel( name='SubjectBooks', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('subject', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subjects_subject', to='snippets.Subject')), ], ), migrations.CreateModel( name='BookSubjects', fields=[ ('subjectbooks_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='books.SubjectBooks')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ('book_subject', modelcluster.fields.ParentalKey( on_delete=django.db.models.deletion.CASCADE, related_name='book_subjects', to='books.Book')), ], options={ 'abstract': False, 'ordering': ['sort_order'], }, bases=('books.subjectbooks', models.Model), ), migrations.DeleteModel(name='BookAllies', ), migrations.DeleteModel(name='BookAlly', ), migrations.CreateModel( name='VideoFacultyResource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('resource_heading', models.CharField(max_length=255)), ('resource_description', wagtail.core.fields.RichTextField(blank=True, null=True)), ('video_title', models.CharField(blank=True, max_length=255, null=True)), ('video_url', models.URLField(blank=True, null=True)), ('video_file', models.FileField(blank=True, null=True, upload_to='resource_videos')), ], ), migrations.CreateModel( name='VideoFacultyResources', fields=[ ('videofacultyresource_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='books.VideoFacultyResource')), ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), ('book_video_faculty_resource', modelcluster.fields.ParentalKey( on_delete=django.db.models.deletion.CASCADE, related_name='book_video_faculty_resources', to='books.Book')), ], options={ 'ordering': ['sort_order'], 'abstract': False, }, bases=('books.videofacultyresource', models.Model), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('books', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='DiscoveryMethod', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField( help_text= 'The name of some means by which people learn about our organization.', max_length=30, unique=True)), ('order', models.IntegerField( default=None, help_text= 'These values define the order in which the discovery methods should be presented to users.', unique=True)), ], ), migrations.CreateModel( name='GroupMembership', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start_date', models.DateField( default=datetime.date.today, help_text='The first day on which the membership is valid.' )), ('end_date', models.DateField( default=datetime.date.today, help_text='The last day on which the membership is valid.' )), ('sale_price', models.DecimalField( decimal_places=2, default=Decimal('0'), help_text='The price at which this item sold.', max_digits=6)), ('max_members', models.IntegerField( blank=True, default=None, help_text= 'The maximum number of members to which this group membership can be applied. Blank if no limit.', null=True)), ], options={ 'abstract': False, }, bases=(books.models.JournalLiner, models.Model), ), migrations.CreateModel( name='Member', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nag_re_membership', models.BooleanField( default=False, help_text= 'If true, person will be nudged (via email) to renew membership.' )), ('membership_card_md5', models.CharField( blank=True, help_text= 'MD5 of the member card#. Field will auto-apply MD5 if value is digits.', max_length=32, null=True)), ('membership_card_when', models.DateTimeField( blank=True, help_text= 'Date/time on which the membership card was created.', null=True)), ('auth_user', models.OneToOneField( help_text= 'This must point to the corresponding auth.User object.', on_delete=django.db.models.deletion.CASCADE, related_name='member', to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['auth_user__first_name', 'auth_user__last_name'], }, ), migrations.CreateModel( name='MemberLogin', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('when', models.DateTimeField( default=django.utils.timezone.now, help_text='Date/time member logged in.')), ('ip', models.GenericIPAddressField( help_text='IP address from which member logged in.')), ('member', models.ForeignKey( blank=True, help_text='The member who logged in.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='members.Member')), ], options={ 'verbose_name': 'Login', }, ), migrations.CreateModel( name='MemberNote', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('content', models.TextField( help_text= 'For staff. Anything you want to say about the member.', max_length=2048)), ('author', models.ForeignKey( blank=True, help_text='The member who wrote this note.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='member_notes_authored', to='members.Member')), ('member', models.ForeignKey( help_text='The member to which this note pertains.', on_delete=django.db.models.deletion.CASCADE, to='members.Member')), ], ), migrations.CreateModel( name='Membership', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start_date', models.DateField( default=datetime.date.today, help_text='The first day on which the membership is valid.' )), ('end_date', models.DateField( default=datetime.date.today, help_text='The last day on which the membership is valid.' )), ('sale_price', models.DecimalField( decimal_places=2, default=Decimal('0'), help_text='The price at which this item sold.', max_digits=6)), ('membership_type', models.CharField(choices=[('R', 'Regular'), ('W', 'Work-Trade'), ('S', 'Scholarship'), ('C', 'Complimentary'), ('G', 'Group'), ('F', 'Family'), ('K', 'Gift Card')], default='R', help_text='The type of membership.', max_length=1)), ('ctrlid', models.CharField( default=members.models.next_membership_ctrlid, help_text= "Payment processor's id for this membership if it was part of an online purchase.", max_length=40, unique=True)), ('protected', models.BooleanField( default=False, help_text= 'Protect against further auto processing by ETL, etc. Prevents overwrites of manually entered data.' )), ('when_nudged', models.DateField( blank=True, default=None, help_text= 'Most recent date on which a renewal reminder was sent.', null=True)), ('nudge_count', models.IntegerField( default=0, help_text= 'The number of times a renewal reminder was sent.')), ('group', models.ForeignKey( blank=True, default=None, help_text= 'The associated group membership, if any. Usually none.', null=True, on_delete=django.db.models.deletion.CASCADE, to='members.GroupMembership')), ('member', models.ForeignKey( blank=True, default=None, help_text='The member to whom this membership applies.', null=True, on_delete=django.db.models.deletion.SET_NULL, to='members.Member')), ], options={ 'ordering': ['start_date'], }, bases=(books.models.JournalLiner, models.Model), ), migrations.CreateModel( name='MembershipGiftCard', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('redemption_code', models.CharField( help_text= 'A random string printed on the card, used during card redemption / membership activation.', max_length=20, unique=True)), ('date_created', models.DateField( default=django.utils.timezone.now, help_text='The date on which the gift card was created.') ), ('price', models.DecimalField( decimal_places=2, help_text='The price to buy this gift card.', max_digits=6)), ('month_duration', models.IntegerField( blank=True, default=None, help_text= 'The number of months of membership this gift card grants when redeemed.', null=True, verbose_name='Months')), ('day_duration', models.IntegerField( blank=True, default=None, help_text= 'The number of days of membership this gift card grants when redeemed.', null=True, verbose_name='Days')), ], options={ 'verbose_name': 'Gift card', }, ), migrations.CreateModel( name='MembershipGiftCardRedemption', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('redemption_date', models.DateField( default=django.utils.timezone.now, help_text='The date on which the gift card was redeemed.') ), ('card', models.OneToOneField( help_text='The membership gift card that was redeemed.', on_delete=django.db.models.deletion.PROTECT, to='members.MembershipGiftCard')), ], options={ 'verbose_name': 'Gift card redemption', }, ), migrations.CreateModel( name='MembershipGiftCardReference', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('sale_price', models.DecimalField( decimal_places=2, help_text='The price at which this item sold.', max_digits=6)), ('ctrlid', models.CharField( default=members.models.next_giftcardref_ctrlid, help_text= "Payment processor's id if this was part of an online purchase.", max_length=40, unique=True)), ('protected', models.BooleanField( default=False, help_text= 'Protect against further auto processing by ETL, etc. Prevents overwrites of manually entered data.' )), ('card', models.OneToOneField( blank=True, help_text='The membership gift card being sold.', null=True, on_delete=django.db.models.deletion.PROTECT, to='members.MembershipGiftCard')), ('sale', models.ForeignKey( blank=True, help_text= 'The sale that includes the card as a line item.', null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Sale')), ], options={ 'verbose_name': 'Membership gift card', }, bases=(models.Model, books.models.JournalLiner), ), migrations.CreateModel( name='Pushover', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('key', models.CharField( help_text="The member's User Key on Pushover.com", max_length=30)), ('who', models.ForeignKey( help_text='The member to whom this tagging info applies.', on_delete=django.db.models.deletion.CASCADE, to='members.Member')), ], ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(help_text='A short name for the tag.', max_length=40, unique=True)), ('meaning', models.TextField( help_text= "A discussion of the tag's semantics. What does it mean? What does it NOT mean?", max_length=500)), ], options={ 'ordering': ['name'], }, ), migrations.CreateModel( name='Tagging', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_tagged', models.DateTimeField( auto_now_add=True, help_text='Date/time on which the member was tagged.')), ('can_tag', models.BooleanField( default=False, help_text= 'If True, the tagged member can be a authorizing member for this tag.' )), ('authorizing_member', models.ForeignKey( blank=True, help_text= 'The member that authorized that the member be tagged.', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='authorized_taggings', to='members.Member')), ('tag', models.ForeignKey(help_text='The tag assigned to the member.', on_delete=django.db.models.deletion.CASCADE, to='members.Tag')), ('tagged_member', models.ForeignKey(help_text='The member tagged.', on_delete=django.db.models.deletion.CASCADE, related_name='taggings', to='members.Member')), ], ), migrations.CreateModel( name='VisitEvent', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('when', models.DateTimeField(default=django.utils.timezone.now, help_text='Date/time of visit event.')), ('method', models.CharField( choices=[('R', 'RFID'), ('F', 'Front Desk'), ('M', 'Mobile App'), ('U', 'Unknown')], default='U', help_text= "The method used to record the visit, such as 'Front Desk' or 'RFID'.", max_length=1)), ('event_type', models.CharField(choices=[('A', 'Arrival'), ('P', 'Presence'), ('D', 'Departure')], help_text='The type of visit event.', max_length=1)), ('sync1', models.BooleanField( default=False, help_text= "True if this event has been sync'ed to 'other system #1'" )), ('who', models.ForeignKey( help_text="The member who's visiting or visited.", on_delete=django.db.models.deletion.PROTECT, to='members.Member')), ], options={ 'ordering': ['when'], }, ), migrations.CreateModel( name='WifiMacDetected', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('when', models.DateTimeField( default=django.utils.timezone.now, help_text='Date/time when MAC was noticed to be present.') ), ('mac', models.CharField(help_text='A MAC address as 12 hex digits.', max_length=12)), ], options={ 'verbose_name_plural': 'Wifi MACs detected', 'verbose_name': 'Wifi MAC detected', }, ), migrations.AddField( model_name='membership', name='redemption', field=models.ForeignKey( blank=True, default=None, help_text= 'The associated membership gift card redemption, if any. Usually none.', null=True, on_delete=django.db.models.deletion.CASCADE, to='members.MembershipGiftCardRedemption'), ), migrations.AddField( model_name='membership', name='sale', field=models.ForeignKey( blank=True, default=None, help_text= "The sale that includes this line item, if any. E.g. comp memberships don't have a corresponding sale.", null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Sale'), ), migrations.AddField( model_name='member', name='tags', field=models.ManyToManyField(blank=True, related_name='members', through='members.Tagging', to='members.Tag'), ), migrations.AddField( model_name='groupmembership', name='group_tag', field=models.ForeignKey( help_text= 'Group membership is initially populated with the set of people having this tag.', on_delete=django.db.models.deletion.PROTECT, to='members.Tag'), ), migrations.AddField( model_name='groupmembership', name='invoice', field=models.ForeignKey( blank=True, default=None, help_text= 'The receivable invoice that includes this line item, if any.', null=True, on_delete=django.db.models.deletion.CASCADE, to='books.ReceivableInvoice'), ), migrations.AddField( model_name='groupmembership', name='members_covered', field=models.ManyToManyField(through='members.Membership', to='members.Member'), ), migrations.AddField( model_name='groupmembership', name='sale', field=models.ForeignKey( blank=True, default=None, help_text= 'The sale on which this group membership appears as a line item, if any.', null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Sale'), ), migrations.AlterUniqueTogether( name='visitevent', unique_together=set([('who', 'when')]), ), migrations.AlterUniqueTogether( name='tagging', unique_together=set([('tagged_member', 'tag')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Author', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('author_name', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('isbn', models.CharField(max_length=120)), ('title', models.CharField(max_length=120)), ('description', models.TextField()), ('length', models.DurationField(default=datetime.timedelta(0, 1200))), ('release_date', models.DateTimeField()), ('image', models.FileField(blank=True, null=True, upload_to=b'')), ('audio_link', models.FileField( upload_to=books.models.get_upload_file_name)), ('is_banner', models.CharField(choices=[('On', 'on'), ('Off', 'off')], max_length=10)), ('is_featured', models.CharField(choices=[('On', 'on'), ('Off', 'off')], max_length=10)), ('updated', models.DateTimeField(auto_now=True)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('author_id', models.ManyToManyField(to='books.Author')), ], ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('category_name', models.CharField(max_length=50)), ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child', to='books.Category')), ], options={ 'verbose_name': 'category', 'verbose_name_plural': 'categories', }, ), migrations.CreateModel( name='Currency', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('currency_name', models.CharField(max_length=255)), ('currency_symbol', models.CharField(max_length=10)), ], ), migrations.CreateModel( name='Group', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('group_name', models.CharField(max_length=120)), ], ), migrations.CreateModel( name='Language', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('language_name', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Narrator', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('narrator_name', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Price', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('price_tag', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=6)), ('book', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Book')), ('currency', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='price_currency', to='books.Currency')), ('language', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Language')), ], ), migrations.CreateModel( name='ProgramFormat', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('program_name', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Publisher', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('publisher_name', models.CharField(max_length=255)), ], ), migrations.CreateModel( name='Rating', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('rating', models.IntegerField(default=0)), ('book', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.Book')), ('user_id', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserProfile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('group', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Group')), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='book', name='category_id', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to='books.Category'), ), migrations.AddField( model_name='book', name='narrator_id', field=models.ManyToManyField(to='books.Narrator'), ), migrations.AddField( model_name='book', name='program_format', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to='books.ProgramFormat'), ), migrations.AddField( model_name='book', name='publisher', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='books.Publisher'), ), ]