From a7ccb61e07b7c9fc792027c23599c67a0e9ed362 Mon Sep 17 00:00:00 2001 From: RecursiveGreen Date: Sun, 14 Jan 2018 15:21:04 -0500 Subject: [PATCH] More DRY code cleanup. --- savepointradio/core/utils.py | 13 ++++++++ savepointradio/radio/actions.py | 10 ++++++ savepointradio/radio/admin.py | 54 +++++++++++---------------------- 3 files changed, 40 insertions(+), 37 deletions(-) create mode 100644 savepointradio/radio/actions.py diff --git a/savepointradio/core/utils.py b/savepointradio/core/utils.py index 80ca8c4..6cc219a 100644 --- a/savepointradio/core/utils.py +++ b/savepointradio/core/utils.py @@ -76,3 +76,16 @@ def naturalize(text): text = re.sub(r'\d+', naturalize_int_match, text) return text + + +def build_message_start(quantity, model): + """ + The beggining of a message based on the quantity and singular/plural name + of the model involved. + """ + if quantity == 1: + message = '1 {} was'.format(model._meta.verbose_name) + else: + message = '{} {} were'.format(str(quantity), + model._meta.verbose_name_plural) + return message diff --git a/savepointradio/radio/actions.py b/savepointradio/radio/actions.py new file mode 100644 index 0000000..4bf0f51 --- /dev/null +++ b/savepointradio/radio/actions.py @@ -0,0 +1,10 @@ +from django.contrib import messages +from django.utils import timezone + +from core.utils import build_message_start + + +def publish_items(request, queryset): + rows_updated = queryset.update(published_date=timezone.now()) + message = build_message_start(rows_updated, queryset.model) + messages.success(request, '{} successfully published.'.format(message)) diff --git a/savepointradio/radio/admin.py b/savepointradio/radio/admin.py index 3f38520..cad7373 100644 --- a/savepointradio/radio/admin.py +++ b/savepointradio/radio/admin.py @@ -3,8 +3,8 @@ from django.db import models from django.forms import TextInput from django.http import HttpResponseRedirect from django.shortcuts import render -from django.utils import timezone +from .actions import publish_items from .forms import ArtistFormSet from .models import Album, Artist, Game, Song @@ -21,7 +21,7 @@ class AlbumAdmin(admin.ModelAdmin): # Detail List display list_display = ('title', '_is_enabled', '_is_published') search_fields = ['title'] - actions = ['publish_items'] + actions = ['publish_albums'] # Edit Form display readonly_fields = ('created_date', 'modified_date') @@ -39,14 +39,9 @@ class AlbumAdmin(admin.ModelAdmin): }) ) - def publish_items(self, request, queryset): - rows_updated = queryset.update(published_date=timezone.now()) - if rows_updated == 1: - msg = '1 album was' - else: - msg = '{} albums were'.format(str(rows_updated)) - self.message_user(request, '{} successfully published.'.format(msg)) - publish_items.short_description = "Publish selected items" + def publish_albums(self, request, queryset): + publish_items(request, queryset) + publish_albums.short_description = "Publish selected albums" @admin.register(Artist) @@ -58,7 +53,7 @@ class ArtistAdmin(admin.ModelAdmin): '_is_enabled', '_is_published') search_fields = ['first_name', 'alias', 'last_name'] - actions = ['publish_items'] + actions = ['publish_artists'] # Edit Form display readonly_fields = ('created_date', 'modified_date') @@ -76,14 +71,9 @@ class ArtistAdmin(admin.ModelAdmin): }) ) - def publish_items(self, request, queryset): - rows_updated = queryset.update(published_date=timezone.now()) - if rows_updated == 1: - msg = '1 artist was' - else: - msg = '{} artists were'.format(str(rows_updated)) - self.message_user(request, '{} successfully published.'.format(msg)) - publish_items.short_description = "Publish selected items" + def publish_artists(self, request, queryset): + publish_items(request, queryset) + publish_artists.short_description = "Publish selected artists" @admin.register(Game) @@ -91,7 +81,7 @@ class GameAdmin(admin.ModelAdmin): # Detail List display list_display = ('title', '_is_enabled', '_is_published') search_fields = ['title'] - actions = ['publish_items'] + actions = ['publish_games'] # Edit Form display readonly_fields = ('created_date', 'modified_date') @@ -109,14 +99,9 @@ class GameAdmin(admin.ModelAdmin): }) ) - def publish_items(self, request, queryset): - rows_updated = queryset.update(published_date=timezone.now()) - if rows_updated == 1: - msg = '1 game was' - else: - msg = '{} games were'.format(str(rows_updated)) - self.message_user(request, '{} successfully published.'.format(msg)) - publish_items.short_description = "Publish selected items" + def publish_games(self, request, queryset): + publish_items(request, queryset) + publish_games.short_description = "Publish selected games" @admin.register(Song) @@ -133,7 +118,7 @@ class SongAdmin(admin.ModelAdmin): '_is_enabled', '_is_published') search_fields = ['title'] - actions = ['publish_items', 'add_artists', 'remove_artists'] + actions = ['publish_songs', 'add_artists', 'remove_artists'] # Edit Form display exclude = ('artists',) @@ -230,11 +215,6 @@ class SongAdmin(admin.ModelAdmin): return self.change_artists(request, queryset, remove=True) remove_artists.short_description = "Remove artists from selected items" - def publish_items(self, request, queryset): - rows_updated = queryset.update(published_date=timezone.now()) - if rows_updated == 1: - msg = '1 song was' - else: - msg = '{} songs were'.format(str(rows_updated)) - self.message_user(request, '{} successfully published.'.format(msg)) - publish_items.short_description = "Publish selected items" + def publish_songs(self, request, queryset): + publish_items(request, queryset) + publish_songs.short_description = "Publish selected songs"