From f3638fafb0c7f44a64c9e201d7e985a1ad5027a3 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Mon, 12 Mar 2018 17:02:05 +0300 Subject: [PATCH] LIL-290. Add AuthorRequest model --- apps/user/migrations/0009_authorrequest.py | 27 ++++++++++++++++ apps/user/models.py | 37 ++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 apps/user/migrations/0009_authorrequest.py diff --git a/apps/user/migrations/0009_authorrequest.py b/apps/user/migrations/0009_authorrequest.py new file mode 100644 index 00000000..9e10d01c --- /dev/null +++ b/apps/user/migrations/0009_authorrequest.py @@ -0,0 +1,27 @@ +# Generated by Django 2.0.2 on 2018-03-12 14:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('user', '0008_auto_20180212_0750'), + ] + + operations = [ + migrations.CreateModel( + name='AuthorRequest', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('first_name', models.CharField(max_length=30, verbose_name='first name')), + ('last_name', models.CharField(max_length=150, verbose_name='last name')), + ('email', models.EmailField(max_length=254, verbose_name='email address')), + ('about', models.CharField(blank=True, max_length=1000, null=True, verbose_name='О себе')), + ('facebook', models.URLField(blank=True, default='', null=True)), + ('status', models.PositiveSmallIntegerField(choices=[(0, 'pending'), (1, 'accepted'), (2, 'declined')], default=0)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('update_at', models.DateTimeField(auto_now=True)), + ], + ), + ] diff --git a/apps/user/models.py b/apps/user/models.py index eb8bf8a3..a543d782 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -85,3 +85,40 @@ def create_auth_token(sender, instance=None, created=False, **kwargs): instance.role not in [User.AUTHOR_ROLE, User.ADMIN_ROLE] ) and hasattr(instance, 'auth_token'): instance.auth_token.delete() + + +class AuthorRequestManager(models.Manager): + def create_by_user(self, user): + obj = self.model( + first_name=user.first_name, + last_name=user.last_name, + email=user.email, + about=user.about, + facebook=user.facebook, + ) + self._for_write = True + obj.save(force_insert=True, using=self.db) + return obj + + +class AuthorRequest(models.Model): + PENDING = 0 + ACCEPTED = 1 + DECLINED = 2 + STATUS_CHOICES = ( + (PENDING, 'pending'), + (ACCEPTED, 'accepted'), + (DECLINED, 'declined'), + ) + + first_name = models.CharField(_('first name'), max_length=30) + last_name = models.CharField(_('last name'), max_length=150) + email = models.EmailField(_('email address')) + about = models.CharField('О себе', max_length=1000, null=True, blank=True) + facebook = models.URLField(default='', null=True, blank=True) + status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, default=PENDING) + + created_at = models.DateTimeField(auto_now_add=True) + update_at = models.DateTimeField(auto_now=True) + + objects = AuthorRequestManager()