-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
irfan
committed
Oct 23, 2022
1 parent
acda452
commit ad074e3
Showing
8 changed files
with
238 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
from enum import Enum | ||
|
||
""" | ||
c = UserType.ADMIN | ||
print(c) -> UserType.ADMIN | ||
print(c.name) -> ADMIN | ||
print(c.value) -> 0 | ||
print(c is UserType.ADMIN) -> True | ||
""" | ||
class UserType(Enum): | ||
ADMIN = 0 | ||
DOCTOR = 1 | ||
MEMBER = 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
# Generated by Django 4.1.2 on 2022-10-23 16:29 | ||
|
||
import django.contrib.postgres.fields | ||
from django.db import migrations, models | ||
import django.db.models.deletion | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
initial = True | ||
|
||
dependencies = [ | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='Category', | ||
fields=[ | ||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('name', models.CharField(max_length=50)), | ||
('definition', models.CharField(max_length=100, null=True)), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name='MemberInfo', | ||
fields=[ | ||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('firstname', models.CharField(max_length=25)), | ||
('lastname', models.CharField(max_length=25)), | ||
('address', models.CharField(max_length=100, null=True)), | ||
('weight', models.DecimalField(decimal_places=1, max_digits=3, null=True)), | ||
('height', models.DecimalField(decimal_places=1, max_digits=3, null=True)), | ||
('age', models.IntegerField(null=True)), | ||
('past_illnesses', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=25), null=True, size=None)), | ||
('allergies', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=25), null=True, size=None)), | ||
('chronic_diseases', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=25), null=True, size=None)), | ||
('undergone_operations', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=25), null=True, size=None)), | ||
('used_drugs', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=25), null=True, size=None)), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name='User', | ||
fields=[ | ||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('password', models.CharField(max_length=200)), | ||
('email', models.CharField(max_length=100)), | ||
('type', models.IntegerField()), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name='Admin', | ||
fields=[ | ||
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='backend.user')), | ||
('username', models.CharField(max_length=50)), | ||
], | ||
bases=('backend.user',), | ||
), | ||
migrations.CreateModel( | ||
name='Report', | ||
fields=[ | ||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('message', models.CharField(max_length=500)), | ||
('reported_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reported_user', to='backend.user')), | ||
('reporter_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reporter_user', to='backend.user')), | ||
('reviewed_by', models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reviewed_by', to='backend.admin')), | ||
], | ||
), | ||
migrations.CreateModel( | ||
name='Member', | ||
fields=[ | ||
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='backend.user')), | ||
('username', models.CharField(max_length=50)), | ||
('avatar', models.CharField(max_length=200)), | ||
('banned_by', models.CharField(max_length=50, null=True)), | ||
('info', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='backend.memberinfo')), | ||
], | ||
bases=('backend.user',), | ||
), | ||
migrations.CreateModel( | ||
name='Doctor', | ||
fields=[ | ||
('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='backend.user')), | ||
('full_name', models.CharField(max_length=50)), | ||
('hospital_name', models.CharField(max_length=100, null=True)), | ||
('verified', models.BooleanField(default=False, max_length=100)), | ||
('specialization', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='backend.category')), | ||
], | ||
bases=('backend.user',), | ||
), | ||
] |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
# from backend.auth_system import models | ||
# from backend.follow_system import models | ||
# from backend.profile_management import models | ||
|
||
from django.db import models | ||
from django.contrib.postgres.fields import ArrayField | ||
|
||
|
||
class User(models.Model): | ||
password = models.CharField(max_length=200, null=False) | ||
email = models.CharField(max_length=100, null=False) | ||
|
||
type = models.IntegerField(null=False) | ||
|
||
def __str__(self): | ||
return self.email | ||
|
||
|
||
class Admin(User): | ||
# user = models.ForeignKey(User, on_delete=models.CASCADE) | ||
username = models.CharField(max_length=50, null=False) | ||
|
||
def __str__(self): | ||
return self.username | ||
|
||
class MemberInfo(models.Model): | ||
firstname = models.CharField(max_length=25, null=False) | ||
This comment has been minimized.
Sorry, something went wrong. |
||
lastname = models.CharField(max_length=25, null=False) | ||
This comment has been minimized.
Sorry, something went wrong. |
||
address = models.CharField(max_length=100, null=True) | ||
weight = models.DecimalField(null=True, max_digits=3, decimal_places=1) | ||
height = models.DecimalField(null=True, max_digits=3, decimal_places=1) | ||
age = models.IntegerField(null=True) | ||
|
||
past_illnesses = ArrayField( | ||
models.CharField(max_length=25), null=True | ||
) | ||
allergies = ArrayField( | ||
models.CharField(max_length=25), null=True | ||
) | ||
chronic_diseases = ArrayField( | ||
models.CharField(max_length=25), null=True | ||
) | ||
undergone_operations = ArrayField( | ||
models.CharField(max_length=25), null=True | ||
) | ||
used_drugs = ArrayField( | ||
models.CharField(max_length=25), null=True | ||
) | ||
|
||
|
||
class Member(User): | ||
username = models.CharField(max_length=50, null=False) | ||
avatar = models.CharField(max_length=200, null=False) | ||
banned_by = models.CharField(max_length=50, null=True) # username of admin | ||
|
||
info = models.ForeignKey(MemberInfo, null=False, on_delete=models.CASCADE) | ||
|
||
def __str__(self): | ||
retval = "" | ||
if self.info.firstname != None: | ||
retval += self.info.firstname + " " | ||
if self.info.lastname != None: | ||
retval += self.info.firstname | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
if retval != " ": | ||
return retval | ||
|
||
return self.username | ||
|
||
|
||
class Category(models.Model): | ||
name = models.CharField(max_length=50, null=False) | ||
definition = models.CharField(max_length=100, null=True) | ||
|
||
|
||
class Doctor(User): | ||
full_name = models.CharField(max_length=50, null=False) | ||
specialization = models.ForeignKey(Category, null=True, on_delete=models.SET_NULL) | ||
hospital_name = models.CharField(max_length=100, null=True) | ||
verified = models.BooleanField(max_length=100, null=False, default=False) | ||
|
||
def __str__(self): | ||
return self.full_name | ||
|
||
|
||
class Report(models.Model): | ||
reporter_user = models.ForeignKey(User, null=False, on_delete=models.CASCADE, related_name='reporter_user') | ||
reported_user = models.ForeignKey(User, null=False, on_delete=models.CASCADE, related_name='reported_user') | ||
message = models.CharField(max_length=500, null=False) | ||
reviewed_by = models.ForeignKey(Admin, null=True, default=None, on_delete=models.SET_NULL, related_name='reviewed_by') | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import django.contrib.auth.hashers | ||
|
||
def make_password(password): | ||
assert password | ||
return django.contrib.auth.hashers.make_password( | ||
password=password | ||
) |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
from django.test import TestCase | ||
from django.contrib.auth.hashers import check_password | ||
|
||
from backend import models | ||
from backend import constants | ||
from backend import utils | ||
|
||
TEST_ADMIN_EMAIL = "test_admin@test.com" | ||
TEST_ADMIN_PASSWORD = "test_password" | ||
TEST_ADMIN_USERNAME = "test_admin_unsername" | ||
|
||
class AdminTestCase(TestCase): | ||
def setUp(self): | ||
models.Admin.objects.create( | ||
email=TEST_ADMIN_EMAIL, | ||
password=utils.make_password(TEST_ADMIN_PASSWORD), | ||
type=constants.UserType.ADMIN.value, | ||
username=TEST_ADMIN_USERNAME | ||
) | ||
|
||
def test_admin_name(self): | ||
testAdmin = models.Admin.objects.get(username=TEST_ADMIN_USERNAME) | ||
|
||
self.assertTrue(isinstance(testAdmin, models.Admin)) | ||
|
||
self.assertEqual(testAdmin.email, TEST_ADMIN_EMAIL) | ||
self.assertTrue(check_password(TEST_ADMIN_PASSWORD, testAdmin.password)) | ||
self.assertEqual(str(testAdmin), TEST_ADMIN_USERNAME) | ||
self.assertEqual(testAdmin.type, constants.UserType.ADMIN.value) | ||
|
null=True