extended default user model to save subscribed tags
This commit is contained in:
+19
-2
@@ -1,5 +1,22 @@
|
||||
from django.contrib import admin
|
||||
from .models import Post
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from .models import Post, CustomUser
|
||||
|
||||
|
||||
class CustomUserInline(admin.StackedInline):
|
||||
model = CustomUser
|
||||
can_delete = False
|
||||
verbose_name_plural = 'customUsers'
|
||||
|
||||
# Define a new User admin
|
||||
class UserAdmin(BaseUserAdmin):
|
||||
inlines = (CustomUserInline, )
|
||||
|
||||
# Re-register UserAdmin
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User, UserAdmin)
|
||||
|
||||
admin.site.register(Post)
|
||||
# Register your models here.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from django import forms
|
||||
|
||||
from .models import Post
|
||||
from .models import Post, CustomUser
|
||||
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
|
||||
|
||||
class PostForm(forms.ModelForm):
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
# Generated by Django 2.0.6 on 2018-06-28 09:13
|
||||
# Generated by Django 2.0.6 on 2018-08-15 16:15
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
import taggit.managers
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
@@ -12,9 +13,18 @@ class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('taggit', '0002_auto_20150616_2121'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CustomUser',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('mytags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')),
|
||||
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Post',
|
||||
fields=[
|
||||
@@ -24,6 +34,7 @@ class Migration(migrations.Migration):
|
||||
('created_date', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('published_date', models.DateTimeField(blank=True, null=True)),
|
||||
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
('tags', taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags')),
|
||||
],
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
# Generated by Django 2.0.6 on 2018-07-15 12:30
|
||||
|
||||
from django.db import migrations
|
||||
import taggit.managers
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('taggit', '0002_auto_20150616_2121'),
|
||||
('application', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='post',
|
||||
name='tags',
|
||||
field=taggit.managers.TaggableManager(help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tags'),
|
||||
),
|
||||
]
|
||||
@@ -1,7 +1,12 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils import timezone
|
||||
from taggit.managers import TaggableManager
|
||||
|
||||
class CustomUser(models.Model):
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
mytags = TaggableManager()
|
||||
|
||||
|
||||
class Post(models.Model):
|
||||
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
|
||||
@@ -12,7 +17,7 @@ class Post(models.Model):
|
||||
published_date = models.DateTimeField(
|
||||
blank=True, null=True)
|
||||
tags = TaggableManager()
|
||||
|
||||
|
||||
def publish(self):
|
||||
self.published_date = timezone.now()
|
||||
self.save()
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
{% extends "base.html" %} {% block content %}
|
||||
|
||||
hi
|
||||
{% endblock %}
|
||||
@@ -1,75 +1,15 @@
|
||||
{% extends "base.html" %} {% block content %}
|
||||
|
||||
<form id="searchform" action="{% url 'blog_search_list_view' %}" method="get" accept-charset="utf-8">
|
||||
<button class="searchbutton" type="submit">
|
||||
<i class="fa fa-search"></i>
|
||||
</button>
|
||||
<input class="searchfield" id="searchbox" name="q" type="text" placeholder="Search">
|
||||
</form>
|
||||
<div>{{Post.objects.filter(tags__name__in= ["hi"])}}
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Ref. No.</th>
|
||||
<th>Date</th>
|
||||
<th>Amount</th>
|
||||
<th>Status</th>
|
||||
<th>Delivery On </th>
|
||||
<th># #</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td># 2501</td>
|
||||
<td>01/22/2015 </td>
|
||||
<td>
|
||||
<label class="label label-info">300 USD </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="label label-success">Delivered</label>
|
||||
</td>
|
||||
<td>01/25/2015</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-xs btn-danger">View</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td># 15091</td>
|
||||
<td>12/12/2014 </td>
|
||||
<td>
|
||||
<label class="label label-danger">7000 USD </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="label label-warning">Shipped</label>
|
||||
</td>
|
||||
<td>N/A</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-xs btn-success">View</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td># 11291</td>
|
||||
<td>12/03/2014 </td>
|
||||
<td>
|
||||
<label class="label label-warning">7000 USD </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="label label-success">Delivered</label>
|
||||
</td>
|
||||
<td>01/23/2015</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-xs btn-primary">View</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td># 1808</td>
|
||||
<td>11/10/2014 </td>
|
||||
<td>
|
||||
<label class="label label-success">2000 USD </label>
|
||||
</td>
|
||||
<td>
|
||||
<label class="label label-info">Returned</label>
|
||||
</td>
|
||||
<td>N/A</td>
|
||||
<td>
|
||||
<a href="#" class="btn btn-xs btn-danger">View</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
+3
-1
@@ -10,4 +10,6 @@ urlpatterns = [
|
||||
url(r'^drafts/$', views.post_draft_list, name='post_draft_list'),
|
||||
url(r'^post/(?P<pk>\d+)/publish/$', views.post_publish, name='post_publish'),
|
||||
url(r'^post/(?P<pk>\d+)/remove/$', views.post_remove, name='post_remove'),
|
||||
]
|
||||
]
|
||||
|
||||
""" url(r'^search/', views.blog_search_list_view, name='blog_search_list_view'), """
|
||||
|
||||
@@ -6,8 +6,11 @@ from django.shortcuts import redirect
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.db.models import Q
|
||||
|
||||
import logging
|
||||
import mysite.settings
|
||||
import operator
|
||||
|
||||
|
||||
# Create your views here.
|
||||
@@ -36,17 +39,20 @@ def navlogin(request):
|
||||
context = {'error': error}
|
||||
return render(request, 'index.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
def post_list(request):
|
||||
posts = Post.objects.filter(
|
||||
published_date__lte=timezone.now()).order_by('published_date')
|
||||
return render(request, 'post_list.html', {'posts': posts})
|
||||
|
||||
|
||||
@login_required
|
||||
def post_detail(request, pk):
|
||||
post = get_object_or_404(Post, pk=pk)
|
||||
return render(request, 'post_detail.html', {'post': post})
|
||||
|
||||
|
||||
@login_required
|
||||
@staff_member_required
|
||||
def post_new(request):
|
||||
@@ -61,6 +67,7 @@ def post_new(request):
|
||||
form = PostForm()
|
||||
return render(request, 'post_edit.html', {'form': form})
|
||||
|
||||
|
||||
@login_required
|
||||
@staff_member_required
|
||||
def post_edit(request, pk):
|
||||
@@ -76,6 +83,7 @@ def post_edit(request, pk):
|
||||
form = PostForm(instance=post)
|
||||
return render(request, 'post_edit.html', {'form': form})
|
||||
|
||||
|
||||
@login_required
|
||||
@staff_member_required
|
||||
def post_draft_list(request):
|
||||
@@ -83,6 +91,7 @@ def post_draft_list(request):
|
||||
published_date__isnull=True).order_by('created_date')
|
||||
return render(request, 'post_draft_list.html', {'posts': posts})
|
||||
|
||||
|
||||
@login_required
|
||||
@staff_member_required
|
||||
def post_publish(request, pk):
|
||||
@@ -90,6 +99,7 @@ def post_publish(request, pk):
|
||||
post.publish()
|
||||
return redirect('post_detail', pk=pk)
|
||||
|
||||
|
||||
@login_required
|
||||
@staff_member_required
|
||||
def post_remove(request, pk):
|
||||
@@ -97,6 +107,21 @@ def post_remove(request, pk):
|
||||
post.delete()
|
||||
return redirect('post_list')
|
||||
|
||||
|
||||
@login_required
|
||||
def student_page(request):
|
||||
return render(request, 'student_page.html', {})
|
||||
|
||||
""" Search for querys
|
||||
def blog_search_list_view(post_list, self):
|
||||
result = super(post_list, self).get_queryset()
|
||||
query = self.request.GET.get('q')
|
||||
if query:
|
||||
query_list = query.split()
|
||||
result = result.filter(
|
||||
reduce(operator.and_,
|
||||
(Q(title__icontains=q) for q in query_list)) |
|
||||
reduce(operator.and_,
|
||||
(Q(content__icontains=q) for q in query_list))
|
||||
)
|
||||
return result """
|
||||
Reference in New Issue
Block a user