47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
|
from django.contrib import admin
|
||
|
from django.contrib.auth.admin import User
|
||
|
from django.utils import timezone
|
||
|
|
||
|
from .models import Newsletter, Subscriber
|
||
|
|
||
|
|
||
|
class SubscriberInline(admin.StackedInline):
|
||
|
can_delete = False
|
||
|
fields = ['subscribed']
|
||
|
max_num = 1
|
||
|
model = Subscriber
|
||
|
verbose_name = 'Newsletter'
|
||
|
|
||
|
|
||
|
class ExtendUserAdmin(admin.ModelAdmin):
|
||
|
inlines = [SubscriberInline]
|
||
|
|
||
|
|
||
|
admin.site.unregister(User)
|
||
|
admin.site.register(User, ExtendUserAdmin)
|
||
|
|
||
|
|
||
|
@admin.register(Newsletter)
|
||
|
class NewsletterAdmin(admin.ModelAdmin):
|
||
|
list_display = ['subject', 'created', 'publish']
|
||
|
search_fields = ['subject', 'created', 'publish']
|
||
|
|
||
|
def get_form(self, request, obj=None, **kwargs):
|
||
|
if obj:
|
||
|
self.fields = ['creator', 'subject', 'body', 'publish']
|
||
|
if obj.publish < timezone.now():
|
||
|
self.readonly_fields = ['creator', 'subject', 'body', 'publish']
|
||
|
else:
|
||
|
self.readonly_fields = ['creator']
|
||
|
else:
|
||
|
self.fields = ['subject', 'body', 'publish']
|
||
|
self.readonly_fields = []
|
||
|
return super(NewsletterAdmin, self).get_form(request, obj, **kwargs)
|
||
|
|
||
|
def save_model(self, request, instance, form, change):
|
||
|
user = request.user
|
||
|
instance = form.save(commit=False)
|
||
|
instance.creator = user
|
||
|
instance.save()
|
||
|
return instance
|