Compare commits

...

2 Commits

Author SHA1 Message Date
ef4cca21c8 Add basic data model (#2)
There are podcasts and podcasts have episodes. No magic or other automated stuff here (yet)
2023-05-18 19:01:49 +02:00
476a986c1a Restructure project because django (#1)
aka I'm an idiot.
2023-05-18 19:01:07 +02:00
16 changed files with 99 additions and 9 deletions

View File

@ -1,3 +1,4 @@
asgiref==3.6.0 asgiref==3.6.0
Django==4.2.1 Django==4.2.1
Pillow==9.5.0
sqlparse==0.4.4 sqlparse==0.4.4

15
ventilator/fan/admin.py Normal file
View File

@ -0,0 +1,15 @@
from django.contrib import admin
from .models import Podcast, PodcastEpisode
class PodcastAdminModel(admin.ModelAdmin):
pass
class PodcastEpisodeAdminModel(admin.ModelAdmin):
pass
admin.site.register(Podcast, PodcastAdminModel)
admin.site.register(PodcastEpisode, PodcastEpisodeAdminModel)

View File

@ -1,6 +1,6 @@
from django.apps import AppConfig from django.apps import AppConfig
class VentilatorConfig(AppConfig): class FanConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField' default_auto_field = 'django.db.models.BigAutoField'
name = 'ventilator' name = 'fan'

View File

@ -0,0 +1,47 @@
# Generated by Django 4.2.1 on 2023-05-18 17:00
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Podcast',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.UUIDField(default=uuid.uuid4, unique=True)),
('slug', models.CharField(max_length=10)),
('title', models.CharField(max_length=50)),
('author', models.CharField(max_length=200)),
('description', models.TextField(max_length=4000)),
('image', models.ImageField(upload_to='')),
('language', models.CharField(max_length=10)),
('published', models.BooleanField(default=False)),
('homepage', models.URLField()),
],
),
migrations.CreateModel(
name='PodcastEpisode',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('uuid', models.UUIDField(default=uuid.uuid4)),
('title', models.CharField(max_length=200)),
('audio_file', models.FileField(upload_to='episodes/')),
('pub_date', models.DateTimeField()),
('description', models.TextField()),
('duration', models.DurationField()),
('episode_number', models.IntegerField()),
('season_number', models.IntegerField()),
('published', models.BooleanField(default=False)),
('podcast', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='fan.podcast')),
],
),
]

32
ventilator/fan/models.py Normal file
View File

@ -0,0 +1,32 @@
from django.db import models
import uuid
class Podcast(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, unique=True)
slug = models.CharField(max_length=10)
title = models.CharField(max_length=50)
author = models.CharField(max_length=200)
description = models.TextField(max_length=4000)
image = models.ImageField()
language = models.CharField(max_length=10) #TODO: Add Text Choices, ISO 639
# iTunes-category (Optional), String
published = models.BooleanField(default=False)
homepage = models.URLField()
def __str__(self):
return self.title
class PodcastEpisode(models.Model):
uuid = models.UUIDField(default=uuid.uuid4)
title = models.CharField(max_length=200)
audio_file = models.FileField(upload_to="episodes/")
pub_date = models.DateTimeField()
description = models.TextField()
duration = models.DurationField()
podcast = models.ForeignKey("Podcast", on_delete=models.CASCADE)
episode_number = models.IntegerField()
season_number = models.IntegerField()
published = models.BooleanField(default=False)

View File

@ -1,3 +0,0 @@
from django.contrib import admin
# Register your models here.

View File

@ -1,3 +0,0 @@
from django.db import models
# Create your models here.

View File

@ -20,7 +20,7 @@ BASE_DIR = Path(__file__).resolve().parent.parent
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-k!rlb6%o#27kbzu*(%8)7(akcvz86-og+ep^p2e(e*6ffd21cj' SECRET_KEY = 'django-insecure-&ysb7-2iiu9s$s!6x175z3-8eo*)3ct1trif#zn!$cr1se+yup'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
@ -37,6 +37,7 @@ INSTALLED_APPS = [
'django.contrib.sessions', 'django.contrib.sessions',
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
"fan",
] ]
MIDDLEWARE = [ MIDDLEWARE = [