Commit 893da6cd authored by Vasyl Bodnaruk's avatar Vasyl Bodnaruk

fix bug in Add news functionality

add menu
parent db641388
{% extends "base.html" %}
{% load static %}
{% block style %}
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/css/bootstrap-datepicker3.min.css">
<link rel="stylesheet" href="{% static 'css/fastselect.css' %}">
{% endblock %}
{% block title %}
<title>Add news</title>
{% endblock %}
{% block content %}
<main class="pt-2 pb-5">
<div class="container">
<form class="form" method="post">
{% csrf_token %}
<section class="mb-5">
<h5 class="offset-1 display-5 mb-2">Add</h5>
<!-- Title -->
<div class="form-group row">
<label for="title" class="offset-1 col-2 col-form-label">Title</label>
<div class="col-6">
<input class="form-control" type="text" placeholder="Some title..." id="title" name="title">
<!--<input type="hidden" name="news_id" value="{{ news.id }}">-->
</div>
</div>
<!-- Description -->
<div class="form-group row">
<label for="description" class="offset-1 col-2 col-form-label">Description</label>
<div class="col-6">
<textarea class="form-control" type="text" placeholder="Some description..." id="description"
name="description" rows="7"></textarea>
</div>
</div>
<!-- Url -->
<div class="form-group row">
<label for="url" class="offset-1 col-2 col-form-label">Url</label>
<div class="col-6">
<input class="form-control" type="text" placeholder="Some url..." id="url" name="url">
</div>
</div>
<!-- Entity -->
<div class="form-group row has-success">
<label for="entity" class="offset-1 col-2 col-form-label">Entity</label>
<div class="col-6">
<input
type="text"
id="entity"
data-url="{% url 'auto' slug='entity' %}"
data-load-once="true"
class="multiselect singleInputDynamic"
name="entity"/>
<div class="form-control-feedback">Select company from list</div>
</div>
<!--<div class="col-3">
<button class="btn btn-primary">Add entity</button>
</div>-->
</div>
<!-- Radar -->
<div class="form-group row">
<label for="radar" class="offset-1 col-2 col-form-label">Radar</label>
<div class="col-6">
<input
type="text"
id="radar"
data-url="{% url 'auto' slug='radar' %}"
data-load-once="true"
class="multiselect singleInputDynamic"
name="radar"/>
</div>
</div>
<!-- Industry -->
<div class="form-group row">
<label for="industry" class="offset-1 col-2 col-form-label">Industry</label>
<div class="col-6">
<input
type="text"
id="industry"
class="multiselect"
data-url="{% url 'auto' slug='industry' %}"
data-load-once="true"
name="industry"/>
</div>
</div>
<!-- Function -->
<div class="form-group row">
<label for="function" class="offset-1 col-2 col-form-label">Function</label>
<div class="col-6">
<input
type="text"
id="function"
class="multiselect"
data-url="{% url 'auto' slug='function' %}"
data-load-once="true"
name="function"/>
</div>
</div>
<!-- Media -->
<div class="form-group row">
<label for="media" class="offset-1 col-2 col-form-label">Media</label>
<div class="col-6">
<div class="row">
<div class="col-12">
<input
type="text"
id="media"
class="multiselect"
data-url="{% url 'auto' slug='media' %}"
data-load-once="true"
name="media"/>
</div>
<!--<div class="col-3">
<button class="btn btn-primary">Add media</button>
</div>-->
</div>
</div>
</div>
<!-- Technology -->
<div class="form-group row">
<label for="technology" class="offset-1 col-2 col-form-label">Technology</label>
<div class="col-6">
<input
type="text"
id="technology"
class="multiselect"
data-url="{% url 'auto' slug='technology' %}"
data-load-once="true"
name="technology"/>
</div>
</div>
<!-- Type -->
<div class="form-group row">
<label for="type" class="offset-1 col-2 col-form-label">Type</label>
<div class="col-3">
<input
type="text"
id="type"
class="multiselect"
data-url="{% url 'auto' slug='type' %}"
data-load-once="true"
name="type"/>
</div>
</div>
<!-- Region -->
<div class="form-group row">
<label for="region" class="offset-1 col-2 col-form-label">Region</label>
<div class="col-3">
<input
type="text"
id="region"
class="multiselect"
data-url="{% url 'auto' slug='region' %}"
data-load-once="true"
name="region"/>
</div>
</div>
<!-- Publish Date -->
<div class="form-group row">
<label for="publish-date" class="offset-1 col-2 col-form-label">Publish Date</label>
<div class="col-3">
<input type="date" class="form-control" placeholder="Choose a date" name="date">
</div>
</div>
<!-- Tag -->
<div class="form-group row">
<label for="tag" class="offset-1 col-2 col-form-label">Tag</label>
<div class="col-6">
<input
type="text"
multiple
id="tag"
class="multiselect"
data-url="{% url 'auto' slug='tags' %}"
data-load-once="true"
name="tags"/>
</div>
</div>
<!-- Submit -->
<div class="form-group row">
<div class="offset-8 col-2 pull-right">
<a class="form-control btn btn-danger" href="/news">Cancel</a>
</div>
<div class="col-2">
<button type="submit" class="form-control btn btn-primary">Create</button>
</div>
</div>
</section>
</form>
</div>
</main>
{% endblock %}
{% block script %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/js/bootstrap-datepicker.min.js"></script>
<script src="http://dbrekalo.github.io/fastselect/dist/fastselect.standalone.js"></script>
{% endblock %}
\ No newline at end of file
...@@ -17,6 +17,19 @@ ...@@ -17,6 +17,19 @@
</head> </head>
<body> <body>
<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
<div class="navbar-header">
<a class="navbar-brand" href="#">ESI</a>
</div>
<ul class="nav navbar-nav">
<li class="active"><a href="/">Home</a></li>
<li><a href="{% url 'list_news' %}">News</a></li>
<li><a href="#">Settings</a></li>
<li><a href="#">Stat</a></li>
</ul>
</nav>
{% block content %} {% block content %}
{% endblock %} {% endblock %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
......
...@@ -49,9 +49,9 @@ ...@@ -49,9 +49,9 @@
<table class="table table-hover"> <table class="table table-hover">
<thead class="thead-inverse"> <thead class="thead-inverse">
<tr> <tr>
<th> <th><a class="text-white" href="?order_by=title{% if request.GET.order_by == 'title' and request.GET.reverse != '1' %}&amp;reverse=1{% endif %}">
<span>Title</span> Title {% if request.GET.order_by == 'title' and request.GET.reverse != '1' %}&uarr;
</th> {% elif request.GET.order_by == 'title' and request.GET.reverse == '1' %}&darr;{% endif %}</a></th>
<th><a class="text-white" href="?order_by=media_id{% if request.GET.order_by == 'media_id' and request.GET.reverse != '1' %}&amp;reverse=1{% endif %}"> <th><a class="text-white" href="?order_by=media_id{% if request.GET.order_by == 'media_id' and request.GET.reverse != '1' %}&amp;reverse=1{% endif %}">
Media {% if request.GET.order_by == 'media_id' and request.GET.reverse != '1' %}&uarr; Media {% if request.GET.order_by == 'media_id' and request.GET.reverse != '1' %}&uarr;
{% elif request.GET.order_by == 'media_id' and request.GET.reverse == '1' %}&darr;{% endif %}</a></th> {% elif request.GET.order_by == 'media_id' and request.GET.reverse == '1' %}&darr;{% endif %}</a></th>
......
import json import json
from django.http import JsonResponse from django.http import JsonResponse
from .models import WpEsiRadar, WpEsiIndustry, WpEsiFunction, WpEsiMedia, WpEsiTechnology, WpEsiType, WpEsiRegion, \ from .models import WpEsiRadar, WpEsiIndustry, WpEsiFunction, WpEsiMedia, WpEsiTechnology, WpEsiType, WpEsiRegion, \
WpEsiTag WpEsiTag, WpEsiEntity
def auto(request, slug): def auto(request, slug):
print(slug) print(slug)
if slug == 'entity':
return select(WpEsiEntity)
if slug == 'radar': if slug == 'radar':
return select(WpEsiRadar) return select(WpEsiRadar)
if slug == 'industry': if slug == 'industry':
......
...@@ -4,10 +4,19 @@ from django import forms ...@@ -4,10 +4,19 @@ from django import forms
from .models import News from .models import News
class NewsUpdate(forms.Form): class NewsForm(forms.Form):
def update(self): def update(self):
news = News.objects.get(pk=self.data['news_id']) news = News.objects.get(pk=self.data['news_id'])
news = self._make(news)
news.save()
def create(self):
news = News()
news = self._make(news)
news.save()
def _make(self, news):
if self.data['title']: if self.data['title']:
news.title = self.data['title'] news.title = self.data['title']
if self.data['description']: if self.data['description']:
...@@ -35,4 +44,4 @@ class NewsUpdate(forms.Form): ...@@ -35,4 +44,4 @@ class NewsUpdate(forms.Form):
if self.data['tags']: if self.data['tags']:
news.tags_id = [int(i) for i in self.data['tags'].split(',')] news.tags_id = [int(i) for i in self.data['tags'].split(',')]
news.save() return news
\ No newline at end of file
from django.conf.urls import url from django.conf.urls import url
from .views import ListNewsView, EditNewsView, ViewNewsView, add from .views import ListNewsView, EditNewsView, ViewNewsView, AddNewsView
from .autocomplete import * from .autocomplete import *
...@@ -8,5 +8,5 @@ urlpatterns = [ ...@@ -8,5 +8,5 @@ urlpatterns = [
url(r'^(?P<id>[0-9]+)$', EditNewsView.as_view(), name='edit_news'), url(r'^(?P<id>[0-9]+)$', EditNewsView.as_view(), name='edit_news'),
url(r'^view/(?P<id>[0-9]+)$', ViewNewsView.as_view(), name='view_news'), url(r'^view/(?P<id>[0-9]+)$', ViewNewsView.as_view(), name='view_news'),
url(r'^auto/(?P<slug>\w+)$', auto, name='auto'), url(r'^auto/(?P<slug>\w+)$', auto, name='auto'),
url(r'^add/$', add, name='add_news') url(r'^add/$', AddNewsView.as_view(), name='add_news')
] ]
\ No newline at end of file
...@@ -8,7 +8,7 @@ from django.db.models import Max, Min ...@@ -8,7 +8,7 @@ from django.db.models import Max, Min
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity
from .forms import NewsUpdate from .forms import NewsForm
class ListNewsView(ListView): class ListNewsView(ListView):
...@@ -23,7 +23,7 @@ class ListNewsView(ListView): ...@@ -23,7 +23,7 @@ class ListNewsView(ListView):
news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date') news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date')
order_by = request.GET.get('order_by') order_by = request.GET.get('order_by')
if order_by in ('media_id', 'type_id', 'region_id', 'publish_date'): if order_by in ('media_id', 'type_id', 'region_id', 'publish_date', 'title'):
news = news.order_by('-' + order_by) news = news.order_by('-' + order_by)
if request.GET.get('reverse') == '1': if request.GET.get('reverse') == '1':
news = news.reverse() news = news.reverse()
...@@ -94,7 +94,7 @@ class EditNewsView(DetailView): ...@@ -94,7 +94,7 @@ class EditNewsView(DetailView):
return render(request, self.template_name, {'news': news}) return render(request, self.template_name, {'news': news})
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
form = NewsUpdate(request.POST) form = NewsForm(request.POST)
if form.is_valid(): if form.is_valid():
form.update() form.update()
...@@ -124,7 +124,15 @@ class ViewNewsView(DetailView): ...@@ -124,7 +124,15 @@ class ViewNewsView(DetailView):
return HttpResponseRedirect(reverse('view_news', kwargs={'id': export_news})) return HttpResponseRedirect(reverse('view_news', kwargs={'id': export_news}))
def add(request): class AddNewsView(CreateView):
news = News() template_name = 'add_news.html'
news.save()
return HttpResponseRedirect(reverse('edit_news', kwargs={'id': news.id})) def get(self, request, *args, **kwargs):
\ No newline at end of file return render(request, template_name=self.template_name)
def post(self, request, *args, **kwargs):
form = NewsForm(request.POST)
if form.is_valid():
form.create()
return HttpResponseRedirect(reverse('list_news'))
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment