yeni
This commit is contained in:
@ -1,5 +1,40 @@
|
||||
from django.contrib import admin
|
||||
from .models import SSHCredential, Project, SSHLog
|
||||
from .models import SSHCredential, Project, SSHLog, Customer, Invoice, InvoiceItem
|
||||
from .system_settings import SystemSettings
|
||||
|
||||
@admin.register(SystemSettings)
|
||||
class SystemSettingsAdmin(admin.ModelAdmin):
|
||||
list_display = ('__str__', 'backup_enabled', 'backup_frequency', 'updated_at')
|
||||
fieldsets = (
|
||||
('Yedekleme Ayarları', {
|
||||
'fields': ('backup_enabled', 'backup_frequency', 'backup_hour', 'backup_minute',
|
||||
'backup_day_of_week', 'backup_day_of_month', 'backup_retention_days',
|
||||
'backup_compression', 'backup_format', 'backup_directory')
|
||||
}),
|
||||
('S3 Depolama', {
|
||||
'fields': ('use_s3_storage', 's3_access_key', 's3_secret_key',
|
||||
's3_bucket_name', 's3_region')
|
||||
}),
|
||||
('Bildirim Ayarları', {
|
||||
'fields': ('email_notifications', 'notification_email')
|
||||
}),
|
||||
('SSH Ayarları', {
|
||||
'fields': ('ssh_key_path', 'ssh_key_passphrase')
|
||||
}),
|
||||
('Crontab Bilgisi', {
|
||||
'fields': ('backup_crontab_expression', 'updated_at'),
|
||||
'classes': ('collapse',)
|
||||
})
|
||||
)
|
||||
readonly_fields = ('backup_crontab_expression', 'updated_at')
|
||||
|
||||
def has_add_permission(self, request):
|
||||
# Sadece bir kayıt olabilir
|
||||
return SystemSettings.objects.count() == 0
|
||||
|
||||
def has_delete_permission(self, request, obj=None):
|
||||
# Silme işlemi engellenir
|
||||
return False
|
||||
|
||||
@admin.register(SSHCredential)
|
||||
class SSHCredentialAdmin(admin.ModelAdmin):
|
||||
@ -68,4 +103,54 @@ class SSHLogAdmin(admin.ModelAdmin):
|
||||
return False # Log kayıtları manuel olarak eklenemez
|
||||
|
||||
def has_change_permission(self, request, obj=None):
|
||||
return False # Log kayıtları değiştirilemez
|
||||
return False # Log kayıtları değiştirilemez
|
||||
|
||||
class InvoiceItemInline(admin.TabularInline):
|
||||
model = InvoiceItem
|
||||
extra = 1
|
||||
fields = ('project', 'description', 'amount')
|
||||
|
||||
def get_formset(self, request, obj=None, **kwargs):
|
||||
formset = super().get_formset(request, obj, **kwargs)
|
||||
form = formset.form
|
||||
form.base_fields['description'].widget.attrs['style'] = 'width: 300px'
|
||||
return formset
|
||||
|
||||
|
||||
@admin.register(Invoice)
|
||||
class InvoiceAdmin(admin.ModelAdmin):
|
||||
list_display = ('invoice_number', 'customer', 'issue_date', 'due_date', 'status', 'total_amount')
|
||||
list_filter = ('status', 'issue_date', 'payment_method')
|
||||
search_fields = ('invoice_number', 'customer__name', 'customer__company_name')
|
||||
readonly_fields = ('invoice_number', 'total_amount', 'created_at', 'updated_at')
|
||||
inlines = [InvoiceItemInline]
|
||||
date_hierarchy = 'issue_date'
|
||||
|
||||
fieldsets = (
|
||||
('Fatura Bilgileri', {
|
||||
'fields': ('invoice_number', 'customer', 'issue_date', 'due_date', 'status', 'payment_method')
|
||||
}),
|
||||
('Tutar Bilgileri', {
|
||||
'fields': ('total_amount',)
|
||||
}),
|
||||
('Ek Bilgiler', {
|
||||
'fields': ('notes', 'payment_notes'),
|
||||
'classes': ('collapse',)
|
||||
}),
|
||||
('Sistem Bilgileri', {
|
||||
'fields': ('created_at', 'updated_at'),
|
||||
'classes': ('collapse',)
|
||||
})
|
||||
)
|
||||
|
||||
def get_queryset(self, request):
|
||||
return super().get_queryset(request).select_related('customer')
|
||||
|
||||
@admin.register(InvoiceItem)
|
||||
class InvoiceItemAdmin(admin.ModelAdmin):
|
||||
list_display = ('invoice', 'description', 'project', 'amount')
|
||||
list_filter = ('invoice__status',)
|
||||
search_fields = ('description', 'invoice__invoice_number', 'project__name')
|
||||
|
||||
def get_queryset(self, request):
|
||||
return super().get_queryset(request).select_related('invoice', 'project')
|
||||
Reference in New Issue
Block a user