mirror of
https://github.com/lemeow125/DRF_Template.git
synced 2025-08-02 17:23:16 +08:00
Overhauled entire project config, added notifications, email templates, optimized stripe subscriptions, redis caching, and webdriver utilities
This commit is contained in:
parent
7cbe8fd720
commit
99dfcef67b
84 changed files with 4300 additions and 867 deletions
|
@ -1,10 +1,9 @@
|
|||
from django.db import models
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.urls import reverse
|
||||
from django.db.models.signals import post_migrate
|
||||
from django.dispatch import receiver
|
||||
from django_resized import ResizedImageField
|
||||
import os
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
|
||||
|
||||
class CustomUser(AbstractUser):
|
||||
|
@ -18,65 +17,44 @@ class CustomUser(AbstractUser):
|
|||
avatar = ResizedImageField(
|
||||
null=True, force_format="WEBP", quality=100, upload_to='avatars/')
|
||||
|
||||
def avatar_url(self):
|
||||
return f'/api/v1/media/avatars/{self.avatar.field.storage.name(self.avatar.path)}'
|
||||
# Used for onboarding processes
|
||||
# Set this to False later on once the user makes actions
|
||||
onboarding = models.BooleanField(default=True)
|
||||
|
||||
user_group = models.ForeignKey(
|
||||
'user_groups.UserGroup', on_delete=models.SET_NULL, null=True)
|
||||
|
||||
@property
|
||||
def group_member(self):
|
||||
if self.user_group:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
# Can be used to show tooltips for newer users
|
||||
@property
|
||||
def is_new(self):
|
||||
current_date = timezone.now()
|
||||
return self.date_joined + timedelta(days=1) < current_date
|
||||
|
||||
@property
|
||||
def full_name(self):
|
||||
return f"{self.first_name} {self.last_name}"
|
||||
|
||||
@property
|
||||
def group_member(self):
|
||||
if self.user_group:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@property
|
||||
def group_owner(self):
|
||||
if self.user_group and self == self.user_group.owner:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@property
|
||||
def admin_url(self):
|
||||
return reverse('admin:users_customuser_change', args=(self.pk,))
|
||||
|
||||
pass
|
||||
|
||||
|
||||
@receiver(post_migrate)
|
||||
def create_superuser(sender, **kwargs):
|
||||
if sender.name == 'accounts':
|
||||
# Add test users here if needed
|
||||
# They will automatically be created after migrating the db
|
||||
users = [
|
||||
# Superadmin Account
|
||||
{
|
||||
'username': os.getenv('DJANGO_ADMIN_USERNAME'),
|
||||
'email': os.getenv('DJANGO_ADMIN_EMAIL'),
|
||||
'password': os.getenv('DJANGO_ADMIN_PASSWORD'),
|
||||
'is_staff': True,
|
||||
'is_superuser': True,
|
||||
'first_name': 'Super',
|
||||
'last_name': 'Admin'
|
||||
},
|
||||
# Debug User
|
||||
{
|
||||
'username': 'debug-user',
|
||||
'email': os.getenv('DJANGO_ADMIN_EMAIL'),
|
||||
'password': os.getenv('DJANGO_ADMIN_PASSWORD'),
|
||||
'is_staff': False,
|
||||
'is_superuser': False,
|
||||
'first_name': "Test",
|
||||
'last_name': "User"
|
||||
},
|
||||
]
|
||||
|
||||
for user in users:
|
||||
if not CustomUser.objects.filter(username=user['username']).exists():
|
||||
if (user['is_superuser']):
|
||||
USER = CustomUser.objects.create_superuser(
|
||||
username=user['username'],
|
||||
password=user['password'],
|
||||
email=user['email'],
|
||||
)
|
||||
print('Created Superuser:', user['username'])
|
||||
else:
|
||||
USER = CustomUser.objects.create_user(
|
||||
username=user['username'],
|
||||
password=user['password'],
|
||||
email=user['email'],
|
||||
)
|
||||
print('Created User:', user['username'])
|
||||
USER.first_name = user['first_name']
|
||||
USER.last_name = user['last_name']
|
||||
USER.is_active = True
|
||||
USER.save()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue