增加cms article

This commit is contained in:
caoqianming 2022-03-16 10:28:39 +08:00
parent e7fdc7984a
commit b4795ab9f2
10 changed files with 108 additions and 5 deletions

View File

@ -2,4 +2,5 @@ from django.apps import AppConfig
class CmsConfig(AppConfig):
name = 'cms'
name = 'apps.cms'
verbose_name = '内容管理'

View File

@ -0,0 +1,37 @@
# Generated by Django 3.2.9 on 2022-03-16 02:25
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Article',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('title', models.CharField(max_length=100, verbose_name='标题')),
('content', models.TextField(verbose_name='内容')),
('author', models.CharField(blank=True, max_length=100, null=True, verbose_name='作者')),
('is_top', models.BooleanField(default=False, verbose_name='是否置顶')),
('is_published', models.BooleanField(default=False, verbose_name='是否发布')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='article_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='article_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
]

View File

@ -1,3 +1,12 @@
from django.db import models
from apps.system.models import CommonAModel
# Create your models here.
class Article(CommonAModel):
"""
文章
"""
title = models.CharField('标题', max_length=100)
content = models.TextField('内容')
author = models.CharField('作者', max_length=100, null=True, blank=True)
is_top = models.BooleanField('是否置顶', default=False)
is_published = models.BooleanField('是否发布', default=False)

View File

@ -0,0 +1,21 @@
from rest_framework import serializers
from apps.cms.models import Article
from apps.system.serializers import UserSimpleSerializer
class ArticleListSerializer(serializers.ModelSerializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
class Meta:
model = Article
exclude = ['content']
class ArticleCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['title', 'content', 'author', 'is_published', 'is_top']
class ArticleDetailSerializer(serializers.ModelSerializer):
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
class Meta:
model = Article
fields = '__all__'

View File

@ -0,0 +1,10 @@
from rest_framework.routers import DefaultRouter
from django.urls import path, include
from apps.cms.views import ArticleViewSet
router = DefaultRouter()
router.register('article', ArticleViewSet, basename='article')
urlpatterns = [
path('', include(router.urls)),
]

View File

@ -1,3 +1,26 @@
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from apps.cms.models import Article
from apps.cms.serializers import ArticleCreateUpdateSerializer, ArticleDetailSerializer, ArticleListSerializer
from apps.system.mixins import CreateUpdateModelAMixin
# Create your views here.
class ArticleViewSet(CreateUpdateModelAMixin, ModelViewSet):
"""
文章增删改查
"""
perms_map = {'get': '*', 'post': 'article_create'
, 'put':'article_update', 'delete':'article_delete'}
queryset = Article.objects.select_related('create_by')
filterset_fields = ['is_top', 'is_published']
serializer_class = ArticleListSerializer
search_fields = ['title', 'author']
ordering = ['is_published', 'is_top', 'update_time']
def get_serializer_class(self):
if self.action in ['create', 'update']:
return ArticleCreateUpdateSerializer
elif self.action in ['retrieve']:
return ArticleDetailSerializer
return super().get_serializer_class()

View File

@ -1,4 +1,4 @@
from django.db.models import base
from rest_framework import urlpatterns
from apps.hrm.views import ClockRecordViewSet, EmployeeViewSet, FaceLogin, NotWorkRemarkViewSet
from django.urls import path, include

View File

@ -72,7 +72,7 @@ class ProcessNowView(CreateAPIView):
工序当前进度
"""
perms_map = {'post':'*'}
serializers_class = serializers.Serializer
serializer_class = serializers.Serializer
def create(self, request, *args, **kwargs):
objs = SubProductionPlan.objects.filter(production_plan__state__in =[ProductionPlan.PLAN_STATE_WORKING,

View File

@ -60,7 +60,8 @@ INSTALLED_APPS = [
'apps.pm',
'apps.wpm',
'apps.srm',
'apps.develop'
'apps.develop',
'apps.cms'
]
X_FRAME_OPTIONS = 'SAMEORIGIN'

View File

@ -72,6 +72,7 @@ urlpatterns = [
path('api/wpm/', include('apps.wpm.urls')),
path('api/srm/', include('apps.srm.urls')),
path('api/develop/', include('apps.develop.urls')),
path('api/cms/', include('apps.cms.urls')),
# 工具
path('api/utils/signature/', GenSignature.as_view()),