diff --git a/config/settings/base.py b/config/settings/base.py index 16c6413..ef66e4f 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -111,3 +111,5 @@ STATIC_URL = "static/" DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" MEDIA_URL = "media/" + +AUTH_USER_MODEL = "auth.User" diff --git a/flangr/posts/admin.py b/flangr/posts/admin.py index 8c38f3f..a0e1a5f 100644 --- a/flangr/posts/admin.py +++ b/flangr/posts/admin.py @@ -1,3 +1,9 @@ from django.contrib import admin +from .models import Post, Collection, Comment + # Register your models here. + +admin.site.register(Post) +admin.site.register(Collection) +admin.site.register(Comment) diff --git a/flangr/posts/migrations/0001_initial.py b/flangr/posts/migrations/0001_initial.py index 7dfef44..ff728d5 100644 --- a/flangr/posts/migrations/0001_initial.py +++ b/flangr/posts/migrations/0001_initial.py @@ -1,13 +1,17 @@ -# Generated by Django 4.0.5 on 2022-07-03 21:35 +# Generated by Django 4.0.5 on 2022-07-04 20:55 +from django.conf import settings from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): initial = True - dependencies = [] + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] operations = [ migrations.CreateModel( @@ -25,8 +29,71 @@ class Migration(migrations.Migration): ("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, null=True)), + ("body", models.TextField(null=True)), + ( + "user", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name="Comment", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("comment", models.CharField(max_length=255)), + ( + "post", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="posts.post" + ), + ), + ( + "user", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name="Collection", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), ("title", models.CharField(max_length=255)), - ("body", models.TextField()), + ("description", models.TextField()), + ( + "posts", + models.ManyToManyField(related_name="collections", to="posts.post"), + ), + ( + "user", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), ], ), ] diff --git a/flangr/posts/migrations/0002_alter_post_body_alter_post_title.py b/flangr/posts/migrations/0002_alter_post_body_alter_post_title.py deleted file mode 100644 index 7748aa9..0000000 --- a/flangr/posts/migrations/0002_alter_post_body_alter_post_title.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.0.5 on 2022-07-04 20:31 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("posts", "0001_initial"), - ] - - operations = [ - migrations.AlterField( - model_name="post", - name="body", - field=models.TextField(null=True), - ), - migrations.AlterField( - model_name="post", - name="title", - field=models.CharField(max_length=255, null=True), - ), - ] diff --git a/flangr/posts/migrations/0003_collection.py b/flangr/posts/migrations/0003_collection.py deleted file mode 100644 index 4191259..0000000 --- a/flangr/posts/migrations/0003_collection.py +++ /dev/null @@ -1,33 +0,0 @@ -# Generated by Django 4.0.5 on 2022-07-04 20:47 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("posts", "0002_alter_post_body_alter_post_title"), - ] - - operations = [ - migrations.CreateModel( - name="Collection", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("title", models.CharField(max_length=255)), - ("description", models.TextField()), - ( - "posts", - models.ManyToManyField(related_name="collections", to="posts.post"), - ), - ], - ), - ] diff --git a/flangr/posts/models.py b/flangr/posts/models.py index 63c5e33..8c33cf6 100644 --- a/flangr/posts/models.py +++ b/flangr/posts/models.py @@ -1,5 +1,7 @@ from django.db import models +from django.conf import settings + # Create your models here. @@ -11,6 +13,8 @@ class Post(models.Model): title = models.CharField(max_length=255, null=True) body = models.TextField(null=True) + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) + def __str__(self): return f"Post: {self.title} at {self.posted.strftime('%Y-%m-%d %H:%S')}" @@ -20,6 +24,19 @@ class Collection(models.Model): description = models.TextField() posts = models.ManyToManyField("Post", related_name="collections") + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) def __str__(self): return f"Collection: {self.title}" + + +class Comment(models.Model): + post = models.ForeignKey("Post", on_delete=models.CASCADE) + comment = models.CharField(max_length=255) + + user = models.ForeignKey( + settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True + ) + + def __str__(self): + return f"Comment by {self.user} on {self.post}" diff --git a/flangr/posts/urls.py b/flangr/posts/urls.py new file mode 100644 index 0000000..604330b --- /dev/null +++ b/flangr/posts/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("post/", views.PostDetailView.as_view()), +] diff --git a/flangr/posts/views.py b/flangr/posts/views.py index 91ea44a..d90837f 100644 --- a/flangr/posts/views.py +++ b/flangr/posts/views.py @@ -1,3 +1,9 @@ -from django.shortcuts import render +from django.views.generic import DetailView # Create your views here. + +from .models import Post + + +class PostDetailView(DetailView): + model = Post diff --git a/flangr/urls.py b/flangr/urls.py index 27e300e..13f018a 100644 --- a/flangr/urls.py +++ b/flangr/urls.py @@ -14,8 +14,15 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include + +from django.conf import settings +from django.conf.urls.static import static urlpatterns = [ path("admin/", admin.site.urls), + path("posts/", include("flangr.posts.urls")), ] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)