Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions accounts/migrations/0005_customuser_roles.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.0 on 2022-01-03 12:02

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('accounts', '0004_alter_customuser_image'),
]

operations = [
migrations.AddField(
model_name='customuser',
name='roles',
field=models.CharField(blank=True, choices=[('Doner', 'Doner'), ('Hospital', 'Hospital'), ('Patient', 'Patient')], max_length=50, null=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 4.0 on 2022-01-03 13:24

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('accounts', '0005_customuser_roles'),
]

operations = [
migrations.RemoveField(
model_name='doner',
name='blood_type',
),
migrations.RemoveField(
model_name='patient',
name='blood_type',
),
]
27 changes: 27 additions & 0 deletions accounts/migrations/0007_doner_blood_type_patient_blood_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 4.0 on 2022-01-03 13:30

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('blood_donating', '0002_post_donation'),
('accounts', '0006_remove_doner_blood_type_remove_patient_blood_type'),
]

operations = [
migrations.AddField(
model_name='doner',
name='blood_type',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='blood_donating.bloodtype'),
preserve_default=False,
),
migrations.AddField(
model_name='patient',
name='blood_type',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='blood_donating.bloodtype'),
preserve_default=False,
),
]
54 changes: 31 additions & 23 deletions accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,46 +2,54 @@
from django.contrib.auth.models import AbstractUser
from Address.models import Address
from blood_donating.models import BloodType
# class CustomUser(AbstractUser):
# ROLES = (

# ('Donater', 'Donater'),
# ('hospital', 'hospital'),
# ("Blood needer","Blood needer")

# )

# date_joined = models.DateField(auto_now_add=True)
# roles = models.CharField(max_length=50, choices = ROLES, null=True,blank=True)
# blood_type = models.CharField(max_length=10 ,blank=True,null=True)
# chronic_diseases = models.BooleanField(default=False,blank=True,null=True)
# image = models.ImageField(upload_to = 'image',default='../uploads/image/320.png')
# date = models.DateField(blank=True,null=True,default='2022-01-01')
# phone_number = models.CharField(max_length=20,blank=True, help_text='Contact phone number')
# location = models.CharField(max_length=50,blank=True,null=True)
# date_of_birth = models.DateField(blank=True,null=True,default='2000-01-01')
# website = models.CharField(max_length=256 ,blank=True,null=True)
# def __str__(self):
# return self.username

class CustomUser(AbstractUser):
ROLES = (

('Doner', 'Doner'),
('Hospital', 'Hospital'),
("Patient","Patient")

class CustomUser(AbstractUser):
)
phone_number = models.CharField(max_length=20,blank=True, help_text='Contact phone number')
address = models.ForeignKey(Address,on_delete=models.CASCADE,default=1)
image = models.ImageField(upload_to = 'image',default='../uploads/image/320.png',blank=True,null=True)

roles = models.CharField(max_length=50, choices = ROLES, null=True,blank=True)
def __str__(self):
return self.username

class Doner(CustomUser):
blood_type = models.ForeignKey(BloodType,on_delete=models.CASCADE)
date_of_birth = models.DateField(blank=True,null=True,default='2022-01-01')
chronic_diseases = models.BooleanField(default=False,blank=True,null=True)

class Patient(CustomUser):
blood_type = models.ForeignKey(BloodType,on_delete=models.CASCADE)
reason = models.TextField()
date_of_birth = models.DateField(blank=True,null=True,default='2022-01-01')

class Hospital(CustomUser):
website = models.CharField(max_length=256 ,blank=True,null=True)


# class CustomUser(AbstractUser):
# ROLES = (

# ('Donater', 'Donater'),
# ('hospital', 'hospital'),
# ("Blood needer","Blood needer")

# )

# date_joined = models.DateField(auto_now_add=True)
# roles = models.CharField(max_length=50, choices = ROLES, null=True,blank=True)
# blood_type = models.CharField(max_length=10 ,blank=True,null=True)
# chronic_diseases = models.BooleanField(default=False,blank=True,null=True)
# image = models.ImageField(upload_to = 'image',default='../uploads/image/320.png')
# date = models.DateField(blank=True,null=True,default='2022-01-01')
# phone_number = models.CharField(max_length=20,blank=True, help_text='Contact phone number')
# location = models.CharField(max_length=50,blank=True,null=True)
# date_of_birth = models.DateField(blank=True,null=True,default='2000-01-01')
# website = models.CharField(max_length=256 ,blank=True,null=True)
# def __str__(self):
# return self.username
181 changes: 112 additions & 69 deletions accounts/serializer.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from django.db.models import fields
from rest_framework import serializers
from .models import CustomUser,Doner
from .models import CustomUser,Doner,Hospital,Patient
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer

class AddDonaterSerializer(serializers.ModelSerializer):
class AddDonerSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)

def create(self, validated_data):
Expand All @@ -17,104 +17,147 @@ def create(self, validated_data):
image = validated_data['image'],
chronic_diseases = validated_data['chronic_diseases'],
address = validated_data['address'],
roles = validated_data['roles']
)

return user

class Meta:
model = Doner
fields = ('username','password','first_name','email','blood_type','address','chronic_diseases','image'
fields = ('username','password','first_name','email','blood_type','address','chronic_diseases','image','roles'
)

# class EditDonaterSerializer(serializers.ModelSerializer):
# def create(self, validated_data):
class EditDonerSerializer(serializers.ModelSerializer):
def create(self, validated_data):

# user = CustomUser.objects.create_user(
# username=validated_data['username'],
# date_of_birth=validated_data['date_of_birth'],
# blood_type = validated_data['blood_type'],
# chronic_diseases = validated_data['chronic_diseases'],
# date = validated_data['date'],
# phone_number = validated_data['phone_number'],
# first_name = validated_data['first_name'],
# email = validated_data['email'],
# location = validated_data['location'],
# image = validated_data['image'],

# )
user = Doner.objects.create_user(
username=validated_data['username'],
first_name = validated_data['first_name'],
email = validated_data['email'],
image = validated_data['image'],
chronic_diseases = validated_data['chronic_diseases'],
phone_number = validated_data['phone_number'],
blood_type = validated_data['blood_type'],
)

# return user
# class Meta:
# model = CustomUser
# fields = ('username','first_name','email','date_of_birth','image','location','phone_number'
# ,'date','chronic_diseases','blood_type'
# )
return user

# class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
# def validate(self, attrs):
# data = super().validate(attrs)
# refresh = self.get_token(self.user)
# data['refresh'] = str(refresh)
# data['access'] = str(refresh.access_token)
class Meta:
depth = 2
model = Doner
fields = ('username','first_name','email','chronic_diseases','image','phone_number','blood_type'
)


# data['id'] = self.user.id
# data['username'] = self.user.username
# data['Role'] = self.user.roles
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
def validate(self, attrs):
data = super().validate(attrs)
refresh = self.get_token(self.user)
data['refresh'] = str(refresh)
data['access'] = str(refresh.access_token)

# return data
data['id'] = self.user.id
data['username'] = self.user.username
data['Role'] = self.user.roles

return data


# ## hospital serializer

# class AddHospitalUser(serializers.ModelSerializer):
## hospital serializer

# password = serializers.CharField(write_only=True)
# # website = serializers.CharField(write_only=True)
class AddHospitalUser(serializers.ModelSerializer):

# def create(self, validated_data):
password = serializers.CharField(write_only=True)
# website = serializers.CharField(write_only=True)

# user = CustomUser.objects.create_user(
# first_name = validated_data['first_name'],
# username=validated_data['username'],
# password=validated_data['password'],
# website = validated_data['website'],
# email = validated_data['email'],
# roles = validated_data['roles']
# )
def create(self, validated_data):

# return user
user = Hospital.objects.create_user(
first_name = validated_data['first_name'],
username=validated_data['username'],
password=validated_data['password'],
website = validated_data['website'],
email = validated_data['email'],
roles = validated_data['roles']
)

# class Meta:
# model = CustomUser
# # Tuple of serialized model fields (see link [2])
# fields = ( "first_name","username", "password", "website",'email','roles' )
return user

class Meta:
model = Hospital
fields = ( "first_name","username", "password", "website",'email','roles' )

# class EditHospitalUser(serializers.ModelSerializer):

# password = serializers.CharField(write_only=True)
# # website = serializers.CharField(write_only=True)
class EditHospitalUser(serializers.ModelSerializer):

# def create(self, validated_data):
# password = serializers.CharField(write_only=True)
# website = serializers.CharField(write_only=True)

# user = CustomUser.objects.create_user(
# first_name = validated_data['first_name'],
# username=validated_data['username'],
# password=validated_data['password'],
# website = validated_data['website'],
# image = validated_data['image'],
# email = validated_data['email'],
# )
def create(self, validated_data):

# return user
user = Hospital.objects.create_user(
first_name = validated_data['first_name'],
username=validated_data['username'],
website = validated_data['website'],
image = validated_data['image'],
email = validated_data['email'],
)

# class Meta:
# model = CustomUser
# # Tuple of serialized model fields (see link [2])
# fields = ( "first_name","username", "password", "website",'email','image' )
return user

class Meta:
model = Hospital
# Tuple of serialized model fields (see link [2])
fields = ( "first_name","username","website",'email','image' )



class AddPatientSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)

def create(self, validated_data):

user = Patient.objects.create_user(
username=validated_data['username'],
password=validated_data['password'],
blood_type = validated_data['blood_type'],
first_name = validated_data['first_name'],
email = validated_data['email'],
image = validated_data['image'],
reason = validated_data['reason'],
address = validated_data['address'],
roles = validated_data['roles']
)

return user

class Meta:
model = Patient
fields = ('username','password','first_name','email','blood_type', 'address', 'reason','image','roles'
)

class EditPatientSerializer(serializers.ModelSerializer):
def create(self, validated_data):

user = Patient.objects.create_user(
username=validated_data['username'],
first_name = validated_data['first_name'],
email = validated_data['email'],
image = validated_data['image'],
reason = validated_data['reason'],
blood_type = validated_data['blood_type'],
phone_number = validated_data['phone_number'],
)

return user

class Meta:
depth = 2
model = Patient
fields = ('username','first_name','email','reason','image', 'blood_type','phone_number'
)

# class BloodSerializer(serializers.ModelSerializer):
# def create(self, validated_data):

Expand Down
Loading