class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='BlogType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('type_name', models.CharField(max_length=15)), ], ), migrations.CreateModel( name='ReadNum', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('read_num', models.IntegerField(default=0)), ('object_id', models.PositiveIntegerField()), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='contenttypes.ContentType')), ], ), migrations.CreateModel( name='LikeNum', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('like_num', models.IntegerField(default=0)), ('object_id', models.PositiveIntegerField()), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='contenttypes.ContentType')), ], ), migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50)), ('content', ckeditor_uploader.fields.RichTextUploadingField()), ('created_time', models.DateTimeField()), ('last_updated_time', models.DateTimeField(auto_now=True)), ('create_month', models.CharField(default='May', max_length=50)), ('img_url', models.ImageField(blank=True, upload_to='images')), ('author', models.ForeignKey(default=None, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL)), ('blog_type', models.ForeignKey(default=None, on_delete=django.db.models.deletion.DO_NOTHING, to='blog.BlogType')), ], options={ 'ordering': ['-created_time'], }, bases=(models.Model, blog.models.ReadNumExpandMethod, blog.models.LikeNumExpandMethod), ), ]
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('blog', '0001_initial'), ] operations = [ migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('vote_score', models.IntegerField(db_index=True, default=0)), ('num_vote_up', models.PositiveIntegerField(db_index=True, default=0)), ('num_vote_down', models.PositiveIntegerField(db_index=True, default=0)), ('title', models.CharField(max_length=50, verbose_name='Başlık')), ('content', ckeditor.fields.RichTextField()), ('created_date', models.DateTimeField(auto_now_add=True, verbose_name='Oluşturulma Tarihi')), ('slug', models.SlugField(editable=False, null=True, unique=True, verbose_name='Slug')), ('cover_photo', models.ImageField(blank=True, help_text='Kapak Fotoğrafı Yükleyiniz', upload_to=blog.models.upload_to, verbose_name='Kapak fotoğrafı')), ('author', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='Yazar', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name_plural': 'Gönderiler', 'ordering': ['-id'], }, ), migrations.DeleteModel(name='Camp', ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50)), ('slug', models.SlugField(unique=True)), ], ), migrations.CreateModel( name='Menuitem', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True)), ('url', models.CharField(default='#', max_length=150)), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.Menuitem')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(db_index=True, max_length=150)), ('slug', models.SlugField(max_length=150, unique=True)), ('body', ckeditor_uploader.fields.RichTextUploadingField(max_length=3000)), ('date_pub', models.DateTimeField(auto_now_add=True)), ('image', models.ImageField(blank=True, null=True, upload_to='images/')), ('category', models.ManyToManyField(default=blog.models.get_first_category, related_name='posts', to='blog.Category')), ], options={ 'ordering': ['-date_pub'], }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='SideBar', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50, verbose_name='标题')), ('display_type', models.PositiveIntegerField(choices=[(1, 'HTML'), (2, '最新文章'), (3, '最热文章'), (4, '最近评论')], default=1, verbose_name='展示类型')), ('content', models.CharField(blank=True, help_text='如果设置的不是HTML类型,可为空', max_length=500, verbose_name='内容')), ('status', models.PositiveIntegerField(choices=[(1, '展示'), (0, '隐藏')], default=1, verbose_name='状态')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('owner', models.ForeignKey(on_delete=models.SET(blog.models.get_default_user), to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '侧边栏', 'verbose_name_plural': '侧边栏', }, ), migrations.CreateModel( name='Link', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50, verbose_name='标题')), ('href', models.URLField(verbose_name='链接')), ('status', models.PositiveIntegerField(choices=[(1, '正常'), (0, '删除')], default=1, verbose_name='状态')), ('weight', models.PositiveIntegerField(choices=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)], default=1, help_text='权重高展示顺序靠前', verbose_name='权重')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('owner', models.ForeignKey(on_delete=models.SET(blog.models.get_default_user), to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '友链', 'verbose_name_plural': '友链', }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='MetaData', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_on', models.DateTimeField(default=django.utils.timezone.now)), ('updated_on', models.DateTimeField(default=django.utils.timezone.now)), ], options={ 'ordering': ['updated_on'], }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', djongo.models.fields.EmbeddedModelField(model_container=blog.models.Blog, model_form_class=blog.models.BlogForm, null=True)), ('slug', models.SlugField(max_length=200, unique=True)), ('meta_data', djongo.models.fields.EmbeddedModelField(model_container=blog.models.MetaData, null=True)), ('headline', models.CharField(max_length=255)), ('content', models.TextField()), ('status', models.IntegerField(choices=[(0, 'Draft'), (1, 'Publish')], default=0)), ('object_id', models.PositiveIntegerField(default=True)), ('author', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='blog_author', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('comment_text', models.TextField()), ('approved_comment', models.BooleanField(default=False)), ('created_on', models.DateTimeField(auto_now_add=True)), ('name', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('post', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='blog.Post')), ], ), ]
class Migration(migrations.Migration): dependencies = [ ('blog', '0003_post_post_pic'), ] operations = [ migrations.AddField( model_name='post', name='page_click', field=models.PositiveIntegerField(default=0), ), migrations.AlterField( model_name='post', name='post_pic', field=models.ImageField(upload_to=blog.models.user_directory_path), ), ]
class Migration(migrations.Migration): dependencies = [ ('blog', '0005_auto_20180619_1042'), ] operations = [ migrations.CreateModel( name='Quote', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('quote', models.CharField(max_length=1024)), ('movie', models.CharField(max_length=255)), ('actor', models.CharField(max_length=255)), ('year', models.PositiveIntegerField(validators=[django.core.validators.MinValueValidator(limit_value=1900), django.core.validators.MaxValueValidator(limit_value=2050)])), ('imdb', models.URLField()), ], ), migrations.AlterField( model_name='blogpage', name='body', field=wagtail.core.fields.StreamField((('main', wagtail.core.blocks.RichTextBlock(classname='full')), ('quote', blog.models.QuoteChooserBlock()), ('related', wagtail.core.blocks.PageChooserBlock(target_model=['blog.BlogPage'])), ('embedded_video', wagtail.embeds.blocks.EmbedBlock(icon='media')))), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100)), ('body', models.TextField(null=True)), ('image', models.ImageField(null=True, upload_to=blog.models.get_file_path)), ('created_at', models.DateTimeField(auto_now_add=True)), ('published_on', models.DateTimeField(null=True)), ('views', models.PositiveIntegerField(default=0)), ('status', models.CharField(choices=[('Draft', 'Draft'), ('Publish', 'Publish')], max_length=50)), ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blog_author', to=settings.AUTH_USER_MODEL)), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, verbose_name='名称')), ('status', models.PositiveIntegerField(choices=[(1, '正常'), (0, '删除')], default=1, verbose_name='状态')), ('is_nav', models.BooleanField(default=False, verbose_name='是否为导航')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('owner', models.ForeignKey(on_delete=models.SET( blog.models.get_default_user), to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '分类', 'verbose_name_plural': '分类', }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=10, verbose_name='名称')), ('status', models.PositiveIntegerField(choices=[(1, '正常'), (0, '删除')], default=1, verbose_name='状态')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('owner', models.ForeignKey(on_delete=models.SET( blog.models.get_default_user), to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '标签', 'verbose_name_plural': '标签', }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=255, verbose_name='标题')), ('desc', models.CharField(blank=True, max_length=1024, verbose_name='摘要')), ('content', models.TextField(help_text='正文必须为MarkDown格式', verbose_name='正文')), ('status', models.PositiveIntegerField(choices=[(1, '正常'), (0, '删除'), (2, '草稿')], default=1, verbose_name='状态')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('category', models.ForeignKey(on_delete=models.SET( blog.models.get_default_category), to='blog.Category', verbose_name='分类')), ('owner', models.ForeignKey(on_delete=models.SET( blog.models.get_default_user), to=settings.AUTH_USER_MODEL, verbose_name='作者')), ('tag', models.ManyToManyField(to='blog.Tag', verbose_name='标签')), ], options={ 'verbose_name': '文章', 'verbose_name_plural': '文章', 'ordering': ['-id'], }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0009_alter_user_last_name_max_length'), ] operations = [ migrations.CreateModel( name='UserAccount', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='作者昵称、2~30个字符', max_length=30, unique=True, verbose_name='username')), ('email_ac', models.BooleanField(default=False, verbose_name='邮箱状态')), ('mobile', models.CharField(error_messages={'unique': '此手机号已注册'}, help_text='手机号', max_length=11, unique=True, verbose_name='手机号')), ('header', models.URLField(default='', verbose_name='头像')), ('desc', models.TextField(blank=True, help_text='200字描述一下自己', max_length=200, null=True, verbose_name='简介')), ('alipay', models.ImageField(blank=True, null=True, upload_to='dsm/alipay/', verbose_name='支付宝打赏码')), ('wechat', models.ImageField(blank=True, null=True, upload_to='dsm/wechat/', verbose_name='微信打赏码')), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ 'verbose_name': '账户', 'verbose_name_plural': '账户', 'db_table': 'user_account', }, managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='Advertisement', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ad_name', models.CharField(max_length=20, verbose_name='广告名')), ('image', models.URLField(blank=True, verbose_name='图片')), ('link', models.URLField(verbose_name='广告链接')), ('adtype', models.PositiveSmallIntegerField(blank=True, choices=[(0, '右侧方形广告'), (1, '左侧长条广告')], null=True, verbose_name='广告类型')), ('remark', models.TextField(blank=True, max_length=64, null=True, verbose_name='备注')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='添加时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最近修改')), ('end', models.DateTimeField(null=True, verbose_name='结束时间')), ], options={ 'verbose_name': '广告', 'verbose_name_plural': '广告', 'db_table': 'advertisement', }, ), migrations.CreateModel( name='Blog', fields=[ ('id', models.CharField(default=shortuuid.main.ShortUUID.random, max_length=12, primary_key=True, serialize=False)), ('title', models.CharField(help_text='1~32个字', max_length=32, verbose_name='标题')), ('cover', models.URLField(blank=True, default='', verbose_name='封面')), ('content', models.TextField(blank=True, null=True, verbose_name='内容')), ('source', models.URLField(blank=True, help_text='如果转载, 则提供原文链接', null=True, verbose_name='原文链接')), ('is_fine', models.BooleanField(default=False, verbose_name='站长推荐')), ('is_top', models.BooleanField(default=False, verbose_name='是否置顶')), ('read', models.PositiveIntegerField(default=0, verbose_name='阅读数')), ('like', models.PositiveIntegerField(default=0, verbose_name='点赞数')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='发表时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最后修改')), ('is_active', models.BooleanField(default=False, verbose_name='是否可用')), ('author', models.ForeignKey(limit_choices_to={'is_active': True, 'is_staff': True}, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '文章', 'verbose_name_plural': '文章', 'db_table': 'blog', }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('pre_cat', models.CharField(choices=[('A', '文学类'), ('B', '技术类')], max_length=1, verbose_name='前置分类')), ('cat', models.CharField(help_text='1~12个字', max_length=12, verbose_name='类别')), ], options={ 'verbose_name': '类别', 'verbose_name_plural': '类别', 'db_table': 'category', }, ), migrations.CreateModel( name='Expand', fields=[ ('key', models.CharField(help_text='1~16字符', max_length=16, primary_key=True, serialize=False, verbose_name='键')), ('value', models.CharField(help_text='1~32字符', max_length=32, verbose_name='值')), ('remark', models.TextField(max_length=100, null=True, verbose_name='备注')), ('mod', models.DateTimeField(auto_now=True, verbose_name='上次变更')), ], options={ 'verbose_name': '拓展数据', 'verbose_name_plural': '拓展数据', 'db_table': 'expand', }, ), migrations.CreateModel( name='Link', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('link', models.URLField(help_text='完整的网站首页地址', max_length=64, unique=True, verbose_name='链接')), ('link_name', models.CharField(help_text='网站的名字', max_length=32, verbose_name='链接名称')), ('cat', models.PositiveSmallIntegerField(choices=[(0, '公益链接'), (1, '个人主页'), (2, '商业广告')], default=1, help_text='网站类型', verbose_name='链接类型')), ('email', models.EmailField(help_text='有特殊情况方便联系', max_length=32, verbose_name='邮箱')), ], options={ 'verbose_name': '友链', 'verbose_name_plural': '友链', 'db_table': 'link', }, ), migrations.CreateModel( name='Music', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64, verbose_name='音乐名')), ('author', models.CharField(max_length=20, verbose_name='歌手')), ('code', models.TextField(max_length=300, verbose_name='外链代码')), ('mod', models.DateTimeField(auto_now=True, verbose_name='最后变更')), ('is_active', models.BooleanField(default=True, verbose_name='是否可用')), ], options={ 'verbose_name': '外链音乐', 'verbose_name_plural': '外链音乐', 'db_table': 'music', }, ), migrations.CreateModel( name='Notice', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('title', models.CharField(help_text='1~20个字', max_length=20, verbose_name='标题')), ('content', models.TextField(verbose_name='内容')), ], options={ 'verbose_name': '公告', 'verbose_name_plural': '公告', 'db_table': 'notice', }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('add', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('mod', models.DateTimeField(auto_now=True, verbose_name='更新修改')), ('is_active', models.BooleanField(default=True, verbose_name='逻辑删除')), ('tag', models.CharField(help_text='1~12个字', max_length=12, unique=True, verbose_name='标签')), ], options={ 'verbose_name': '标签', 'verbose_name_plural': '标签', 'db_table': 'tag', }, ), migrations.AlterUniqueTogether( name='music', unique_together={('name', 'author')}, ), migrations.AddField( model_name='blog', name='cat', field=models.ForeignKey(limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='cblogs', to='blog.Category', verbose_name='分类'), ), migrations.AddField( model_name='blog', name='music', field=models.ForeignKey(blank=True, limit_choices_to={'is_active': True}, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mblogs', to='blog.Music', verbose_name='背景音乐'), ), migrations.AddField( model_name='blog', name='tags', field=models.ManyToManyField(blank=True, limit_choices_to={'is_active': True}, related_name='tblogs', to='blog.Tag', verbose_name='标签'), ), migrations.CreateModel( name='Author', fields=[ ], options={ 'verbose_name': '账户中心', 'verbose_name_plural': '账户中心', 'proxy': True, 'indexes': [], }, bases=('blog.useraccount',), managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='AuthorBlog', fields=[ ], options={ 'verbose_name': '我的文章', 'verbose_name_plural': '我的文章', 'proxy': True, 'indexes': [], }, bases=('blog.blog',), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=150)), ('slug', models.SlugField(max_length=150, unique=True)), ], options={ 'verbose_name': 'Категория', 'verbose_name_plural': 'Категории', 'ordering': ('name', ), }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField(max_length=300, verbose_name='Текст комментария')), ('date', models.DateTimeField(auto_now_add=True)), ('comment_likes', models.PositiveIntegerField(default=0)), ('comment_dislikes', models.PositiveIntegerField(default=0)), ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Комментарий', 'verbose_name_plural': 'Комментарии', 'ordering': ('post', 'author'), }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=64, verbose_name='Заголовок')), ('slug', models.SlugField(max_length=64, unique=True)), ('text', models.TextField(verbose_name='Текст поста')), ('date', models.DateTimeField(auto_now_add=True)), ('post_likes', models.PositiveIntegerField(default=0)), ('post_dislikes', models.PositiveIntegerField(default=0)), ('image', models.ImageField(blank=True, upload_to=blog.models.get_upload_path, verbose_name='Картинка')), ('draft', models.BooleanField(default=False, verbose_name='Черновик')), ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.category', verbose_name='Категория')), ], options={ 'verbose_name': 'Пост', 'verbose_name_plural': 'Посты', 'ordering': ('title', ), }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.CharField(max_length=64, verbose_name='Hashtag')), ], ), migrations.CreateModel( name='PostLike', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('like_or_dislike', models.CharField(choices=[('LIKE', 'like'), ('DISLIKE', 'dislike'), (None, 'None')], default=None, max_length=7)), ('for_post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.post')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='post', name='tag', field=models.ManyToManyField(blank=True, related_name='POSTS', to='blog.Tag'), ), migrations.CreateModel( name='CommentLike', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('like_or_dislike', models.CharField(choices=[('LIKE', 'like'), ('DISLIKE', 'dislike'), (None, 'None')], default=None, max_length=7)), ('for_com', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.comment')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='comment', name='post', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.post'), ), migrations.AlterIndexTogether( name='post', index_together={('slug', )}, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0008_alter_user_username_max_length'), ] operations = [ migrations.CreateModel( name='MyUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('username', models.CharField(max_length=30, unique=True, verbose_name='Логин')), ('rateable', models.BooleanField(default=True)), ('avatar', imagekit.models.fields.ProcessedImageField(blank=True, upload_to=blog.models.MyUser.user_directory_path, verbose_name='Аватар')), ('email', models.EmailField(max_length=254, unique=True)), ('is_active', models.BooleanField(default=True, verbose_name='Активен')), ('is_staff', models.BooleanField(default=False, verbose_name='Персонал')), ('moderated', models.BooleanField(default=False, verbose_name='Модерируется')), ('moderator', models.BooleanField(default=False, verbose_name='Модератор')), ('user_last_login', models.DateTimeField(auto_now=True)), ('date_joined', models.DateTimeField(auto_now_add=True)), ('can_post', models.BooleanField(default=True, verbose_name='Может добавлять посты')), ('can_comment', models.BooleanField(default=True, verbose_name='Может комментировать')), ('can_complain', models.BooleanField(default=True, verbose_name='Может жаловаться')), ('rating', models.FloatField(default=0.0, verbose_name='Рейтинг')), ('votes_amount', models.CharField(choices=[('U', 'Unlimited'), ('N', 'Normal'), ('B', 'Blocked')], default='N', max_length=1)), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ], options={ 'verbose_name_plural': 'Пользователи', }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=30, unique=True)), ('description', models.TextField(max_length=400)), ('slug', models.CharField(blank=True, max_length=250, verbose_name='URL')), ('order', models.SmallIntegerField(blank=True, default=1)), ], options={ 'verbose_name_plural': 'categories', 'ordering': ['order'], }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField(max_length=3700)), ('removed', models.BooleanField(default=False)), ('created', models.DateTimeField(auto_now_add=True)), ('rating', models.FloatField(default=0.0, verbose_name='Рейтинг')), ('can_complain', models.BooleanField(default=True, verbose_name='Разрешено жаловаться')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.Comment')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Complain', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('edited', models.DateTimeField(auto_now=True)), ('score', models.FloatField(blank=True, default=0, null=True)), ('users_complained', models.TextField(blank=True, default='{}', max_length=2000, null=True)), ('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='blog.Comment')), ], options={ 'verbose_name_plural': 'Жалобы', 'ordering': ['edited'], }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('mform_type', models.CharField(blank=True, choices=[('Article', 'Статья'), ('SoftwareApplication', 'Приложение'), ('BlogPosting', 'Пост'), ('NewsArticle', 'Новость'), ('WebSite', 'Сайт')], max_length=30, null=True, verbose_name='Тип')), ('title', models.CharField(max_length=150, verbose_name='Заголовок')), ('private', models.BooleanField(default=False, verbose_name='NSFW')), ('rateable', models.BooleanField(default=True, verbose_name='Разрешено голосовать')), ('comments', models.BooleanField(default=True, verbose_name='Разрешено комментировать')), ('can_complain', models.BooleanField(default=True, verbose_name='Разрешено жаловаться')), ('locked', models.BooleanField(default=False, verbose_name='Не разрешать редактировать автору')), ('description', models.TextField(max_length=700, verbose_name='Описание')), ('text', models.TextField()), ('post_image', models.FileField(blank=True, max_length=500, null=True, upload_to='2017/3/31/', validators=[blog.functions.validate_post_image])), ('post_image_gif', models.FileField(blank=True, max_length=500, null=True, upload_to='2017/3/31/')), ('image_url', models.URLField(blank=True, max_length=1000, null=True)), ('main_image_srcset', models.TextField(blank=True, max_length=800, null=True)), ('post_thumbnail', models.ImageField(blank=True, max_length=500, null=True, upload_to='2017/3/31/')), ('created', models.DateTimeField(auto_now_add=True)), ('edited', models.DateTimeField(auto_now=True)), ('published', models.DateTimeField(default=django.utils.timezone.now)), ('rating', models.FloatField(default=0.0, verbose_name='Рейтинг')), ('url', models.CharField(blank=True, max_length=330)), ('status', models.CharField(choices=[('D', 'Черновик/удалён'), ('P', 'Опубликован')], default='D', max_length=1, verbose_name='Статус')), ('author', models.ForeignKey(default=1, on_delete=django.db.models.deletion.SET_DEFAULT, to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Category')), ], options={ 'verbose_name_plural': 'posts', 'ordering': ['-published'], }, bases=(meta.models.ModelMeta, models.Model), ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=30)), ('url', models.CharField(max_length=140, unique=True)), ('created', models.DateTimeField(auto_now_add=True)), ('private', models.BooleanField(default=False)), ('rateable', models.BooleanField(default=True)), ('description', models.TextField(blank=True, max_length=700, null=True)), ('rating', models.FloatField(default=0.0, verbose_name='Рейтинг')), ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category')), ], options={ 'verbose_name_plural': 'Тэги', 'ordering': ['name'], }, ), migrations.CreateModel( name='UserVotes', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('votes_amount', models.IntegerField(default=10)), ('weight', models.FloatField(default=0.25)), ('vote_type', models.CharField(choices=[('U', 'Unlimited'), ('N', 'Normal'), ('B', 'Blocked')], default='N', max_length=1)), ('block_date', models.DateTimeField(blank=True, null=True)), ('manual', models.BooleanField(default=False)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='post', name='main_tag', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Tag'), ), migrations.AddField( model_name='post', name='tags', field=models.ManyToManyField(blank=True, related_name='posts', related_query_name='tag', to='blog.Tag'), ), migrations.AddField( model_name='complain', name='post', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='blog.Post'), ), migrations.AddField( model_name='comment', name='post', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Post'), ), migrations.AddField( model_name='myuser', name='moderator_of_categories', field=models.ManyToManyField(blank=True, to='blog.Category', verbose_name='Модерирует категории'), ), migrations.AddField( model_name='myuser', name='moderator_of_tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='Модерирует тэги'), ), migrations.AddField( model_name='myuser', name='user_permissions', field=models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions'), ), ]
class Migration(migrations.Migration): dependencies = [ ('blog', '0003_auto_20180131_2021'), ] operations = [ migrations.CreateModel( name='Img', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='图片名(描述)')), ('head_pic', models.ImageField(upload_to='blog/', verbose_name='图片')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='creation time')), ], options={ 'verbose_name_plural': '图片', 'ordering': ['-created'], 'verbose_name': '图片', }, ), migrations.AlterModelOptions( name='category', options={ 'verbose_name': '类别', 'verbose_name_plural': '类别' }, ), migrations.AlterModelOptions( name='post', options={ 'ordering': ['-created_time'], 'verbose_name': '文章', 'verbose_name_plural': '文章' }, ), migrations.AlterModelOptions( name='tag', options={ 'verbose_name': '标签', 'verbose_name_plural': '标签' }, ), migrations.AlterField( model_name='category', name='cover', field=models.ImageField( blank=True, upload_to='media/covers/categories/%Y/%m/%d/', verbose_name='封面(教程使用)'), ), migrations.AlterField( model_name='category', name='cover_caption', field=models.CharField(blank=True, max_length=255, verbose_name='封面标题(教程使用)'), ), migrations.AlterField( model_name='category', name='creator', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者'), ), migrations.AlterField( model_name='category', name='description', field=models.TextField(blank=True, verbose_name='描述'), ), migrations.AlterField( model_name='category', name='genre', field=models.PositiveSmallIntegerField(choices=[(1, '普通'), (2, '教程')], default=1, verbose_name='类型'), ), migrations.AlterField( model_name='category', name='name', field=models.CharField(max_length=100, verbose_name='名字'), ), migrations.AlterField( model_name='category', name='resource', field=models.URLField(blank=True, verbose_name='资源(废弃)'), ), migrations.AlterField( model_name='category', name='slug', field=models.SlugField(unique=True, verbose_name='英文名'), ), migrations.AlterField( model_name='category', name='status', field=models.PositiveSmallIntegerField(blank=True, choices=[(1, '进行中'), (2, '已完成')], null=True, verbose_name='状态(教程使用)'), ), migrations.AlterField( model_name='category', name='title', field=models.CharField(blank=True, max_length=255, verbose_name='标题'), ), migrations.AlterField( model_name='post', name='author', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者'), ), migrations.AlterField( model_name='post', name='body', field=models.TextField(verbose_name='内容'), ), migrations.AlterField( model_name='post', name='category', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='类别'), ), migrations.AlterField( model_name='post', name='cover', field=models.ImageField(blank=True, upload_to=blog.models.post_cover_path, verbose_name='封面'), ), migrations.AlterField( model_name='post', name='created_time', field=model_utils.fields.AutoCreatedField( default=django.utils.timezone.now, editable=False, verbose_name='创建时间'), ), migrations.AlterField( model_name='post', name='excerpt', field=models.CharField(blank=True, max_length=255, verbose_name='摘要'), ), migrations.AlterField( model_name='post', name='modified_time', field=model_utils.fields.AutoLastModifiedField( default=django.utils.timezone.now, editable=False, verbose_name='修改时间'), ), migrations.AlterField( model_name='post', name='pub_date', field=models.DateTimeField(blank=True, null=True, verbose_name='发布时间'), ), migrations.AlterField( model_name='post', name='status', field=models.PositiveSmallIntegerField(choices=[ (1, '发布'), (2, '草稿'), (3, '隐藏'), (4, '秘密') ], default=2, verbose_name='状态'), ), migrations.AlterField( model_name='post', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='标签'), ), migrations.AlterField( model_name='post', name='title', field=models.CharField(max_length=255, verbose_name='标题'), ), migrations.AlterField( model_name='post', name='views', field=models.PositiveIntegerField(default=0, editable=False, verbose_name='查看次数'), ), migrations.AlterField( model_name='tag', name='name', field=models.CharField(max_length=100, verbose_name='名字'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('destinations', '0010_auto_20210209_1529'), ] operations = [ migrations.CreateModel( name='BlogType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=255)), ('active', models.BooleanField(default=False)), ('order', models.PositiveIntegerField(default=0)), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ], options={ 'db_table': 'blog_type', 'ordering': ['order'], }, ), migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(default='', max_length=255)), ('keywords', models.TextField(default='')), ('titleSEO', models.TextField(default='', max_length=255)), ('slug', autoslug.fields.AutoSlugField(always_update=True, editable=False, populate_from='title', unique_with=['title'])), ('content', ckeditor_uploader.fields.RichTextUploadingField()), ('thumbnail', imagekit.models.fields.ProcessedImageField( blank=True, upload_to=blog.models.path_and_rename)), ('banner', imagekit.models.fields.ProcessedImageField( blank=True, upload_to=blog.models.path_and_rename)), ('published', models.BooleanField(default=False)), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('blog_type', models.ManyToManyField(to='blog.BlogType')), ('destination', models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='destinations.destination')), ], options={ 'db_table': 'blog_posts', }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100, unique=True)), ('image', models.ImageField(blank=True, height_field='height_field', null=True, upload_to=blog.models.upload_location, width_field='width_field')), ('height_field', models.IntegerField(default=0, null=True)), ('width_field', models.IntegerField(default=0, null=True)), ('content', models.TextField()), ('timestamp', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('category', models.CharField(choices=[('gn', 'General'), ('pg', 'Programming'), ('mv', 'Movies'), ('bk', 'Books'), ('sp', 'Sports')], default='General', max_length=2)), ('user', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['-timestamp', '-updated'], }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('object_id', models.PositiveIntegerField()), ('content', models.TextField()), ('timestamp', models.DateTimeField(auto_now_add=True)), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), ('user_comment', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='name')), ('title', models.CharField(blank=True, max_length=255, verbose_name='title')), ('slug', models.SlugField(unique=True, verbose_name='slug')), ('description', models.TextField(blank=True, verbose_name='description')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='creation time')), ('genre', models.PositiveSmallIntegerField(choices=[(1, 'collection'), (2, 'tutorial')], default=1, verbose_name='genre')), ('status', models.PositiveSmallIntegerField(blank=True, choices=[(1, 'ongoing'), (2, 'finished')], null=True, verbose_name='status')), ('cover', models.ImageField( blank=True, upload_to='/static/covers/categories/%Y/%m/%d/', verbose_name='cover')), ('cover_caption', models.CharField(blank=True, max_length=255, verbose_name='cover caption')), ('resource', models.URLField(blank=True, verbose_name='resource')), ('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='creator')), ], ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.PositiveSmallIntegerField(choices=[(1, 'published'), (2, 'draft'), (3, 'hidden')], default=2, verbose_name='status')), ('title', models.CharField(max_length=255, verbose_name='title')), ('body', models.TextField(verbose_name='body')), ('excerpt', models.CharField(blank=True, max_length=255, verbose_name='excerpt')), ('views', models.PositiveIntegerField(default=0, editable=False, verbose_name='views')), ('pub_date', models.DateTimeField(blank=True, null=True, verbose_name='publication time')), ('created_time', model_utils.fields.AutoCreatedField( default=django.utils.timezone.now, editable=False, verbose_name='creation time')), ('modified_time', model_utils.fields.AutoLastModifiedField( default=django.utils.timezone.now, editable=False, verbose_name='modification time')), ('cover', models.ImageField(blank=True, upload_to=blog.models.post_cover_path, verbose_name='cover')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='category')), ], options={ 'ordering': ['-created_time'], }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='name')), ], ), migrations.AddField( model_name='post', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='tags'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(max_length=100, unique=True, verbose_name='文章标题')), ('content', mdeditor.fields.MDTextField(verbose_name='文章内容')), ('type', models.CharField(choices=[('a', '文章'), ('p', '页面')], default='a', max_length=1, verbose_name='文章类型')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('views', models.PositiveIntegerField(default=0, verbose_name='浏览量')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), ], options={ 'verbose_name': '2-文章', 'verbose_name_plural': '2-文章', 'ordering': ['-order', '-add_time'], }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=30, unique=True, verbose_name='分类')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('slug', models.SlugField(default='')), ('parent_category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='父级分类')), ], options={ 'verbose_name': '1-文章分类', 'verbose_name_plural': '1-文章分类', 'ordering': ['-order', 'add_time'], }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('content', models.TextField(max_length=250, verbose_name='评论内容')), ('is_enable', models.BooleanField(default=True, verbose_name='是否显示')), ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Article', verbose_name='评论文章')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='评论者')), ('parent_comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Comment', verbose_name='父评论')), ], options={ 'verbose_name': '3-文章评论', 'verbose_name_plural': '3-文章评论', }, ), migrations.CreateModel( name='GuestBook', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('content', models.TextField(max_length=250, verbose_name='留言内容')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='留言者')), ], options={ 'verbose_name': '7-留言板', 'verbose_name_plural': '7-留言板', 'ordering': ['author', '-id'], }, ), migrations.CreateModel( name='Link', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=30, unique=True, verbose_name='链接名称')), ('order', models.PositiveSmallIntegerField(default=0, help_text='越大越前', verbose_name='排序')), ('url', models.URLField(verbose_name='链接地址')), ('is_enable', models.BooleanField(default=True, verbose_name='是否启用')), ], options={ 'verbose_name': '8-友情链接', 'verbose_name_plural': '8-友情链接', 'ordering': ['order'], }, ), migrations.CreateModel( name='Photo', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(help_text='用于当作照片名称', max_length=50, verbose_name='图片标题')), ('desc', models.TextField(blank=True, help_text='用于图片标签的title属性', max_length=200, null=True, verbose_name='图片描述')), ('image', models.ImageField(help_text='默认保存在/media/photo/', upload_to=blog.models.photo_path, verbose_name='图片')), ], options={ 'verbose_name': '6-相册图片', 'verbose_name_plural': '6-相册图片', }, ), migrations.CreateModel( name='Setting', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='站点名称')), ('desc', models.TextField(blank=True, default='', verbose_name='站点描述')), ('keyword', models.TextField(blank=True, default='', verbose_name='站点关键字')), ('article_desc_len', models.IntegerField(default=250, verbose_name='文章摘要长度')), ('sidebar_article_count', models.IntegerField(default=10, verbose_name='侧边栏文章条数')), ('enable_photo', models.BooleanField(default=True, verbose_name='是否启用相册')), ('user_verify_email', models.BooleanField(default=False, verbose_name='用户注册是否验证邮箱')), ('enable_multi_user', models.BooleanField( default=False, help_text='是否启用多用户博客系统, 注册用户只具有对自己文章的增删改查权限', verbose_name='是否启用多用户博客系统')), ('github_user', models.CharField(default='enjoy-binbin', help_text='https://github.com/enjoy-binbin', max_length=50, verbose_name='github账号')), ('github_repository', models.CharField( default='Django-blog', help_text='https://github.com/enjoy-binbin/Django-blog', max_length=50, verbose_name='github仓库')), ], options={ 'verbose_name': '0-站点配置', 'verbose_name_plural': '0-站点配置', }, ), migrations.CreateModel( name='SideBar', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('title', models.CharField(max_length=30, verbose_name='标题')), ('content', models.TextField(verbose_name='内容')), ('order', models.PositiveSmallIntegerField(default=1, help_text='越大越前', verbose_name='排序')), ('is_enable', models.BooleanField(default=True, verbose_name='是否启用')), ], options={ 'verbose_name': '5-侧边栏', 'verbose_name_plural': '5-侧边栏', 'ordering': ['-order'], }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('add_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='添加时间')), ('modify_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='修改时间')), ('name', models.CharField(max_length=25, unique=True, verbose_name='标签名')), ], options={ 'verbose_name': '4-文章标签', 'verbose_name_plural': '4-文章标签', 'ordering': ['name'], }, ), migrations.AddField( model_name='article', name='category', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='文章分类'), ), migrations.AddField( model_name='article', name='tags', field=models.ManyToManyField(blank=True, to='blog.Tag', verbose_name='标签'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100, unique=True)), ('timestamp', models.DateField(auto_now_add=True)), ('image', models.ImageField(blank=True, null=True, upload_to=blog.models.upload_image, validators=[blog.models.validate_size])), ('active', models.BooleanField(default=False)), ('first_page', models.BooleanField(default=False)), ('slug', models.SlugField(allow_unicode=True, blank=True, null=True)), ('first_page_text', models.CharField(blank=True, max_length=250, null=True)), ('text', tinymce.models.HTMLField(blank=True, null=True)), ('github_url', models.URLField(blank=True, null=True)), ], managers=[ ('my_query', django.db.models.manager.Manager()), ], ), migrations.CreateModel( name='CategoryBlog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True)), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('parent', mptt.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.CategoryBlog')), ], options={ 'abstract': False, }, ), migrations.AddField( model_name='blog', name='category', field=models.ManyToManyField(blank=True, null=True, to='blog.CategoryBlog'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), ('title', models.CharField(max_length=250, verbose_name='title')), ('slug', models.SlugField(allow_unicode=True, help_text='A short label containing only letters, numbers, underscores or hyphens for URL', max_length=255, unique=True, verbose_name='slug')), ('theme', models.CharField(default='default', max_length=250, verbose_name='theme')), ('markup', models.IntegerField(choices=[(0, 'html'), (1, 'markdown'), (2, 'text')], default=0, verbose_name='markup')), ('allow_comments', models.BooleanField(default=True, verbose_name='allow comments')), ('chunk_size', models.PositiveIntegerField(default=10, verbose_name='pagination chunk size')), ('block_size', models.PositiveIntegerField(default=10, verbose_name='pagination block size')), ('rss_size', models.PositiveIntegerField(default=10, verbose_name='RSS size')), ], options={ 'verbose_name': 'blog', 'verbose_name_plural': 'blogs', }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), ('title', models.CharField(max_length=128, verbose_name='title')), ('slug', models.SlugField(allow_unicode=True, help_text='A short label containing only letters, numbers, underscores or hyphens for URL', max_length=255, unique=True, verbose_name='slug')), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('blog', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='categories', to='blog.Blog', verbose_name='blog')), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='blog.Category', verbose_name='parent')), ], options={ 'verbose_name': 'category', 'verbose_name_plural': 'categories', }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), ('is_removed', models.BooleanField(default=False)), ('title', models.CharField(help_text="The page title as you'd like it to be seen by the public", max_length=255, verbose_name='title')), ('description', models.CharField(blank=True, help_text="A short description not longer than 155 characters. Don't use double quotes.", max_length=255, verbose_name='description')), ('keywords', models.CharField(blank=True, help_text="A comma-separated list of keywords. Don't use double quotes.", max_length=255, verbose_name='keywords')), ('slug', models.SlugField(allow_unicode=True, help_text='A short label containing only letters, numbers, underscores or hyphens for URL', max_length=255, verbose_name='slug')), ('excerpt', models.TextField(blank=True, help_text='A short description which does not contain HTML tags', verbose_name='excerpt')), ('content', models.TextField(verbose_name='content')), ('thumbnail', easy_thumbnails.fields.ThumbnailerImageField(blank=True, upload_to=blog.models.upload_directory_path, verbose_name='thumbnail')), ('status', models.IntegerField(choices=[(0, 'draft'), (1, 'published'), (2, 'hidden')], db_index=True, default=0, verbose_name='status')), ('allow_highlight', models.BooleanField(default=False, verbose_name='allow code highlighting')), ('allow_comments', models.BooleanField(default=True, verbose_name='allow comments')), ('published', models.DateTimeField(null=True, verbose_name='published date')), ('view_count', models.PositiveIntegerField(default=0, verbose_name='view count')), ('ip_address', models.GenericIPAddressField(verbose_name='IP address')), ('blog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='posts', to='blog.Blog', verbose_name='blog')), ('category', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='blog.Category', verbose_name='category')), ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blog_post_owned', to=settings.AUTH_USER_MODEL, verbose_name='owner')), ], options={ 'verbose_name': 'post', 'verbose_name_plural': 'posts', }, ), migrations.CreateModel( name='PostTag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True, verbose_name='Name')), ('slug', models.SlugField(allow_unicode=True, max_length=100, unique=True, verbose_name='slug')), ], options={ 'verbose_name': 'tag', 'verbose_name_plural': 'tags', }, ), migrations.CreateModel( name='TaggedPost', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('content_object', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Post')), ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blog_taggedpost_items', to='blog.PostTag')), ], options={ 'verbose_name': 'tagged post', 'verbose_name_plural': 'tagged posts', }, ), migrations.AddField( model_name='post', name='tags', field=taggit.managers.TaggableManager(blank=True, help_text='A comma-separated list of tags.', through='blog.TaggedPost', to='blog.PostTag', verbose_name='tags'), ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created', model_utils.fields.AutoCreatedField(default=django.utils.timezone.now, editable=False, verbose_name='created')), ('modified', model_utils.fields.AutoLastModifiedField(default=django.utils.timezone.now, editable=False, verbose_name='modified')), ('is_removed', models.BooleanField(default=False)), ('content', models.TextField(verbose_name='content')), ('username', models.CharField(blank=True, max_length=32, null=True, verbose_name='username')), ('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='email address')), ('url', models.URLField(blank=True, null=True, verbose_name='website URL')), ('ip_address', models.GenericIPAddressField(verbose_name='IP address')), ('status', models.IntegerField(choices=[(0, 'approved'), (1, 'flagged'), (2, 'deleted')], db_index=True, default=0, verbose_name='status')), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blog_comment_owned', to=settings.AUTH_USER_MODEL, verbose_name='owner')), ('parent', mptt.fields.TreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='blog.Comment', verbose_name='parent')), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='blog.Post', verbose_name='post')), ], options={ 'verbose_name': 'comment', 'verbose_name_plural': 'comments', }, managers=[ ('_tree_manager', django.db.models.manager.Manager()), ], ), migrations.CreateModel( name='Attachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(blank=True, max_length=255, null=True, verbose_name='file name')), ('uid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True, verbose_name='public identifier')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='created time')), ('file', models.FileField(upload_to=blog.models.upload_directory_path, verbose_name='uploaded file')), ('post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='blog.Post', verbose_name='post')), ], options={ 'verbose_name': 'attachment', 'verbose_name_plural': 'attachments', }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0012_alter_user_first_name_max_length'), ] operations = [ migrations.CreateModel( name='MyUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField( default=False, help_text= 'Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('first_name', models.CharField(blank=True, max_length=150, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), ('is_staff', models.BooleanField( default=False, help_text= 'Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField( default=True, help_text= 'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('username', models.CharField(max_length=200)), ('email', models.EmailField( help_text='Required', max_length=200, unique=True, validators=[ django.core.validators.RegexValidator( '^[a-zA-Z0-9]+([-._][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-.][a-zA-Z0-9]+)*\\.[a-zA-Z]{2,7}$', 'Invalid Email Address') ])), ('name', models.CharField( max_length=50, validators=[ django.core.validators.RegexValidator( '^[a-zA-Z ]+$', 'Only letters and spaces are allowed in Name.') ])), ('followers', models.PositiveIntegerField(default=0)), ('following', models.PositiveIntegerField(default=0)), ('image_user', models.ImageField(default='default-avatar.png', upload_to=blog.models.user_upload_path)), ('age', models.IntegerField( default=22, validators=[ django.core.validators.MaxValueValidator(110), django.core.validators.MinValueValidator(5) ])), ('bookmark_count', models.PositiveIntegerField(default=0)), ('groups', models.ManyToManyField( blank=True, help_text= 'The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('user_permissions', models.ManyToManyField( blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'abstract': False, }, managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='OtpModel', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('otp', models.IntegerField()), ('email', models.EmailField(max_length=254)), ('at_time', models.IntegerField()), ], ), migrations.CreateModel( name='Recipe', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50)), ('ingredients', models.TextField()), ('content', models.TextField()), ('category', models.TextField(choices=[('starter', 'Starters'), ('main_course', 'Main Course'), ('desserts', 'Desserts'), ('drinks', 'Drinks & Smoothies'), ('others', 'Others')], default='Starters')), ('veg', models.BooleanField()), ('cook_time', models.PositiveIntegerField()), ('read_time', models.PositiveIntegerField(default=5)), ('img', models.ImageField(upload_to=blog.models.upload_path)), ('published_on', models.DateTimeField(auto_now_add=True)), ('modified_on', models.DateTimeField(auto_now=True)), ('points', models.PositiveIntegerField(default=0)), ('like_is', models.BooleanField(default=False)), ('bookmark_is', models.BooleanField(default=False)), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipes', to=settings.AUTH_USER_MODEL)), ], options={ 'ordering': ['-published_on'], }, ), migrations.CreateModel( name='LikeSystem', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('active', models.IntegerField()), ('like_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.recipe')), ('liked_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='likes', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='BookmarkRecord', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('active', models.IntegerField()), ('bookmark_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.recipe')), ('bookmarked_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bookmarked', to=settings.AUTH_USER_MODEL)), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('deleted_at', models.DateTimeField(blank=True, default=None, null=True, verbose_name='删除时间')), ('title', models.CharField(max_length=255, verbose_name='标题')), ('description', models.CharField(max_length=255, verbose_name='描述/摘要')), ('views', models.PositiveIntegerField(default=0, verbose_name='访问量')), ('img', models.ImageField(upload_to=blog.models.image_upload_to, verbose_name='文章图片')), ('article', models.TextField(verbose_name='文章')), ('likes', models.PositiveIntegerField(default=0, verbose_name='点赞数')), ('topped', models.BooleanField(default=False, verbose_name='置顶')), ('status', models.CharField(choices=[('PART', '未发布'), ('PUBLISHED', '已发布')], max_length=10, verbose_name='文章状态')), ('display_order', models.IntegerField(default=999, verbose_name='标签排序')), ], options={ 'verbose_name': '文章', 'verbose_name_plural': '文章', 'ordering': ['display_order', 'pk'], }, ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('deleted_at', models.DateTimeField(blank=True, default=None, null=True, verbose_name='删除时间')), ('name', models.CharField(max_length=31, verbose_name='分类名称')), ('display_order', models.IntegerField(default=999, verbose_name='分类排序')), ], options={ 'verbose_name': '文章分类', 'verbose_name_plural': '文章分类', 'ordering': ['display_order', 'pk'], }, ), migrations.CreateModel( name='Comments', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('deleted_at', models.DateTimeField(blank=True, default=None, null=True, verbose_name='删除时间')), ('name', models.CharField(max_length=30, verbose_name='姓名')), ('email', models.EmailField(max_length=254)), ('content', models.TextField(verbose_name='评论内容')), ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Article', verbose_name='文章')), ('comment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Comments', verbose_name='被回复的评论')), ], options={ 'verbose_name': '评论', 'verbose_name_plural': '评论', }, ), migrations.CreateModel( name='Suggest', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('deleted_at', models.DateTimeField(blank=True, default=None, null=True, verbose_name='删除时间')), ('name', models.CharField(max_length=30, verbose_name='姓名')), ('email', models.EmailField(max_length=254)), ('suggest', models.TextField(max_length=300, verbose_name='意见')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('deleted_at', models.DateTimeField(blank=True, default=None, null=True, verbose_name='删除时间')), ('name', models.CharField(max_length=30, verbose_name='标签名称')), ('display_order', models.IntegerField(default=999, verbose_name='标签排序')), ('color', models.CharField(default='#FFE9DC', max_length=10, verbose_name='标签颜色')), ], options={ 'verbose_name': '文章标签', 'verbose_name_plural': '文章标签', 'ordering': ['display_order', 'pk'], }, ), migrations.AddField( model_name='article', name='category', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='所属分类'), ), migrations.AddField( model_name='article', name='tag', field=models.ManyToManyField(blank=True, help_text='标签id可以对应多个', null=True, to='blog.Tag', verbose_name='标签'), ), migrations.AddField( model_name='article', name='user', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='用户'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0008_alter_user_username_max_length'), ('contenttypes', '0002_remove_content_type_name'), ] operations = [ migrations.CreateModel( name='Profile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), ('is_superuser', models.BooleanField( default=False, help_text= 'Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('username', models.CharField( error_messages={ 'unique': 'A user with that username already exists.' }, help_text= 'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[ django.contrib.auth.validators. UnicodeUsernameValidator() ], verbose_name='username')), ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')), ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), ('is_staff', models.BooleanField( default=False, help_text= 'Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField( default=True, help_text= 'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('avatar', models.ImageField(default='user_pics/boss-1.png', upload_to='uploads/%Y/%m/%d', verbose_name='Avatar image of the user')), ('rating', models.IntegerField(default=0, verbose_name='Rating of the user')), ('groups', models.ManyToManyField( blank=True, help_text= 'The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('user_permissions', models.ManyToManyField( blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ 'ordering': ['-rating'], }, managers=[ ('objects', blog.models.UserManager()), ], ), migrations.CreateModel( name='Answer', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField(verbose_name='Full text of the answer')), ('creationTime', models.DateTimeField( default=django.utils.timezone.now, verbose_name='Date and time the answer was published')), ('rating', models.IntegerField(default=0, verbose_name='Votes ratio')), ('is_correct', models.BooleanField( default=False, verbose_name='If answer is marked as correct')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to=settings.AUTH_USER_MODEL, verbose_name='Author of the answer')), ], options={ 'ordering': ['-creationTime'], }, ), migrations.CreateModel( name='Like', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('value', models.IntegerField(choices=[(-1, 'DISLIKE'), (1, 'LIKE')], verbose_name='Like or dislike')), ('object_id', models.PositiveIntegerField( null=True, verbose_name='if of related object')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Author of the like')), ('content_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), ], ), migrations.CreateModel( name='Question', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=120, verbose_name='Title of the question')), ('text', models.TextField()), ('creationTime', models.DateTimeField( default=django.utils.timezone.now, verbose_name='Creation date of the question')), ('rating', models.IntegerField(default=0, verbose_name='Votes ratio')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='questions', to=settings.AUTH_USER_MODEL, verbose_name='Author of the Quetstion')), ], options={ 'ordering': ['-creationTime'], }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=15, verbose_name='Name of the tag')), ], options={ 'ordering': ['name'], }, ), migrations.AddField( model_name='question', name='tags', field=models.ManyToManyField(blank=True, related_name='questions', to='blog.Tag', verbose_name='tags of the Question'), ), migrations.AddField( model_name='answer', name='question', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='blog.Question', verbose_name='Question that is being answered'), ), migrations.AlterUniqueTogether( name='like', unique_together=set([('author', 'content_type', 'object_id')]), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=25)), ('slug', models.SlugField(allow_unicode=True, editable=False)), ('position', models.PositiveSmallIntegerField(db_index=True, unique=True)), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.Category')), ], options={ 'verbose_name': 'Category', 'verbose_name_plural': 'Categories', 'ordering': ('name', ), 'unique_together': {('slug', 'parent')}, }, ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('body', models.TextField()), ('draft', models.BooleanField(default=False)), ('slug', models.SlugField(allow_unicode=True, editable=False, max_length=200, unique=True)), ('publish_date', models.DateTimeField(blank=True, null=True)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('author', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='authorpost', to=settings.AUTH_USER_MODEL)), ('category', mptt.fields.TreeForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='postcategory', to='blog.Category')), ], options={ 'ordering': ['-publish_date', '-updated', '-timestamp'], 'index_together': {('id', 'slug')}, }, ), migrations.CreateModel( name='Photo', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file', models.ImageField( blank=True, null=True, unique=True, upload_to=blog.models.images_directory_path)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='photos', to='blog.Post')), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ], ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=250)), ('excerpt', models.TextField()), ('image', models.ImageField(default='posts/default.jpg', upload_to=blog.models.user_directory_path)), ('slug', models.SlugField(max_length=250, unique_for_date='publish')), ('publish', models.DateTimeField(default=django.utils.timezone.now)), ('content', models.TextField()), ('status', models.CharField(choices=[('draft', 'Draft'), ('published', 'Published')], default='draft', max_length=10)), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blog_posts', to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='blog.category')), ], options={ 'ordering': ('-publish', ), }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50)), ('email', models.EmailField(max_length=254)), ('content', models.TextField()), ('publish', models.DateTimeField(auto_now_add=True)), ('status', models.BooleanField(default=True)), ('lft', models.PositiveIntegerField(editable=False)), ('rght', models.PositiveIntegerField(editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(editable=False)), ('parent', mptt.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='blog.comment')), ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='blog.post')), ], options={ 'abstract': False, }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True)), ('slug', models.SlugField( help_text= 'Slug will be generated automatically from the name of the Category', max_length=100, unique=True)), ('width', models.PositiveIntegerField(default=0)), ('height', models.PositiveIntegerField(default=0)), ('starter_image_cat', models.ImageField(height_field='height', upload_to='starterImages', width_field='width')), ('description', ckeditor_uploader.fields.RichTextUploadingField( blank=True, default='nothing')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name_plural': 'Categories', }, ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('author', models.CharField(max_length=200)), ('email', models.EmailField(max_length=254)), ('text', models.TextField()), ('created_date', models.DateTimeField(default=django.utils.timezone.now)), ('updated_date', models.DateTimeField(auto_now=True)), ('approved_comment', models.BooleanField(default=False)), ], ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('slug', models.SlugField( help_text= 'Slug will be generated automatically from the title of the post', unique=True)), ('content', ckeditor_uploader.fields.RichTextUploadingField()), ('width', models.PositiveIntegerField(default=0)), ('height', models.PositiveIntegerField(default=0)), ('starter_image_post', models.ImageField(height_field='height', upload_to='starterImages', width_field='width')), ('created_at', models.DateTimeField(auto_now_add=True)), ('published_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('video_file', models.FileField(blank=True, default='Sorry, es gibt kein Video zum Post', upload_to=blog.models.video_dir_path)), ('status', models.CharField(choices=[('draft', 'Draft'), ('published', 'Published')], default='draft', max_length=10)), ('link', models.CharField(blank=True, max_length=200)), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Category')), ], options={ 'ordering': ('-published_at', ), }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True)), ('slug', models.SlugField( help_text= 'Slug will be generated automatically from the name of the Tag', max_length=100, unique=True)), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AddField( model_name='post', name='tags', field=models.ManyToManyField(to='blog.Tag'), ), migrations.AddField( model_name='comment', name='post', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='blog.Post'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ('taggit', '0003_taggeditem_add_unique_index'), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=120)), ('slug', models.SlugField(blank=True, unique=True)), ], options={ 'verbose_name': 'Категория', 'verbose_name_plural': 'Категории', }, ), migrations.CreateModel( name='IpUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ip', models.CharField(max_length=50, verbose_name='IP строка')), ], ), migrations.CreateModel( name='Comment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64, verbose_name='Имя пользователя')), ('comment', models.TextField()), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')), ('object_id', models.PositiveIntegerField()), ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')), ], ), migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=225, verbose_name='Название')), ('slug', models.SlugField(blank=True, max_length=255, unique=True)), ('image', models.ImageField(blank=True, upload_to=blog.models.generate_filename, verbose_name='Фото')), ('content', ckeditor_uploader.fields.RichTextUploadingField(blank=True, default='')), ('likes', models.PositiveIntegerField(default=0)), ('dislikes', models.PositiveIntegerField(default=0)), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Category', verbose_name='Категория')), ('ip_like', models.ManyToManyField(to='blog.IpUser', verbose_name='Кто лайкнул (IP)')), ('tags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')), ], options={ 'verbose_name': 'Статья', 'verbose_name_plural': 'Статьи', }, bases=(models.Model, hitcount.models.HitCountMixin), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='分类名称')), ], options={ 'verbose_name': '分类', 'verbose_name_plural': '分类', }, ), migrations.CreateModel( name='Tag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='标签')), ], options={ 'verbose_name': '博客标签', }, ), migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=50, verbose_name='文章标题')), ('img', models.ImageField(blank=True, null=True, upload_to=blog.models.article_img_path, verbose_name='文章配图')), ('content', models.TextField(verbose_name='文章内容')), ('abstract', models.TextField(blank=True, max_length=255, null=True, verbose_name='文章摘要')), ('visited', models.PositiveIntegerField(default=0, verbose_name='访问量')), ('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ('updated_time', models.DateTimeField(auto_now=True, verbose_name='更新时间')), ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='作者')), ('category', models.ManyToManyField(to='blog.Category', verbose_name='文章分类')), ('tags', models.ManyToManyField(to='blog.Tag', verbose_name='标签')), ], options={ 'verbose_name': '文章内容', 'verbose_name_plural': '文章内容', 'ordering': ['-created_time'], }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=512, unique=True, verbose_name='Name')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Updated')), ('slug', models.CharField(blank=True, db_index=True, max_length=256, verbose_name='Slug')), ('title', models.CharField(blank=True, max_length=256, verbose_name='Title')), ('description', models.TextField(blank=True, max_length=1024, verbose_name='Description')), ('content', models.TextField(blank=True, verbose_name='Content')), ('published_date', models.DateTimeField(blank=True, null=True, verbose_name='Published')), ('published', models.NullBooleanField(verbose_name='Is published')), ('deleted', models.NullBooleanField(verbose_name='Is deleted')), ('author_name', models.CharField(blank=True, max_length=256, verbose_name='Author name')), ], options={ 'ordering': ['-created'], 'verbose_name': 'Article', 'verbose_name_plural': 'Articles', }, ), migrations.CreateModel( name='ArticleList', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('read', models.BooleanField(default=False, verbose_name='Is read')), ('notified', models.NullBooleanField(verbose_name='Is notified')), ('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Article', verbose_name='Article')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Subscriber')), ], ), migrations.CreateModel( name='Blog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=512, unique=True, verbose_name='Name')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Updated')), ('deleted', models.BooleanField(default=False, verbose_name='Is deleted')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='CustomImage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('img', models.ImageField(upload_to=blog.models.get_avatar_path, verbose_name='Custom Image')), ], ), migrations.CreateModel( name='CustomUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('phone', models.CharField(max_length=32, verbose_name='Phone number')), ('skype', models.CharField(blank=True, max_length=128, null=True, verbose_name='Skype nick')), ('avatar', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.CustomImage', verbose_name='User avatar')), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Mail', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=512, unique=True, verbose_name='Name')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Updated')), ('sended', models.NullBooleanField(verbose_name='Is sent')), ('status', models.SmallIntegerField(default=1, verbose_name='Sending status')), ('to_addr', models.EmailField(max_length=254, verbose_name='Subscriber email address')), ('sending_date', models.DateTimeField(blank=True, null=True, verbose_name='Date of sending')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='MailTemplate', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=512, unique=True, verbose_name='Name')), ('created', models.DateTimeField(auto_now_add=True, verbose_name='Created')), ('updated', models.DateTimeField(auto_now=True, verbose_name='Updated')), ('subject', models.CharField(max_length=128, verbose_name='Subject')), ('from_addr', models.EmailField(blank=True, max_length=254, verbose_name='Sender email address')), ('message', models.TextField(blank=True, verbose_name='Body')), ('slug', models.SlugField(help_text='Unique slug for internal usages.', unique=True, verbose_name='Slug')), ('num_of_retries', models.PositiveIntegerField(default=0, verbose_name='Number of retries')), ('interval', models.PositiveIntegerField(blank=True, help_text='Specify sending interval in the seconds.', null=True, verbose_name='Send interval')), ('default', models.BooleanField(default=False, verbose_name='Is default template')), ], options={ 'ordering': ['-created'], 'verbose_name': 'Mail template', 'verbose_name_plural': 'Mail templates', }, ), migrations.AddField( model_name='blog', name='author', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='author', to='blog.CustomUser', verbose_name='Author'), ), migrations.AddField( model_name='blog', name='subscribers', field=models.ManyToManyField(blank=True, null=True, to='blog.CustomUser', verbose_name='Subscribed users'), ), migrations.AddField( model_name='article', name='blog', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Blog'), ), ]