movie-night-api/movie_manager/models.py

78 lines
2.6 KiB
Python
Raw Normal View History

2025-04-07 00:30:11 -05:00
from django.db import models
from django.contrib.auth.models import User
from django.db.models import SET_NULL
2025-04-20 22:29:55 -05:00
import datetime
2025-04-07 00:30:11 -05:00
2025-04-13 01:47:22 -05:00
2025-04-07 00:30:11 -05:00
class Movie(models.Model):
title = models.CharField(max_length=100)
imdb_id = models.CharField(max_length=100)
year = models.IntegerField(null=True, blank=True)
director = models.CharField(max_length=500, null=True, blank=True)
2025-04-20 22:29:55 -05:00
actors = models.TextField(null=True, blank=True)
plot = models.TextField(null=True, blank=True)
genre = models.CharField(max_length=100, null=True, blank=True)
mpaa_rating = models.CharField(max_length=20, null=True, blank=True)
2025-04-20 22:29:55 -05:00
critic_scores = models.TextField(null=True, blank=True)
poster = models.TextField(null=True, blank=True)
added_by = models.ForeignKey(User, on_delete=SET_NULL, null=True)
2025-04-07 00:30:11 -05:00
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
2025-04-07 21:05:05 -05:00
class Meta:
ordering = ["title"]
2025-04-07 00:30:11 -05:00
def __str__(self):
return self.title
class MovieList(models.Model):
name = models.CharField(max_length=100)
public = models.BooleanField(default=False)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
movies = models.ManyToManyField(Movie)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
2025-04-07 21:05:05 -05:00
class Meta:
ordering = ["name"]
2025-04-07 00:30:11 -05:00
def __str__(self):
return self.name
2025-04-08 17:04:32 -05:00
2025-04-13 01:47:22 -05:00
2025-04-08 17:04:32 -05:00
class Schedule(models.Model):
name = models.CharField(max_length=100)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
public = models.BooleanField(default=False)
slug = models.SlugField(max_length=100, default="")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
2025-04-20 22:29:55 -05:00
class Meta:
ordering = ["name"]
def __str__(self):
return self.name
2025-04-13 01:47:22 -05:00
2025-04-08 17:04:32 -05:00
class Showing(models.Model):
movie = models.ForeignKey(Movie, on_delete=models.CASCADE)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
2025-04-20 22:29:55 -05:00
schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
2025-04-08 17:04:32 -05:00
public = models.BooleanField(default=False)
showtime = models.DateTimeField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
class Meta:
ordering = ["showtime"]
2025-04-20 22:29:55 -05:00
def __str__(self):
showtime = self.showtime.strftime("%Y-%m-%d %H:%M")
return showtime