def test_register_site(self): "Check register with site" self.assertFalse(self.model in self.site._registry) tag_admin.register(self.model, self.admin, site=self.site) self.assertTrue(self.model in self.site._registry) ma = self.site._registry[self.model] self.assertIsInstance(ma, tag_admin.TaggedModelAdmin)
def test_register_tag_model(self): "Check register tag model creates correct admin class" self.assertFalse(self.model_singletag in self.site._registry) tag_admin.register(self.model_singletag, site=self.site) self.assertTrue(self.model_singletag in self.site._registry) ma = self.site._registry[self.model_singletag] self.assertIsInstance(ma, tag_admin.TagModelAdmin)
def test_register_auto(self): "Check register without admin dynamically creates admin class" self.assertFalse(self.model in self.site._registry) tag_admin.register(self.model, site=self.site) self.assertTrue(self.model in self.site._registry) ma = self.site._registry[self.model] self.assertIsInstance(ma, tag_admin.TaggedModelAdmin)
def test_register_tag_tree_model(self): "Check register tag tree model creates correct admin class" tag_model = test_models.TreeTest.tags.tag_model self.assertFalse(tag_model in self.site._registry) tag_admin.register(tag_model, site=self.site) self.assertTrue(tag_model in self.site._registry) ma = self.site._registry[tag_model] self.assertIsInstance(ma, tag_admin.TagModelAdmin)
def setUpExtra(self): self.admin = test_admin.SimpleMixedTestAdmin self.model = test_models.SimpleMixedTest self.model_singletag = self.model.singletag.tag_model self.model_tags = self.model.tags.tag_model self.site = admin.AdminSite(name="tagulous_admin") tag_admin.register(self.model, self.admin, site=self.site) self.ma = self.site._registry[self.model] self.cl = None
def test_register_models(self): "Check register refuses multiple models" with self.assertRaises(exceptions.ImproperlyConfigured) as cm: tag_admin.register([self.model, self.model], self.admin, site=self.site) self.assertEqual( str(cm.exception), "Tagulous can only register a single model with admin.", ) self.assertFalse(self.model in self.site._registry)
def setUpExtra(self): self.site = admin.AdminSite(name="tagulous_admin") tag_admin.register(self.model, admin_class=self.admin_cls, site=self.site) self.ma = self.site._registry[self.model] self.cl = None # Set up client User.objects.create_superuser("test", "*****@*****.**", "user") result = self.client.login(username="******", password="******") self.assertEqual(result, True)
def test_register_options(self): "Check register with options dynamically creates admin class" self.assertFalse(self.model in self.site._registry) tag_admin.register(self.model, self.admin, site=self.site, list_display=["name"]) self.assertTrue(self.model in self.site._registry) ma = self.site._registry[self.model] self.assertIsInstance(ma, tag_admin.TaggedModelAdmin) self.assertSequenceEqual(ma.get_list_display(self.mock_request()), ["name"])
def test_register_no_site(self): "Check register without site" # Replace admin.site with our own old_admin_site = admin.site admin.site = self.site self.assertFalse(self.model in self.site._registry) tag_admin.register(self.model, self.admin) self.assertTrue(self.model in self.site._registry) ma = self.site._registry[self.model] self.assertIsInstance(ma, tag_admin.TaggedModelAdmin) # Return admin.site admin.site = old_admin_site
def test_register_tag_model_class_properties(self): """ Check list_display, list_filter, exclude and actions can be set in a tag modeladmin which doesn't explicitly subclass TagModelAdmin """ # register class SimpleMixedTestTagsAdmin(admin.ModelAdmin): # against self.model self.assertFalse(self.model.singletag.tag_model in self.site._registry) tag_admin.register( self.model.singletag.tag_model, test_admin.SimpleMixedTestTagsAdmin, site=self.site, ) self.assertTrue(self.model.singletag.tag_model in self.site._registry) ma = self.site._registry[self.model.singletag.tag_model] self.assertIsInstance(ma, tag_admin.TagModelAdmin) self.assertEqual(ma.list_display, ["name"]) self.assertEqual(ma.list_filter, ["count"]) self.assertEqual(ma.exclude, ["name"]) self.assertEqual(ma.actions, [])
from django.contrib import admin from tagulous.admin import register from . import models class DocumentAdmin(admin.ModelAdmin): list_display = ('title', 'tags', 'visible') list_filter = ('visible', ) register(models.Document, DocumentAdmin)
fields = ['caption','image', 'video_url', 'image_tag',] readonly_fields = ['image_tag'] class ArtAdmin(admin.ModelAdmin): list_display = ['id', 'title', 'year', 'tags', 'sd_type', 'is_visible', 'image_tag'] # inlines = [ # ProtfolioInline, # ] #exclude = ('media',) list_editable = ['title', 'sd_type','year', 'is_visible',] fields = ['sd_type', 'title', 'project', 'year', 'tags', 'description', 'media', 'image_tag'] readonly_fields = ['image_tag'] save_as = True tagulous_admin.register(models.Art, ArtAdmin) class EventAdmin(admin.ModelAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.attname == "description": kwargs['widget'] = CodeMirrorEditor(options={'mode': 'htmlmixed', 'lineNumbers': True}, modes=['css', 'xml', 'javascript', 'htmlmixed']) return super(EventAdmin, self).formfield_for_dbfield(db_field, **kwargs) list_display = ['start_date', 'slug', 'title', 'tags', 'is_visible','image_tag'] # inlines = [ # ProtfolioInline, # ] #exclude = ('media',] list_editable = ['is_visible',]
def setUpExtra(self): self.setUpModels() self.site = admin.AdminSite(name="tagulous_admin") tag_admin.register(self.model, site=self.site) self.ma = self.site._registry[self.model] self.cl = None
model = PublicationScore extra = 0 class PublicationPostInLine(admin.TabularInline): model = Comment extra = 0 class PublicationAdmin(admin.ModelAdmin): inlines = [ PublicationImageInLine, ProsAndConsInLine, PublicationScoreInLine, PublicationPostInLine ] # def get_inline_formsets(self, request, formsets, inline_instances, obj=None): # print(formsets[0].data) # def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "author": kwargs["queryset"] = User.objects.filter(is_staff=True) return super().formfield_for_foreignkey(db_field, request, **kwargs) tagulous.admin.register(Publication, PublicationAdmin) admin.register(Publication, PublicationAdmin)
import tagulous.admin from django.contrib import admin from .models.release import Release, ReleaseImage class ReleaseImageInLine(admin.TabularInline): model = ReleaseImage extra = 0 class ReleaseAdmin(admin.ModelAdmin): inlines = [ ReleaseImageInLine, ] def _projects(self, obj): return obj.projects.all().count() admin.register(Release, ReleaseAdmin) tagulous.admin.register(Release, ReleaseAdmin)
try: url = f'{obj.image.url}' except: url = f"{obj.image}" return mark_safe( f'<img src="{self.base_url}{url}" style="width: 50px;"/>') admin_image.allow_tags = True class SongAdmin(admin.ModelAdmin): list_display = [ 'title', 'title_eng', 'translator', 'categ', 'user', 'modified' ] search_fields = ['title', 'title_eng', 'text', 'text_eng'] def categ(self, obj): categs = [] for c in obj.category.all(): categs.append(f"{c.title} ({c.slug})") return ' || '.join(categs) def get_queryset(self, request): qs = super(SongAdmin, self).get_queryset(request) qs = qs.prefetch_related('category', ).select_related('user', ) return qs tagadmin.register(Song, SongAdmin) tagadmin.register(Song.translator)