extended default user model to save subscribed tags

This commit is contained in:
Esther Kleinhenz
2018-08-15 19:18:35 +02:00
parent 4b28a5a91b
commit 1a2130bb49
46 changed files with 80 additions and 6414 deletions
+19 -2
View File
@@ -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.
+2 -2
View File
@@ -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):
+12 -1
View File
@@ -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')),
],
),
]
-20
View File
@@ -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'),
),
]
+6 -1
View File
@@ -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 %}
+9 -69
View File
@@ -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
View File
@@ -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'), """
+25
View File
@@ -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 """