Skip to content
Merged
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
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,18 @@
# Donation-Back
<h1 style= "color:#23968b">Life Share</h1>

Summary

A website for blood donation

<h2 style= "color:#23968b"> Team members</h2>

1- yahia labib (team leader)

2- Mohammad Alkhatib

3- haia Lawansah

4- Yaseen Saed

5- Yousef Obeidat

Empty file added accounts/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions accounts/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions accounts/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class AccountsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'accounts'
40 changes: 40 additions & 0 deletions accounts/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 4.0 on 2021-12-30 12:59

import django.contrib.auth.models
from django.db import migrations, models
import django.db.models.deletion
import phone_field.models


class Migration(migrations.Migration):

initial = True

dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]

operations = [
migrations.CreateModel(
name='Account',
fields=[
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='auth.user')),
('age', models.IntegerField()),
('blood_type', models.CharField(blank=True, max_length=10, null=True)),
('chronic_diseases', models.BooleanField(blank=True, default=False, null=True)),
('image', models.ImageField(upload_to='image')),
('data', models.DateField(blank=True, null=True)),
('isAuthenticated', models.BooleanField(default=True)),
('phone_number', phone_field.models.PhoneField(blank=True, help_text='Contact phone number', max_length=31)),
],
options={
'verbose_name': 'user',
'verbose_name_plural': 'users',
'abstract': False,
},
bases=('auth.user',),
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
]
21 changes: 21 additions & 0 deletions accounts/migrations/0002_account_group.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Generated by Django 4.0 on 2021-12-30 13:14

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


class Migration(migrations.Migration):

dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
('accounts', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='account',
name='group',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='boes', to='auth.group'),
preserve_default=False,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generated by Django 4.0 on 2021-12-30 17:23

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('accounts', '0002_account_group'),
]

operations = [
migrations.AddField(
model_name='account',
name='donate',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='account',
name='location',
field=models.CharField(blank=True, max_length=50, null=True),
),
migrations.AlterField(
model_name='account',
name='age',
field=models.IntegerField(null=True),
),
]
Empty file added accounts/migrations/__init__.py
Empty file.
16 changes: 16 additions & 0 deletions accounts/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from django.db import models
from django.contrib.auth.models import User,Group
from phone_field import PhoneField
# Create your models here.
class Account(User):
age = models.IntegerField(null=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')
data = models.DateField(blank=True,null=True)
isAuthenticated = models.BooleanField(default=True)
phone_number = PhoneField(blank=True, help_text='Contact phone number')
group = models.ForeignKey(Group, related_name="boes", on_delete=models.CASCADE)
location = models.CharField(max_length=50,blank=True,null=True)
donate = models.BooleanField(default=False)

34 changes: 34 additions & 0 deletions accounts/serializer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from django.db.models import fields
from rest_framework import serializers
from .models import Account
class AddSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)

def create(self, validated_data):

user = Account.objects.create_user(
username=validated_data['username'],
password=validated_data['password'],
age=validated_data['age'],
group = validated_data['group'],
blood_type = validated_data['blood_type'],
chronic_diseases = validated_data['chronic_diseases'],
data = validated_data['data'],
phone_number = validated_data['phone_number'],
first_name = validated_data['first_name'],
last_name = validated_data['last_name'],
email = validated_data['email'],
location = validated_data['location'],
donate = validated_data['donate'],
image = validated_data['image']
)

return user

class Meta:
model = Account
fields = ('id','first_name','last_name','username',
'email','password','age','blood_type','phone_number','location',
'chronic_diseases','data','donate','group','image'
)

3 changes: 3 additions & 0 deletions accounts/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
9 changes: 9 additions & 0 deletions accounts/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django.urls import path
from .views import AddListView,DetailAddView,ListView

urlpatterns = [
path('',AddListView.as_view(),name= 'add_data'),
path('<str:username>',DetailAddView.as_view(),name = 'detail_data'),
# path('<int:pk>',DetailAddView.as_view(),name = 'detail_dataint'),
path('view',ListView.as_view(),name = 'list_data')
]
25 changes: 25 additions & 0 deletions accounts/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from django.shortcuts import render
from rest_framework import generics, permissions
from .serializer import AddSerializer
from .models import Account
from rest_framework import permissions
from django.shortcuts import get_object_or_404
from .models import User
# Create your views here.

class AddListView(generics.CreateAPIView):
serializer_class = AddSerializer
queryset = Account.objects.all()
permission_classes = [permissions.AllowAny]

class DetailAddView(generics.RetrieveUpdateDestroyAPIView):
serializer_class = AddSerializer
queryset = Account.objects.all()

def get_object(self):
UserName= self.kwargs.get("username")
return get_object_or_404(Account, username=UserName)
class ListView(generics.ListAPIView):
serializer_class = AddSerializer
queryset = Account.objects.all()
# permission_classes = [permissions.AllowAny]
Empty file added blood_donating/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions blood_donating/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions blood_donating/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class BloodDonatingConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'blood_donating'
Empty file.
3 changes: 3 additions & 0 deletions blood_donating/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.db import models

# Create your models here.
3 changes: 3 additions & 0 deletions blood_donating/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
3 changes: 3 additions & 0 deletions blood_donating/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.shortcuts import render

# Create your views here.
Binary file added db.sqlite3
Binary file not shown.
Empty file added hospital/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions hospital/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
6 changes: 6 additions & 0 deletions hospital/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class HospitalConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'hospital'
Binary file added hospital/default.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 43 additions & 0 deletions hospital/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django.core.exceptions import ValidationError


class HospitalCreateForm(UserCreationForm):
username = forms.CharField(label='username', min_length=5, max_length=150)
email = forms.EmailField(label='email')
password1 = forms.CharField(label='password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)
website = forms.CharField(label='website', max_length=256)
image = forms.ImageField()

def username_clean(self):
username = self.cleaned_data['username'].lower()
new = User.objects.filter(username = username)
if new.count():
raise ValidationError("User Already Exist")
return username

def email_clean(self):
email = self.cleaned_data['email'].lower()
new = User.objects.filter(email=email)
if new.count():
raise ValidationError(" Email Already Exist")
return email

def clean_password2(self):
password1 = self.cleaned_data['password1']
password2 = self.cleaned_data['password2']

if password1 and password2 and password1 != password2:
raise ValidationError("Password don't match")
return password2

def save(self, commit = True):
user = User.objects.create_user(
self.cleaned_data['username'],
self.cleaned_data['email'],
self.cleaned_data['password1']
)
return user
33 changes: 33 additions & 0 deletions hospital/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 4.0 on 2021-12-30 11:36

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


class Migration(migrations.Migration):

initial = True

dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]

operations = [
migrations.CreateModel(
name='customUser',
fields=[
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='auth.user')),
('website', models.CharField(max_length=256)),
],
options={
'verbose_name': 'user',
'verbose_name_plural': 'users',
'abstract': False,
},
bases=('auth.user',),
managers=[
('objects', django.contrib.auth.models.UserManager()),
],
),
]
18 changes: 18 additions & 0 deletions hospital/migrations/0002_customuser_image.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.0 on 2021-12-30 11:59

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('hospital', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='customuser',
name='image',
field=models.ImageField(default='default.png', upload_to=''),
),
]
Empty file added hospital/migrations/__init__.py
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
7 changes: 7 additions & 0 deletions hospital/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class customUser (User):
website = models.CharField(max_length=256)
image = models.ImageField(default='default.png')
37 changes: 37 additions & 0 deletions hospital/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from rest_framework import serializers
from django.contrib.auth import get_user_model # If used custom user model
from .models import customUser
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer

class UserSerializer(serializers.ModelSerializer):

password = serializers.CharField(write_only=True)
# website = serializers.CharField(write_only=True)

def create(self, validated_data):

user = customUser.objects.create_user(
username=validated_data['username'],
password=validated_data['password'],
website = validated_data['website'],
)

return user

class Meta:
model = customUser
# Tuple of serialized model fields (see link [2])
fields = ( "id", "username", "password", "website", "image" )


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)

# Add extra responses here
data['id'] = self.user.id
data['username'] = self.user.username
return data
Loading