diff --git a/accounts/migrations/0005_customuser_roles.py b/accounts/migrations/0005_customuser_roles.py new file mode 100644 index 0000000..018735c --- /dev/null +++ b/accounts/migrations/0005_customuser_roles.py @@ -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), + ), + ] diff --git a/accounts/migrations/0006_remove_doner_blood_type_remove_patient_blood_type.py b/accounts/migrations/0006_remove_doner_blood_type_remove_patient_blood_type.py new file mode 100644 index 0000000..a77ba3d --- /dev/null +++ b/accounts/migrations/0006_remove_doner_blood_type_remove_patient_blood_type.py @@ -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', + ), + ] diff --git a/accounts/migrations/0007_doner_blood_type_patient_blood_type.py b/accounts/migrations/0007_doner_blood_type_patient_blood_type.py new file mode 100644 index 0000000..8ce80dc --- /dev/null +++ b/accounts/migrations/0007_doner_blood_type_patient_blood_type.py @@ -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, + ), + ] diff --git a/accounts/models.py b/accounts/models.py index 05db29d..9666554 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -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 \ No newline at end of file diff --git a/accounts/serializer.py b/accounts/serializer.py index b604af7..27a15d7 100644 --- a/accounts/serializer.py +++ b/accounts/serializer.py @@ -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): @@ -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): diff --git a/accounts/urls.py b/accounts/urls.py index ab115a8..0311215 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -1,16 +1,25 @@ from django.urls import path -# from .views import AddListView,DetailAddView,ListView,CustomObtainAuthToken,countview,CreateHospitalUserView,HospitalDetail,HospitalListView,counthospitalview,Blood_O_List,Blood_B_List,Blood_A_List,Blood_AB_List +from .views import AddListView,DetailAddView,ListView,CustomObtainAuthToken,countview,CreateHospitalUserView,HospitalDetail,HospitalListView,counthospitalview +# from .views import Blood_O_List,Blood_B_List,Blood_A_List,Blood_AB_List from .views import AddListView +from .views import AddPatientView,ListPatientView,DetailPatientView,countPatientview urlpatterns = [ path('donater/signup/',AddListView.as_view(),name= 'add_data'), -# path('donater//',DetailAddView.as_view(),name = 'detail_data'), -# path("donater/auth/", CustomObtainAuthToken.as_view()), -# path('donater/view/',ListView.as_view(),name = 'list_data'), -# path('donater/count/',countview.as_view(),name = 'countview'), -# path('hospital/signup/', CreateHospitalUserView.as_view(), name='signup'), -# path("hospital//", HospitalDetail.as_view(), name="hospital_detail"), -# path("hospital/view/", HospitalListView.as_view(), name="hospital_list"), -# path('hospital/count/',counthospitalview.as_view(),name = 'counthospitalview'), + path('donater//',DetailAddView.as_view(),name = 'detail_data'), + path("donater/auth/", CustomObtainAuthToken.as_view()), + path('donater/view/',ListView.as_view(),name = 'list_data'), + path('donater/count/',countview.as_view(),name = 'countview'), + + path('hospital/signup/', CreateHospitalUserView.as_view(), name='signup'), + path("hospital//", HospitalDetail.as_view(), name="hospital_detail"), + path("hospital/view/", HospitalListView.as_view(), name="hospital_list"), + path('hospital/count/',counthospitalview.as_view(),name = 'counthospitalview'), + + path('patient/signup/',AddPatientView.as_view(),name= 'add_data'), + path('patient//',DetailPatientView.as_view(),name = 'detail_data'), + path('patient/view/',ListPatientView.as_view(),name = 'list_data'), + path('patient/count/',countPatientview.as_view(),name = 'countview'), + # path('blood/O/',Blood_O_List.as_view(),name = 'blood_O'), # path('blood/A/',Blood_A_List.as_view(),name = 'blood_A'), # path('blood/B/',Blood_B_List.as_view(),name = 'blood_B'), diff --git a/accounts/views.py b/accounts/views.py index 66071a7..d3a8e7f 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -1,96 +1,121 @@ # from django.shortcuts import render from rest_framework import generics, permissions -# from .serializer import BloodSerializer,AddDonaterSerializer,MyTokenObtainPairSerializer,EditDonaterSerializer,EditHospitalUser,AddHospitalUser -from .serializer import AddDonaterSerializer -from .models import CustomUser -# from rest_framework import permissions -# from django.shortcuts import get_object_or_404 -# from rest_framework_simplejwt.views import TokenObtainPairView +from .serializer import AddDonerSerializer,MyTokenObtainPairSerializer,EditDonerSerializer,EditHospitalUser,AddHospitalUser,AddPatientSerializer,EditPatientSerializer +from .models import Patient,Hospital,Doner +from rest_framework_simplejwt.views import TokenObtainPairView -# from rest_framework.renderers import JSONRenderer -# from rest_framework.response import Response -# from rest_framework.views import APIView +from rest_framework.renderers import JSONRenderer +from rest_framework.response import Response +from rest_framework.views import APIView -# # Create your views here. - -# class CustomObtainAuthToken(TokenObtainPairView): -# serializer_class = MyTokenObtainPairSerializer +class CustomObtainAuthToken(TokenObtainPairView): + serializer_class = MyTokenObtainPairSerializer +### doner class AddListView(generics.CreateAPIView): - serializer_class = AddDonaterSerializer - queryset = CustomUser.objects.all() + serializer_class = AddDonerSerializer + queryset = Doner.objects.all() permission_classes = [permissions.AllowAny] -# class DetailAddView(generics.RetrieveUpdateDestroyAPIView): -# serializer_class = EditDonaterSerializer -# queryset = CustomUser.objects.all() - - -# # def get_object(self): -# # UserName= self.kwargs.get("username") -# # return get_object_or_404(CustomUser, username=UserName) -# class ListView(generics.ListAPIView): -# serializer_class = EditDonaterSerializer -# queryset = CustomUser.objects.filter(roles="Donater") + +class DetailAddView(generics.RetrieveUpdateDestroyAPIView): + serializer_class = EditDonerSerializer + queryset = Doner.objects.all() + permission_classes = [permissions.AllowAny] + + + +class ListView(generics.ListAPIView): + serializer_class = EditDonerSerializer + queryset = Doner.objects.all() -# class countview(APIView): -# """ -# A view that returns the count of active users. -# """ -# permission_classes = [permissions.AllowAny] -# renderer_classes = [JSONRenderer] - -# def get(self, request, format=None): -# print(request.data) -# user_count = CustomUser.objects.filter(roles="Donater").count() -# content = {'user_count': user_count} -# return Response(content) - - -# ## hospital - - -# class CreateHospitalUserView(generics.CreateAPIView): -# """ -# A view that signup hospital. -# """ -# model = CustomUser -# permission_classes = [ -# permissions.AllowAny # Or anon users can't register -# ] -# serializer_class = AddHospitalUser - -# class HospitalDetail(generics.RetrieveUpdateDestroyAPIView): -# """ -# A view that returns the detail of hospital -# """ -# queryset = CustomUser.objects.all() -# serializer_class = EditHospitalUser -# # def get_object(self): -# # UserName= self.kwargs.get("username") -# # return get_object_or_404(CustomUser, username=UserName) - -# class HospitalListView(generics.ListAPIView): -# serializer_class = EditHospitalUser -# queryset = CustomUser.objects.filter(roles="hospital") - -# class counthospitalview(APIView): -# """ -# A view that returns the count of active users. -# """ -# permission_classes = [permissions.AllowAny] -# renderer_classes = [JSONRenderer] +class countview(APIView): + """ + A view that returns the count of active users. + """ + permission_classes = [permissions.AllowAny] + renderer_classes = [JSONRenderer] + + def get(self, request, format=None): + print(request.data) + user_count = Doner.objects.count() + content = {'user_count': user_count} + return Response(content) + + +## hospital + + +class CreateHospitalUserView(generics.CreateAPIView): + """ + A view that signup hospital. + """ + model = Hospital + permission_classes = [ + permissions.AllowAny # Or anon users can't register + ] + serializer_class = AddHospitalUser + +class HospitalDetail(generics.RetrieveUpdateDestroyAPIView): + """ + A view that returns the detail of hospital + """ + queryset = Hospital.objects.all() + serializer_class = EditHospitalUser -# def get(self, request, format=None): -# print(request.data) -# user_count = CustomUser.objects.filter(roles__in=['hospital','Donater']).count() -# content = {'user_count': user_count} -# return Response(content) +class HospitalListView(generics.ListAPIView): + serializer_class = EditHospitalUser + queryset = Hospital.objects.all() + +class counthospitalview(APIView): + """ + A view that returns the count of active users. + """ + permission_classes = [permissions.AllowAny] + renderer_classes = [JSONRenderer] + + def get(self, request, format=None): + print(request.data) + user_count = Hospital.objects.count() + content = {'user_count': user_count} + return Response(content) + + +# Patient + +class AddPatientView(generics.CreateAPIView): + serializer_class = AddPatientSerializer + queryset = Patient.objects.all() + permission_classes = [permissions.AllowAny] + + +class DetailPatientView(generics.RetrieveUpdateDestroyAPIView): + serializer_class = EditPatientSerializer + queryset = Patient.objects.all() + + +class ListPatientView(generics.ListAPIView): + serializer_class = EditPatientSerializer + queryset = Patient.objects.all() + + +class countPatientview(APIView): + """ + A view that returns the count of active users. + """ + permission_classes = [permissions.AllowAny] + renderer_classes = [JSONRenderer] + + def get(self, request, format=None): + print(request.data) + user_count = Patient.objects.count() + content = {'user_count': user_count} + return Response(content) diff --git a/blood_donating/migrations/0002_post_donation.py b/blood_donating/migrations/0002_post_donation.py new file mode 100644 index 0000000..dd9405f --- /dev/null +++ b/blood_donating/migrations/0002_post_donation.py @@ -0,0 +1,38 @@ +# Generated by Django 4.0 on 2022-01-03 13:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0006_remove_doner_blood_type_remove_patient_blood_type'), + ('blood_donating', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Post', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=256)), + ('text', models.TextField()), + ('time', models.DateTimeField(auto_now_add=True)), + ('publish', models.BooleanField()), + ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.customuser', to_field='username')), + ], + ), + migrations.CreateModel( + name='Donation', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('time', models.DateTimeField(auto_now_add=True)), + ('notes', models.TextField()), + ('available', models.BooleanField()), + ('doner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.doner')), + ('hospital', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.hospital')), + ('patient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='accounts.patient')), + ], + ), + ] diff --git a/blood_donating/models.py b/blood_donating/models.py index 41a602f..152025d 100644 --- a/blood_donating/models.py +++ b/blood_donating/models.py @@ -1,10 +1,46 @@ from django.db import models -from django.db.models.base import Model - class BloodType(models.Model): blood_type=models.CharField(max_length=5) description = models.TextField() def __str__(self): - return self.blood_type \ No newline at end of file + return self.blood_type + +from accounts.models import CustomUser, Doner, Patient, Hospital +class Donation(models.Model): + doner = models.ForeignKey(Doner,on_delete=models.CASCADE) + hospital = models.ForeignKey(Hospital,on_delete=models.CASCADE) + patient = models.ForeignKey(Patient,on_delete=models.CASCADE) + time = models.DateTimeField(auto_now_add=True, blank=True) + notes = models.TextField() + available = models.BooleanField() + + +class Post(models.Model): + patient = models.ForeignKey(CustomUser,to_field='username',on_delete=models.CASCADE) + title = models.CharField(max_length=256) + text = models.TextField() + # blood_type = models.CharField(max_length=10) + time = models.DateTimeField(auto_now_add=True, blank=True) + publish = models.BooleanField() + + def __str__(self) : + return f"{self.patient} {self.title}" + + +''' +Donation: +- doner -->fk +- timestamp (DateTimeField) +- notes +- hospital +- available Booleand +- Patient --> FK +Post: + title + text + datetime + patient + publish Boolean +''' \ No newline at end of file diff --git a/blood_donating/serializer.py b/blood_donating/serializer.py new file mode 100644 index 0000000..ec12d24 --- /dev/null +++ b/blood_donating/serializer.py @@ -0,0 +1,14 @@ +from .models import BloodType, Post +from rest_framework import serializers + + +class PostSerializer(serializers.ModelSerializer): + class Meta: + model = Post + fields = ["id",'patient', 'title',"time","text","publish"] + +class BloodSerilaizer(serializers.ModelSerializer): + class Meta: + model = BloodType + fields = ['blood_type'] + diff --git a/blood_donating/urls.py b/blood_donating/urls.py new file mode 100644 index 0000000..eda930e --- /dev/null +++ b/blood_donating/urls.py @@ -0,0 +1,8 @@ +from django.urls import path +from .views import PostViewSet , GetViewSet,UpdateDestroyViewSet, EditBlood +urlpatterns = [ + path('add/', PostViewSet.as_view(), name='add_post'), + path('show/',GetViewSet.as_view(), name= "show-post"), + path('update-delete//',UpdateDestroyViewSet.as_view(),name= "update-delete-post"), + path('update-blood//',EditBlood.as_view(),name= "update-delete-post") +] \ No newline at end of file diff --git a/blood_donating/views.py b/blood_donating/views.py index 91ea44a..3eb2200 100644 --- a/blood_donating/views.py +++ b/blood_donating/views.py @@ -1,3 +1,38 @@ from django.shortcuts import render # Create your views here. +from django.shortcuts import render +from rest_framework.generics import CreateAPIView , ListAPIView,RetrieveUpdateDestroyAPIView +from .models import BloodType, Post +from .serializer import PostSerializer, BloodSerilaizer +from rest_framework import permissions + +# Create your views here. + +class PostViewSet(CreateAPIView): + """ + API endpoint that allows users to be viewed or edited. + """ + serializer_class = PostSerializer + permission_classes = [permissions.AllowAny] + +class GetViewSet(ListAPIView): + """ + API endpoint that allows users to be viewed or edited. + """ + serializer_class = PostSerializer + queryset =Post.objects.all().order_by("-time") + # permission_classes = [permissions.IsAuthenticated] + +class UpdateDestroyViewSet(RetrieveUpdateDestroyAPIView): + serializer_class = PostSerializer + queryset =Post.objects.all().order_by("-time") + # permission_classes = [permissions.IsAuthenticated] + +class EditBlood(RetrieveUpdateDestroyAPIView): + """ + API endpoint that allows users to be viewed or edited. + """ + serializer_class = BloodSerilaizer + permission_classes = [permissions.AllowAny] + queryset =BloodType.objects.all() diff --git a/db.sqlite3 b/db.sqlite3 index a85155d..8f570c0 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/lifeshare/settings.py b/lifeshare/settings.py index cb10aee..9a43c56 100644 --- a/lifeshare/settings.py +++ b/lifeshare/settings.py @@ -133,7 +133,7 @@ LANGUAGE_CODE = 'en-us' -TIME_ZONE = 'UTC' +TIME_ZONE = "Asia/Amman" USE_I18N = True diff --git a/lifeshare/urls.py b/lifeshare/urls.py index 9ef0019..ca78d09 100644 --- a/lifeshare/urls.py +++ b/lifeshare/urls.py @@ -20,12 +20,16 @@ TokenObtainPairView, TokenRefreshView, ) +from django.conf.urls.static import static +from django.conf import settings + urlpatterns = [ path('admin/', admin.site.urls), - path('',include('accounts.urls')), + path('accounts/',include('accounts.urls')), path('api/token/', jwt_views.TokenObtainPairView.as_view(), name='token_obtain_pair'), path('api/token/refresh/', jwt_views.TokenRefreshView.as_view(), name='token_refresh'), - # path('hospital/', include('hospital.urls')), -] + path('blood/', include('blood_donating.urls')), +]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT) + diff --git a/uploads/image/320_DfqzxOI.png b/uploads/image/320_DfqzxOI.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_DfqzxOI.png differ diff --git a/uploads/image/320_Duc31Ko.png b/uploads/image/320_Duc31Ko.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_Duc31Ko.png differ diff --git a/uploads/image/320_Fvgq4Kl.png b/uploads/image/320_Fvgq4Kl.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_Fvgq4Kl.png differ diff --git a/uploads/image/320_I4VrIsn.png b/uploads/image/320_I4VrIsn.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_I4VrIsn.png differ diff --git a/uploads/image/320_JymAues.png b/uploads/image/320_JymAues.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_JymAues.png differ diff --git a/uploads/image/320_QJS9VTv.png b/uploads/image/320_QJS9VTv.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_QJS9VTv.png differ diff --git a/uploads/image/320_QsVquT0.png b/uploads/image/320_QsVquT0.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_QsVquT0.png differ diff --git a/uploads/image/320_UG32aiY.png b/uploads/image/320_UG32aiY.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_UG32aiY.png differ diff --git a/uploads/image/320_WXsd4LA.png b/uploads/image/320_WXsd4LA.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_WXsd4LA.png differ diff --git a/uploads/image/320_YSpvUsB.png b/uploads/image/320_YSpvUsB.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_YSpvUsB.png differ diff --git a/uploads/image/320_egeWdpS.png b/uploads/image/320_egeWdpS.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_egeWdpS.png differ diff --git a/uploads/image/320_fMWruLo.png b/uploads/image/320_fMWruLo.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_fMWruLo.png differ diff --git a/uploads/image/320_fqeKtJe.png b/uploads/image/320_fqeKtJe.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_fqeKtJe.png differ diff --git a/uploads/image/320_g7og1cA.png b/uploads/image/320_g7og1cA.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_g7og1cA.png differ diff --git a/uploads/image/320_hF1OkIF.png b/uploads/image/320_hF1OkIF.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_hF1OkIF.png differ diff --git a/uploads/image/320_t12ehEA.png b/uploads/image/320_t12ehEA.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_t12ehEA.png differ diff --git a/uploads/image/320_uWBuf1z.png b/uploads/image/320_uWBuf1z.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_uWBuf1z.png differ diff --git a/uploads/image/320_xCc4w4n.png b/uploads/image/320_xCc4w4n.png new file mode 100644 index 0000000..c402c36 Binary files /dev/null and b/uploads/image/320_xCc4w4n.png differ diff --git a/uploads/image/man-walking-dog.jpg b/uploads/image/man-walking-dog.jpg new file mode 100644 index 0000000..f643118 Binary files /dev/null and b/uploads/image/man-walking-dog.jpg differ diff --git a/uploads/image/man-walking-dog_FLf2YHH.jpg b/uploads/image/man-walking-dog_FLf2YHH.jpg new file mode 100644 index 0000000..f643118 Binary files /dev/null and b/uploads/image/man-walking-dog_FLf2YHH.jpg differ diff --git a/uploads/image/man-walking-dog_GGMN16y.jpg b/uploads/image/man-walking-dog_GGMN16y.jpg new file mode 100644 index 0000000..f643118 Binary files /dev/null and b/uploads/image/man-walking-dog_GGMN16y.jpg differ diff --git a/uploads/image/man-walking-dog_So6Jirb.jpg b/uploads/image/man-walking-dog_So6Jirb.jpg new file mode 100644 index 0000000..f643118 Binary files /dev/null and b/uploads/image/man-walking-dog_So6Jirb.jpg differ diff --git a/uploads/image/man-walking-dog_hMUvM5v.jpg b/uploads/image/man-walking-dog_hMUvM5v.jpg new file mode 100644 index 0000000..f643118 Binary files /dev/null and b/uploads/image/man-walking-dog_hMUvM5v.jpg differ