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 0000000..db6bcf8 Binary files /dev/null and b/backend/django/seatstock_django/seatstock_django/__pycache__/__init__.cpython-310.pyc differ diff --git a/backend/django/seatstock_django/seatstock_django/__pycache__/settings.cpython-310.pyc b/backend/django/seatstock_django/seatstock_django/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000..7cae89f Binary files /dev/null and b/backend/django/seatstock_django/seatstock_django/__pycache__/settings.cpython-310.pyc differ