admin, blog and feedback

This commit is contained in:
doesnm 2024-09-07 18:59:47 +03:00
parent b0f5fc690a
commit def52230a9
Signed by: doesnm
SSH key fingerprint: SHA256:fSXBOeK0SXxGqmbQ2pKhSvH3TF0kCijXZfzh3gHfQYM
4 changed files with 58 additions and 20 deletions

View file

@ -1,7 +1,8 @@
from django.contrib import admin from django.contrib import admin
from django.contrib.auth.admin import UserAdmin,GroupAdmin from django.contrib.auth.admin import UserAdmin,GroupAdmin
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from unfold.admin import ModelAdmin from unfold.admin import ModelAdmin, TabularInline
from .models import Site, Page, Url, Variable, File, Post, Feedback from .models import Site, Page, Url, Variable, File, Post, Feedback
from unfold.contrib.forms.widgets import WysiwygWidget from unfold.contrib.forms.widgets import WysiwygWidget
from django.db import models from django.db import models
@ -14,24 +15,30 @@ class UserAdmin(UserAdmin, ModelAdmin): pass
@admin.register(Group) @admin.register(Group)
class GroupAdmin(GroupAdmin, ModelAdmin): pass class GroupAdmin(GroupAdmin, ModelAdmin): pass
class UrlInline(TabularInline):
model = Url
extra = 0
class PostInline(TabularInline):
model = Post
extra = 0
formfield_overrides = {
models.TextField: {
"widget": WysiwygWidget
}
}
def save_form(self,request,obj,form,change):
obj.author = request.user
obj.save()
@admin.register(Site) @admin.register(Site)
class SiteAdmin(ModelAdmin): class SiteAdmin(ModelAdmin):
list_display = ["domain","base_page"] list_display = ["domain","base_page"]
list_editable = ["base_page"] list_editable = ["base_page"]
inlines = [UrlInline,PostInline]
@admin.register(Page) @admin.register(Page)
class PageAdmin(ModelAdmin): pass class PageAdmin(ModelAdmin): pass
# formfield_overrides = {
# models.TextField: {
# "widget": WysiwygWidget
# }
# }
@admin.register(Url)
class UrlAdmin(ModelAdmin):
list_display = ["site","page","path"]
list_display_links = ["path"]
list_editable = ["site","page"]
@admin.register(Variable) @admin.register(Variable)
class VariableAdmin(ModelAdmin): class VariableAdmin(ModelAdmin):
@ -41,13 +48,6 @@ class VariableAdmin(ModelAdmin):
@admin.register(File) @admin.register(File)
class FileAdmin(ModelAdmin): pass class FileAdmin(ModelAdmin): pass
@admin.register(Post)
class PostAdmin(ModelAdmin):
list_display = ["author","title"]
list_display_links = ["author","title"]
def save_model(self,request,obj,form,change):
obj.author = request.user
obj.save()
@admin.register(Feedback) @admin.register(Feedback)
class FeedbackAdmin(ModelAdmin): class FeedbackAdmin(ModelAdmin):

View file

@ -0,0 +1,25 @@
# Generated by Django 5.1 on 2024-09-07 08:14
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cmsMain', '0006_post_url'),
]
operations = [
migrations.AddField(
model_name='post',
name='site',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT, to='cmsMain.site', verbose_name='Сайт'),
preserve_default=False,
),
migrations.AlterField(
model_name='post',
name='url',
field=models.CharField(help_text='например: my-first-test-post', max_length=100, verbose_name='Ссылка'),
),
]

View file

@ -49,6 +49,7 @@ class File(models.Model):
verbose_name_plural = "Файлы" verbose_name_plural = "Файлы"
class Post(models.Model): class Post(models.Model):
site = models.ForeignKey(Site,verbose_name="Сайт",on_delete=models.PROTECT)
url = models.CharField("Ссылка",help_text="например: my-first-test-post",max_length=100) url = models.CharField("Ссылка",help_text="например: my-first-test-post",max_length=100)
title = models.CharField("Название",max_length=100) title = models.CharField("Название",max_length=100)
author = models.ForeignKey(User,editable=False,verbose_name="Автор",on_delete=models.PROTECT) author = models.ForeignKey(User,editable=False,verbose_name="Автор",on_delete=models.PROTECT)

View file

@ -1,7 +1,7 @@
from django.shortcuts import render, get_object_or_404 from django.shortcuts import render, get_object_or_404
from django.views import View from django.views import View
from django import template from django import template
from .models import Site, Url, Variable, Post from .models import Site, Url, Variable, Post, Feedback
from django.http import HttpResponse from django.http import HttpResponse
context = template.Context({}) context = template.Context({})
@ -28,4 +28,16 @@ class PageView(View):
"post": post "post": post
}) })
t = template.Template(s.base_page.content) t = template.Template(s.base_page.content)
return HttpResponse(t.render(context)) return HttpResponse(t.render(context))
class FeedpackView(View):
def post(self,request):
name = request.POST["name"]
email = request.POST["email"]
message = request.POST["message"]
Feedback.objects.create(
name=name,
email=email,
message=message
)
return HttpResponse("Ваше обращение отправлено успешно")