Compare commits

...

2 Commits

4 changed files with 43 additions and 4 deletions

View File

@ -50,10 +50,10 @@ class NewsItem(models.Model):
get_user_model(), on_delete=models.CASCADE, related_name="news_items"
)
def save(self):
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
return super(NewsItem, self).save()
return super(NewsItem, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse_lazy("news:detail", args=[self.category.slug, self.slug])

View File

@ -0,0 +1,13 @@
{% extends 'base.html' %}
{% block content %}
<div>
<h1>News Item</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create Item">
<a href="{% url 'dashboard:dashboard' %}">Cancel</a>
</form>
</div>
{% endblock %}

View File

@ -1,12 +1,13 @@
from django.urls import path
from .views import (CategoryList, NewsItemDetail, NewsItemList,
from .views import (CategoryList, NewsItemCreate, NewsItemDetail, NewsItemList,
NewsItemRedirectView, TagList)
app_name = "news"
urlpatterns = [
path("", NewsItemList.as_view(), name="list"),
path("add-news/", NewsItemCreate.as_view(), name="add_news"),
path("categories/", CategoryList.as_view(), name="categories"),
path("categories/<slug:category>/", NewsItemList.as_view(), name="list_category"),
path("tags/", TagList.as_view(), name="tags"),

View File

@ -1,5 +1,9 @@
from django.contrib.auth.decorators import login_required
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView, ListView, RedirectView
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import (CreateView, DetailView, ListView,
RedirectView, UpdateView)
from .models import Category, NewsItem
@ -8,6 +12,27 @@ class CategoryList(ListView):
model = Category
@method_decorator(login_required, name="dispatch")
class NewsItemCreate(CreateView):
model = NewsItem
fields = [
"title",
"category",
"body",
"origin_text",
"origin_link",
"header_img",
"tags",
"is_published",
"is_featured",
]
success_url = reverse_lazy("dashboard:dashboard")
def form_valid(self, form):
form.instance.owner = self.request.user
return super().form_valid(form)
class NewsItemDetail(DetailView):
model = NewsItem