From 9551e9a151bcd840c37ab999b3253bb258330549 Mon Sep 17 00:00:00 2001 From: John Piaszynski Date: Sun, 24 Sep 2023 08:31:22 -0500 Subject: [PATCH] defined database schema in db_intermediary app --- .../db_intermediary/__init__.py | 0 .../seatstock_django/db_intermediary/admin.py | 3 + .../seatstock_django/db_intermediary/apps.py | 6 + .../db_intermediary/migrations/__init__.py | 0 .../db_intermediary/models.py | 123 ++++++++++++++++++ .../seatstock_django/db_intermediary/tests.py | 3 + .../seatstock_django/db_intermediary/views.py | 3 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 211 bytes .../__pycache__/settings.cpython-310.pyc | Bin 0 -> 2971 bytes 9 files changed, 138 insertions(+) create mode 100644 backend/django/seatstock_django/db_intermediary/__init__.py create mode 100644 backend/django/seatstock_django/db_intermediary/admin.py create mode 100644 backend/django/seatstock_django/db_intermediary/apps.py create mode 100644 backend/django/seatstock_django/db_intermediary/migrations/__init__.py create mode 100644 backend/django/seatstock_django/db_intermediary/models.py create mode 100644 backend/django/seatstock_django/db_intermediary/tests.py create mode 100644 backend/django/seatstock_django/db_intermediary/views.py create mode 100644 backend/django/seatstock_django/seatstock_django/__pycache__/__init__.cpython-310.pyc create mode 100644 backend/django/seatstock_django/seatstock_django/__pycache__/settings.cpython-310.pyc diff --git a/backend/django/seatstock_django/db_intermediary/__init__.py b/backend/django/seatstock_django/db_intermediary/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/django/seatstock_django/db_intermediary/admin.py b/backend/django/seatstock_django/db_intermediary/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/backend/django/seatstock_django/db_intermediary/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/backend/django/seatstock_django/db_intermediary/apps.py b/backend/django/seatstock_django/db_intermediary/apps.py new file mode 100644 index 0000000..eef216b --- /dev/null +++ b/backend/django/seatstock_django/db_intermediary/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class DbIntermediaryConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "db_intermediary" diff --git a/backend/django/seatstock_django/db_intermediary/migrations/__init__.py b/backend/django/seatstock_django/db_intermediary/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/django/seatstock_django/db_intermediary/models.py b/backend/django/seatstock_django/db_intermediary/models.py new file mode 100644 index 0000000..78dae05 --- /dev/null +++ b/backend/django/seatstock_django/db_intermediary/models.py @@ -0,0 +1,123 @@ +from django.db import models + +class School(models.Model): + name = models.CharField(max_length=100, primary_key=True) + football_stadium_name = models.CharField(max_length=100) + football_stadium_location = models.CharField(max_length=200) + team_name = models.CharField(max_length=100) + state = models.CharField(max_length=30) + + def __str__(self): + return self.name + +class Game(models.Model): + home_team = models.ForeignKey(School, on_delete=models.CASCADE, related_name="home_team") + away_team = models.ForeignKey(School, on_delete=models.CASCADE, related_name="away_team") + date = models.DateTimeField() + is_womens_game = models.BooleanField() + is_mens_game = models.BooleanField() + + class Meta: + constraints = [ + models.UniqueConstraint( + fields = ['home_team', 'away_team', 'date'], name="Game_PK" + ) + ] + + def __str__(self): + return self.home + " vs " + self.away_team + + +class User(models.Model): + first_name = models.CharField(max_length=100) + last_name = models.CharField(max_length=100) + school_email = models.CharField(max_length=200, primary_key=True) + school = models.ForeignKey(School, on_delete=models.CASCADE) + phone_number_country_code = models.IntegerField() + phone_number = models.IntegerField() + password_string = models.CharField(max_length=200) + is_banned = models.BooleanField(default=False) + is_logged_in = models.BooleanField(default=False) + account_is_active = models.BooleanField(default=True) + + def __str__(self): + return self.first_name + " " + self.last_name + +class Ticket(models.Model): + ticket_id = models.CharField(max_length=255, primary_key=True) + posted_by = models.ForeignKey(User, on_delete=models.CASCADE) + ask = models.FloatField() + seat = models.IntegerField() + row = models.IntegerField() + section = models.IntegerField() + game = models.ForeignKey(Game, on_delete=models.CASCADE) + date = models.DateTimeField() + + def __str__(self): + return self.ticket_id + +class Bid(models.Model): + buyer = models.ForeignKey(User, on_delete=models.DO_NOTHING) + ticket = models.ForeignKey(Ticket, on_delete=models.DO_NOTHING) + amount = models.FloatField() + is_active = models.BooleanField() + is_accepted = models.BooleanField() + + class Meta: + constraints = [ + models.UniqueConstraint( + fields = ["buyer", "ticket", "amount"], name="Bid_PK" + ) + ] + + def __str__(self): + return self.buyer + " offering " + self.amount + " for " + self.ticket + +class Transaction(models.Model): + transaction_id = models.BigIntegerField(primary_key=True) + bid = models.ForeignKey(Bid, on_delete=models.DO_NOTHING) + transaction_fee = models.FloatField() + processing_fee = models.FloatField() + seller_accepted = models.BooleanField(default=False) + buyer_sent_payment = models.BooleanField(default=False) + seller_sent_payment = models.BooleanField(default=False) + buyer_confirmed_payment = models.BooleanField(default=False) + + def __str__(self): + return self.transaction_id + +class Sale(models.Model): + sale_id = models.BigIntegerField(primary_key=True) + transaction = models.ForeignKey(Transaction, on_delete=models.DO_NOTHING) + total_amount = models.FloatField() + date = models.DateTimeField() + complaint_period_end_date = models.DateTimeField() + + def __str__(self): + return self.sale_id + +class Complaint(models.Model): + initiating_user = models.ForeignKey(User, on_delete=models.DO_NOTHING) + sale = models.ForeignKey(Sale, on_delete=models.DO_NOTHING) + accuser_provided_proof = models.BooleanField(default=False) + accuser_provided_proof_at = models.DateTimeField() + defendant_contacted = models.BooleanField(default=False) + defendant_contacted_at = models.DateTimeField() + defendant_provided_proof = models.BooleanField(default=False) + defendant_provided_proof_at = models.DateTimeField() + accuser_refunded = models.BooleanField(default=False) + accuser_refunded_at = models.DateTimeField() + defendant_exonerated = models.BooleanField() + defendant_exonerated_at = models.DateTimeField() + resolved = models.BooleanField(default=False) + resolved_at = models.DateTimeField() + + class Meta: + constraints = [ + models.UniqueConstraint( + fields = ['initiating_user', 'sale'], name="Complaint_PK" + ) + ] + + def __str__(self): + return self.initiating_user + " on " + self.sale \ No newline at end of file diff --git a/backend/django/seatstock_django/db_intermediary/tests.py b/backend/django/seatstock_django/db_intermediary/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/backend/django/seatstock_django/db_intermediary/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/backend/django/seatstock_django/db_intermediary/views.py b/backend/django/seatstock_django/db_intermediary/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/backend/django/seatstock_django/db_intermediary/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/backend/django/seatstock_django/seatstock_django/__pycache__/__init__.cpython-310.pyc b/backend/django/seatstock_django/seatstock_django/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db6bcf8a97b03dead7f961cb04c3c9f31ec266f8 GIT binary patch literal 211 zcmd1j<>g`kf;n6HQ$h4&5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;x_nvsFxJacWU< zOlE$0VtkBCesXDUYF%vj>sA?{u1+#|A=JKe3D!&QlB^V_bFT=P9V;xn^EAu*7IJ)|31uvl` zRC`@AS7+wSFu#T_;Z=NXR77Qz*s1>}5CL8JRU8TC2k5GK9prDkx`|d^3+7smuL6E6 z$FBi?JI6l&d_Bjn1AYhHKsWIkzJ+h&b$kb{{aPl1`C%?`3nUsjejD(+Ild0~N9Ydv z5Y}-AHBxvtg&z@NB%1foJ@Y=gZ+;AscmVH1^s)H~dSEtDQ7<$f+8Yq^s(NJmqoBcX z6cK;K8pD9X#Ew`LIL8*sxFHRWuoKDE>NfTjKgTZzbgv4R(>B`%g`DlzA!-?xQT*9J8Fud5A?IUo632mI%?gX>{#}~!J8ApF6 z72IzMT->#zakI#m+`vW_3L@;E@TDQ~r;~Uy4-xShb|w_JTCEe@bmK61{AfrIPd|;% zT>Hhn@%KX-w#FO7$Lz(%qc2(^37dtvO<%g8e8u3o(nY&oLQh4AS;C z!vlsr0*$qKjR+F$BiyzM$%iYiF>ltlE ztC?%fIDyLX0$=W=!~YOvbSQTKJSF&aM)aGxwb&56*>xx|hqw_ZE$kV^`AtkiHLJXn zg>Odd>vwFzCC>4Y?HogM$^Y7-wuc8{(nV}W@1i8~{*@=xWoG@nQgSk1jIbBF(9O&& zL-)eM<96T4zr)=n9;0@sqg_ru81$jGYD)S#XLH zlhG%rG29lSF&zt$LqOSNS7BN>@sDT$CZeKTm1O%vKomY3ds@l_@DSH~P z?F|NowZGTv4EkGKOqRyQqk#Bk&Cqssdy0{IF{@y~=yp<%i&Kuy>(BJqm zKo>6el>YX%?OM{yyn^caYRBJ0QWSZ5^nA1L^l8cAke+-39h__&jNuG~@C1JA zf}Ed=2U!6e%%2JGB4l4!a(Kq2e?qlPT>JxkffX19AQq%rO{fdyiYQ1zy(U(~l2nuy zq^el07wf<&ie;fFNX6nC@!#Sbv0l4b6SAjRDgtNvh<}T3YF84DD1z+l`