diff --git a/ttadmin/help/admin.py b/ttadmin/help/admin.py index 17fd30d..1c8d448 100644 --- a/ttadmin/help/admin.py +++ b/ttadmin/help/admin.py @@ -2,22 +2,43 @@ from django.contrib import admin from django.forms import ModelForm from .models import Ticket, Note -class NoteInline(admin.StackedInline): + +class ImmutableNoteInline(admin.TabularInline): model = Note - fields = ('created_at', 'body', 'author') - readonly_fields = ('created_at', 'body', 'author') - ordering = ('created_at',) extra = 1 + max_num = 0 + fields = ('author', 'created', 'body') + readonly_fields = ('author', 'created', 'body') + can_delete = False + ordering = ('created',) + + +class NewNoteInline(admin.StackedInline): + model = Note + extra = 0 + fields = ('body',) + + def get_queryset(self, request): + queryset = super().get_queryset(request) + return queryset.none() + @admin.register(Ticket) class TicketAdmin(admin.ModelAdmin): + inlines = [ImmutableNoteInline, NewNoteInline] readonly_fields = ('submitted',) list_display = ('submitted', 'issue_status', 'issue_type', 'name', 'email') list_filter = ('issue_status', 'issue_type') fields = ('submitted', 'name', 'email', 'issue_status', 'issue_type', 'issue_text') - def save_related(request, form, formsets, change): + def save_related(self, request, form, formsets, change): + # THIS IS EXTREMELY BOOTLEG AND MAY BREAK IF MORE INLINES ARE ADDED TO THIS ADMIN. for formset in formsets: - import ipdb; ipdb.set_trace() - pass # TODO set author based on request - super() + if len(formset.forms) == 1: + # It's probably the add new note form (i hope). + note_form = formset.forms[0] + note_form.instance.author = request.user + note_form.instance.save() + note_form.save(commit=False) + note_form.save_m2m() + return super().save_related(request, form, formsets, change) diff --git a/ttadmin/help/migrations/0006_auto_20190716_0258.py b/ttadmin/help/migrations/0006_auto_20190716_0258.py new file mode 100644 index 0000000..3a9a19c --- /dev/null +++ b/ttadmin/help/migrations/0006_auto_20190716_0258.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.2 on 2019-07-16 02:58 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('help', '0005_note'), + ] + + operations = [ + migrations.AlterField( + model_name='note', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/ttadmin/help/models.py b/ttadmin/help/models.py index 3cfb609..a9ff5af 100644 --- a/ttadmin/help/models.py +++ b/ttadmin/help/models.py @@ -1,3 +1,4 @@ +from django.contrib.auth.models import User from django.db.models import Model, TextField, EmailField, CharField, DateTimeField, ForeignKey ISSUE_TYPE_CHOICES = ( @@ -39,5 +40,8 @@ class Ticket(Model): class Note(Model): created = DateTimeField(auto_now_add=True) body = TextField(blank=False, null=False) - author = ForeignKey('users.Townie') + author = ForeignKey(User) ticket = ForeignKey(Ticket) + + def __str__(self): + return "admin note"