diff --git a/config/settings/base.py b/config/settings/base.py index 6219e39..16c6413 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -35,6 +35,7 @@ INSTALLED_APPS = [ "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", + "flangr.posts", ] MIDDLEWARE = [ @@ -108,3 +109,5 @@ STATIC_URL = "static/" # https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + +MEDIA_URL = "media/" diff --git a/config/settings/development.py b/config/settings/development.py index 1e7319a..06bc389 100644 --- a/config/settings/development.py +++ b/config/settings/development.py @@ -15,3 +15,5 @@ DEBUG = True # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = "django-insecure-lt9sfgmvcrjuiz!=l)3f50x&333&p4wi60t1@jdjtrho43ytl+" + +MEDIA_ROOT = "./media" diff --git a/flangr/posts/__init__.py b/flangr/posts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flangr/posts/admin.py b/flangr/posts/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/flangr/posts/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/flangr/posts/apps.py b/flangr/posts/apps.py new file mode 100644 index 0000000..822f16c --- /dev/null +++ b/flangr/posts/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class PostsConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "flangr.posts" diff --git a/flangr/posts/migrations/0001_initial.py b/flangr/posts/migrations/0001_initial.py new file mode 100644 index 0000000..7dfef44 --- /dev/null +++ b/flangr/posts/migrations/0001_initial.py @@ -0,0 +1,32 @@ +# Generated by Django 4.0.5 on 2022-07-03 21:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Post", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("img", models.ImageField(upload_to="posts/%Y/%m")), + ("posted", models.DateTimeField(auto_now_add=True)), + ("public", models.BooleanField(default=False)), + ("title", models.CharField(max_length=255)), + ("body", models.TextField()), + ], + ), + ] diff --git a/flangr/posts/migrations/__init__.py b/flangr/posts/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/flangr/posts/models.py b/flangr/posts/models.py new file mode 100644 index 0000000..0c1c4fa --- /dev/null +++ b/flangr/posts/models.py @@ -0,0 +1,15 @@ +from django.db import models + +# Create your models here. + + +class Post(models.Model): + img = models.ImageField(upload_to="posts/%Y/%m") + posted = models.DateTimeField(auto_now_add=True) + public = models.BooleanField(default=False) + + title = models.CharField(max_length=255) + body = models.TextField() + + def __str__(self): + return f"Post: {self.title} at {self.posted.strftime('%Y-%m-%d %H:%S')}" diff --git a/flangr/posts/test_data/test_img.png b/flangr/posts/test_data/test_img.png new file mode 100644 index 0000000..4c9a236 Binary files /dev/null and b/flangr/posts/test_data/test_img.png differ diff --git a/flangr/posts/tests.py b/flangr/posts/tests.py new file mode 100644 index 0000000..d0d72fa --- /dev/null +++ b/flangr/posts/tests.py @@ -0,0 +1,26 @@ +import os + +from django.test import TestCase +from django.core.files import File + +from .models import Post + +# Create your tests here. + + +class TestPostModelTests(TestCase): + def test_can_create_model(self): + with open( + os.path.join(os.path.dirname(__file__), "test_data", "test_img.png"), + mode="rb", + ) as f: + try: + p = Post.objects.create( + img=File(f, "somefile.png"), + title="Foobar", + body="Some file", + ) + + self.assertIn("Foobar", str(p)) + finally: + p.img.delete() diff --git a/flangr/posts/views.py b/flangr/posts/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/flangr/posts/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/requirements/base.txt b/requirements/base.txt index e69de29..3e69a73 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -0,0 +1,2 @@ +pillow +django