Compare commits
2 Commits
5484b89e3a
...
e9efe8ba77
| Author | SHA1 | Date |
|---|---|---|
|
|
e9efe8ba77 | |
|
|
06d235d602 |
|
|
@ -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])
|
||||
|
|
|
|||
|
|
@ -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 %}
|
||||
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue