Added transactions and updated models to reflect transactions

This commit is contained in:
Keannu Christian Bernasol 2023-12-08 23:00:15 +08:00
parent d915852632
commit 2c8cc87cbe
39 changed files with 635 additions and 291 deletions

View file

@ -6,9 +6,9 @@ from .models import CustomUser
class CustomUserAdmin(UserAdmin):
model = CustomUser
list_display = UserAdmin.list_display + ('is_technician',)
list_display = UserAdmin.list_display + ('is_technician', 'is_teacher')
fieldsets = UserAdmin.fieldsets + (
(None, {'fields': ('is_technician',)}),
(None, {'fields': ('is_technician', 'is_teacher')}),
)

View file

@ -1,4 +1,4 @@
# Generated by Django 4.2.7 on 2023-12-02 12:25
# Generated by Django 4.2.7 on 2023-12-08 14:41
import accounts.models
import django.contrib.auth.models
@ -31,6 +31,7 @@ class Migration(migrations.Migration):
('last_name', models.CharField(max_length=100)),
('is_active', models.BooleanField(default=False)),
('is_technician', models.BooleanField(default=False)),
('is_teacher', models.BooleanField(default=False)),
('avatar', models.ImageField(null=True, upload_to=accounts.models.CustomUser._get_upload_to)),
('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')),

View file

@ -38,6 +38,7 @@ class CustomUser(AbstractUser):
# is_admin inherited from base user class
is_active = models.BooleanField(default=False)
is_technician = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
avatar = models.ImageField(upload_to=_get_upload_to, null=True)
@property
@ -66,7 +67,7 @@ def create_superuser(sender, **kwargs):
print('Created admin account')
superuser.save()
username = 'test-user-technician'
username = 'test-technician'
email = os.getenv('DJANGO_ADMIN_EMAIL')
password = os.getenv('DJANGO_ADMIN_PASSWORD')
first_name = 'Test'
@ -81,3 +82,35 @@ def create_superuser(sender, **kwargs):
user.is_active = True
print('Created debug technician account')
user.save()
username = 'test-teacher'
email = os.getenv('DJANGO_ADMIN_EMAIL')
password = os.getenv('DJANGO_ADMIN_PASSWORD')
first_name = 'Test'
last_name = 'Teacher'
if not User.objects.filter(username=username).exists():
# Create the superuser with is_active set to False
user = User.objects.create_user(
username=username, email=email, password=password, first_name=first_name, last_name=last_name, is_teacher=True)
# Activate the user
user.is_active = True
print('Created debug teacher account')
user.save()
username = 'test-student'
email = os.getenv('DJANGO_ADMIN_EMAIL')
password = os.getenv('DJANGO_ADMIN_PASSWORD')
first_name = 'Test'
last_name = 'Student'
if not User.objects.filter(username=username).exists():
# Create the superuser with is_active set to False
user = User.objects.create_user(
username=username, email=email, password=password, first_name=first_name, last_name=last_name)
# Activate the user
user.is_active = True
print('Created debug student account')
user.save()

View file

@ -9,3 +9,23 @@ class IsTechnician(BasePermission):
def has_object_permission(self, request, view, obj):
return request.user.is_authenticated and request.user.is_technician
class IsTeacher(BasePermission):
message = "You must be a teacher to perform this action."
def has_permission(self, request, view):
return request.user.is_authenticated and request.user.is_teacher
def has_object_permission(self, request, view, obj):
return request.user.is_authenticated and request.user.is_teacher
class IsStudent(BasePermission):
message = "You must be a student to perform this action."
def has_permission(self, request, view):
return request.user.is_authenticated and request.user.is_student
def has_object_permission(self, request, view, obj):
return request.user.is_authenticated and request.user.is_student

View file

@ -18,7 +18,8 @@ class CustomUserSerializer(BaseUserSerializer):
class Meta(BaseUserSerializer.Meta):
model = CustomUser
fields = ('username', 'email', 'avatar', 'first_name', 'last_name',)
fields = ('username', 'email', 'avatar', 'first_name',
'last_name', 'is_teacher', 'is_technician')
class UserRegistrationSerializer(serializers.ModelSerializer):
@ -30,6 +31,7 @@ class UserRegistrationSerializer(serializers.ModelSerializer):
model = CustomUser # Use your custom user model here
fields = ('username', 'email', 'password', 'avatar',
'first_name', 'last_name')
read_only_fields = ('is_teacher', 'is_technician')
def validate(self, attrs):
user = self.Meta.model(**attrs)