gault-millau/apps/establishment/admin.py

149 lines
4.0 KiB
Python

"""Establishment admin conf."""
from django.contrib import admin
from django.contrib.contenttypes.admin import GenericTabularInline
from django.utils.translation import gettext_lazy as _
from comment.models import Comment
from establishment import models
from main.models import Award
from product.models import Product, PurchasedProduct
from review import models as review_models
from utils.admin import BaseModelAdminMixin
@admin.register(models.EstablishmentType)
class EstablishmentTypeAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""EstablishmentType admin."""
raw_id_fields = ('tag_categories', 'default_image', )
@admin.register(models.EstablishmentSubType)
class EstablishmentSubTypeAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""EstablishmentSubType admin."""
raw_id_fields = ('tag_categories', 'default_image', )
class AwardInline(GenericTabularInline):
model = Award
extra = 0
class ContactPhoneInline(admin.TabularInline):
"""Contact phone inline admin."""
model = models.ContactPhone
extra = 0
class GalleryImageInline(admin.TabularInline):
"""Gallery image inline admin."""
model = models.EstablishmentGallery
raw_id_fields = ['image', ]
extra = 0
class ContactEmailInline(admin.TabularInline):
"""Contact email inline admin."""
model = models.ContactEmail
extra = 0
class ReviewInline(BaseModelAdminMixin, GenericTabularInline):
model = review_models.Review
extra = 0
class CommentInline(GenericTabularInline):
model = Comment
extra = 0
class ProductInline(admin.TabularInline):
model = Product
extra = 0
class CompanyInline(admin.TabularInline):
model = models.Company
raw_id_fields = ['establishment', 'address']
extra = 0
class EstablishmentNote(admin.TabularInline):
model = models.EstablishmentNote
extra = 0
raw_id_fields = ['user', ]
class PurchasedProductInline(admin.TabularInline):
model = PurchasedProduct
extra = 0
raw_id_fields = ['product', ]
@admin.register(models.Establishment)
class EstablishmentAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Establishment admin."""
list_display = ['id', '__str__', 'image_tag', ]
search_fields = ['id', 'name', 'index_name', 'slug']
list_filter = ['public_mark', 'toque_number']
inlines = [CompanyInline, EstablishmentNote, GalleryImageInline,
PurchasedProductInline, ContactPhoneInline, ]
# inlines = [
# AwardInline, ContactPhoneInline, ContactEmailInline,
# ReviewInline, CommentInline, ProductInline]
raw_id_fields = ('address', 'collections', 'tags', 'schedule', )
@admin.register(models.Position)
class PositionAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Position admin."""
class PlateInline(admin.TabularInline):
"""Plate inline admin"""
model = models.Plate
extra = 0
@admin.register(models.Menu)
class MenuAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Menu admin."""
list_display = ['id', 'category_translated']
raw_id_fields = ['establishment']
inlines = [
PlateInline,
]
def category_translated(self, obj):
"""Get user's short name."""
return obj.category_translated
category_translated.short_description = _('category')
@admin.register(models.RatingStrategy)
class RatingStrategyAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Admin conf for Rating Strategy model."""
@admin.register(models.SocialChoice)
class SocialChoiceAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Admin conf for SocialChoice model."""
@admin.register(models.SocialNetwork)
class SocialNetworkAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Admin conf for SocialNetwork model."""
raw_id_fields = ('establishment',)
@admin.register(models.Company)
class CompanyAdmin(BaseModelAdminMixin, admin.ModelAdmin):
"""Admin conf for Company model."""
raw_id_fields = ['establishment', 'address', ]
@admin.register(models.Employee)
class EmployeeAdmin(BaseModelAdminMixin, admin.ModelAdmin):
raw_id_fields = ['establishments', 'tags', 'user', 'photo', ]