diff --git a/.idea/recipes.iml b/.idea/recipes.iml
index 23bc88ff7..a8c515d0c 100644
--- a/.idea/recipes.iml
+++ b/.idea/recipes.iml
@@ -16,7 +16,7 @@
-
+
diff --git a/cookbook/admin.py b/cookbook/admin.py
index f4f70e8fc..b1b09233c 100644
--- a/cookbook/admin.py
+++ b/cookbook/admin.py
@@ -2,10 +2,110 @@ from django.contrib import admin
from .models import *
-admin.site.register(Recipe)
+def get_user_name(user):
+ if (name := f"{user.first_name} {user.last_name}") == "":
+ return name
+ else:
+ return user.username
+
+
+class UserPreferenceAdmin(admin.ModelAdmin):
+ list_display = ('name', 'theme', 'nav_color')
+
+ @staticmethod
+ def name(obj):
+ return get_user_name(obj.user)
+
+
+admin.site.register(UserPreference, UserPreferenceAdmin)
+
+
+class StorageAdmin(admin.ModelAdmin):
+ list_display = ('name', 'method')
+
+
+admin.site.register(Storage, StorageAdmin)
+
+
+class SyncAdmin(admin.ModelAdmin):
+ list_display = ('storage', 'path', 'active', 'last_checked')
+
+
+admin.site.register(Sync, SyncAdmin)
+
+
+class SyncLogAdmin(admin.ModelAdmin):
+ list_display = ('sync', 'status', 'msg', 'created_at')
+
+
+admin.site.register(SyncLog, SyncLogAdmin)
+
admin.site.register(Keyword)
-admin.site.register(Sync)
-admin.site.register(SyncLog)
-admin.site.register(RecipeImport)
-admin.site.register(Storage)
+
+class RecipeAdmin(admin.ModelAdmin):
+ list_display = ('name', 'internal', 'created_by', 'storage')
+
+ @staticmethod
+ def created_by(obj):
+ return get_user_name(obj.created_by)
+
+
+admin.site.register(Recipe, RecipeAdmin)
+
+admin.site.register(Unit)
+admin.site.register(Ingredient)
+
+
+class RecipeIngredientAdmin(admin.ModelAdmin):
+ list_display = ('recipe', 'ingredient', 'amount', 'unit')
+
+
+admin.site.register(RecipeIngredient, RecipeIngredientAdmin)
+
+
+class CommentAdmin(admin.ModelAdmin):
+ list_display = ('recipe', 'name', 'created_at')
+
+ @staticmethod
+ def name(obj):
+ return get_user_name(obj.created_by)
+
+
+admin.site.register(Comment)
+
+
+class RecipeImportAdmin(admin.ModelAdmin):
+ list_display = ('name', 'storage', 'file_path')
+
+
+admin.site.register(RecipeImport, RecipeImportAdmin)
+
+
+class RecipeBookAdmin(admin.ModelAdmin):
+ list_display = ('name', 'user')
+
+ @staticmethod
+ def user(obj):
+ return get_user_name(obj.user)
+
+
+admin.site.register(RecipeBook, RecipeBookAdmin)
+
+
+class RecipeBookEntryAdmin(admin.ModelAdmin):
+ list_display = ('book', 'recipe')
+
+
+admin.site.register(RecipeBookEntry, RecipeBookEntryAdmin)
+
+
+class MealPlanAdmin(admin.ModelAdmin):
+ list_display = ('user', 'recipe', 'meal', 'date')
+
+ @staticmethod
+ def user(obj):
+ return get_user_name(obj.user)
+
+
+admin.site.register(MealPlan, MealPlanAdmin)
diff --git a/cookbook/models.py b/cookbook/models.py
index ea2332d94..a3111263a 100644
--- a/cookbook/models.py
+++ b/cookbook/models.py
@@ -28,6 +28,9 @@ class UserPreference(models.Model):
theme = models.CharField(choices=THEMES, max_length=128, default=FLATLY)
nav_color = models.CharField(choices=COLORS, max_length=128, default=PRIMARY)
+ def __str__(self):
+ return self.user
+
class Storage(models.Model):
DROPBOX = 'DB'
@@ -64,6 +67,9 @@ class SyncLog(models.Model):
msg = models.TextField(default="")
created_at = models.DateTimeField(auto_now_add=True)
+ def __str__(self):
+ return f"{self.created_at}:{self.sync} - {self.status}"
+
class Keyword(models.Model):
name = models.CharField(max_length=64, unique=True)