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 @@
</head>
<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 %}
{% endblock %}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
......
......@@ -49,9 +49,9 @@
<table class="table table-hover">
<thead class="thead-inverse">
<tr>
<th>
<span>Title</span>
</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 %}">
Title {% if request.GET.order_by == 'title' and request.GET.reverse != '1' %}&uarr;
{% 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 %}">
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>
......
import json
from django.http import JsonResponse
from .models import WpEsiRadar, WpEsiIndustry, WpEsiFunction, WpEsiMedia, WpEsiTechnology, WpEsiType, WpEsiRegion, \
WpEsiTag
WpEsiTag, WpEsiEntity
def auto(request, slug):
print(slug)
if slug == 'entity':
return select(WpEsiEntity)
if slug == 'radar':
return select(WpEsiRadar)
if slug == 'industry':
......
......@@ -4,10 +4,19 @@ from django import forms
from .models import News
class NewsUpdate(forms.Form):
class NewsForm(forms.Form):
def update(self):
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']:
news.title = self.data['title']
if self.data['description']:
......@@ -35,4 +44,4 @@ class NewsUpdate(forms.Form):
if self.data['tags']:
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 .views import ListNewsView, EditNewsView, ViewNewsView, add
from .views import ListNewsView, EditNewsView, ViewNewsView, AddNewsView
from .autocomplete import *
......@@ -8,5 +8,5 @@ urlpatterns = [
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'^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
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import News, WpEsiNews, WpEsiNewsEntity, WpEsiMedia, WpEsiEntity
from .forms import NewsUpdate
from .forms import NewsForm
class ListNewsView(ListView):
......@@ -23,7 +23,7 @@ class ListNewsView(ListView):
news = News.objects.filter(is_accepted=False).order_by('-id')#.order_by('record_date')
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)
if request.GET.get('reverse') == '1':
news = news.reverse()
......@@ -94,7 +94,7 @@ class EditNewsView(DetailView):
return render(request, self.template_name, {'news': news})
def post(self, request, *args, **kwargs):
form = NewsUpdate(request.POST)
form = NewsForm(request.POST)
if form.is_valid():
form.update()
......@@ -124,7 +124,15 @@ class ViewNewsView(DetailView):
return HttpResponseRedirect(reverse('view_news', kwargs={'id': export_news}))
def add(request):
news = News()
news.save()
return HttpResponseRedirect(reverse('edit_news', kwargs={'id': news.id}))
\ No newline at end of file
class AddNewsView(CreateView):
template_name = 'add_news.html'
def get(self, request, *args, **kwargs):
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