yeni
This commit is contained in:
57
ssh_manager/migrations/0013_invoice_invoiceitem.py
Normal file
57
ssh_manager/migrations/0013_invoice_invoiceitem.py
Normal file
@ -0,0 +1,57 @@
|
||||
# Generated by Django 5.2.4 on 2025-07-24 19:21
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ssh_manager', '0012_sshcredential_connection_status_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Invoice',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('invoice_number', models.CharField(max_length=50, unique=True, verbose_name='Fatura No')),
|
||||
('issue_date', models.DateField(verbose_name='Düzenleme Tarihi')),
|
||||
('due_date', models.DateField(verbose_name='Son Ödeme Tarihi')),
|
||||
('status', models.CharField(choices=[('draft', 'Taslak'), ('sent', 'Gönderildi'), ('paid', 'Ödendi'), ('overdue', 'Gecikti'), ('cancelled', 'İptal Edildi')], default='draft', max_length=20, verbose_name='Durum')),
|
||||
('payment_method', models.CharField(choices=[('bank_transfer', 'Banka Havalesi'), ('credit_card', 'Kredi Kartı'), ('cash', 'Nakit'), ('other', 'Diğer')], default='bank_transfer', max_length=20, verbose_name='Ödeme Yöntemi')),
|
||||
('subtotal', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Ara Toplam')),
|
||||
('tax_amount', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='KDV Tutarı')),
|
||||
('total_amount', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Toplam Tutar')),
|
||||
('discount', models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='İndirim')),
|
||||
('notes', models.TextField(blank=True, null=True, verbose_name='Notlar')),
|
||||
('payment_notes', models.TextField(blank=True, null=True, verbose_name='Ödeme Notları')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Oluşturma Tarihi')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Güncelleme Tarihi')),
|
||||
('customer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='invoices', to='ssh_manager.customer', verbose_name='Müşteri')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Fatura',
|
||||
'verbose_name_plural': 'Faturalar',
|
||||
'ordering': ['-issue_date', '-id'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='InvoiceItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('description', models.CharField(max_length=255, verbose_name='Açıklama')),
|
||||
('quantity', models.DecimalField(decimal_places=2, default=1, max_digits=10, verbose_name='Miktar')),
|
||||
('unit_price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Birim Fiyat')),
|
||||
('tax_rate', models.DecimalField(decimal_places=2, default=18, max_digits=5, verbose_name='KDV Oranı (%)')),
|
||||
('amount', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Tutar')),
|
||||
('invoice', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='ssh_manager.invoice', verbose_name='Fatura')),
|
||||
('project', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='ssh_manager.project', verbose_name='İlişkili Proje')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Fatura Kalemi',
|
||||
'verbose_name_plural': 'Fatura Kalemleri',
|
||||
'ordering': ['id'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,37 @@
|
||||
# Generated by Django 5.2.4 on 2025-07-24 20:51
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ssh_manager', '0013_invoice_invoiceitem'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='invoice',
|
||||
name='discount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='invoice',
|
||||
name='subtotal',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='invoice',
|
||||
name='tax_amount',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='invoiceitem',
|
||||
name='quantity',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='invoiceitem',
|
||||
name='tax_rate',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='invoiceitem',
|
||||
name='unit_price',
|
||||
),
|
||||
]
|
||||
34
ssh_manager/migrations/0015_backup.py
Normal file
34
ssh_manager/migrations/0015_backup.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Generated by Django 5.2.4 on 2025-07-26 03:38
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ssh_manager', '0014_remove_invoice_discount_remove_invoice_subtotal_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Backup',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('backup_type', models.CharField(choices=[('manual', 'Manuel'), ('auto', 'Otomatik'), ('scheduled', 'Zamanlanmış')], default='manual', max_length=20, verbose_name='Yedekleme Tipi')),
|
||||
('status', models.CharField(choices=[('running', 'Devam Ediyor'), ('completed', 'Tamamlandı'), ('failed', 'Başarısız'), ('cancelled', 'İptal Edildi')], default='running', max_length=20, verbose_name='Durum')),
|
||||
('start_time', models.DateTimeField(auto_now_add=True, verbose_name='Başlangıç Zamanı')),
|
||||
('end_time', models.DateTimeField(blank=True, null=True, verbose_name='Bitiş Zamanı')),
|
||||
('file_path', models.CharField(blank=True, max_length=500, null=True, verbose_name='Dosya Yolu')),
|
||||
('file_size', models.CharField(blank=True, max_length=50, null=True, verbose_name='Dosya Boyutu')),
|
||||
('error_message', models.TextField(blank=True, null=True, verbose_name='Hata Mesajı')),
|
||||
('notes', models.TextField(blank=True, null=True, verbose_name='Notlar')),
|
||||
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ssh_manager.project', verbose_name='Proje')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Yedekleme',
|
||||
'verbose_name_plural': 'Yedeklemeler',
|
||||
'ordering': ['-start_time'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,49 @@
|
||||
# Generated by Django 5.2.4 on 2025-07-26 08:11
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ssh_manager', '0015_backup'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SystemSettings',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('backup_enabled', models.BooleanField(default=False, verbose_name='Otomatik Yedekleme Aktif')),
|
||||
('backup_frequency', models.CharField(choices=[('daily', 'Günlük'), ('weekly', 'Haftalık'), ('monthly', 'Aylık')], default='weekly', max_length=10, verbose_name='Yedekleme Sıklığı')),
|
||||
('backup_hour', models.IntegerField(default=3, verbose_name='Yedekleme Saati (0-23)')),
|
||||
('backup_minute', models.IntegerField(default=0, verbose_name='Yedekleme Dakikası (0-59)')),
|
||||
('backup_day_of_week', models.IntegerField(blank=True, default=0, null=True, verbose_name='Haftanın Günü (0=Pazartesi, 6=Pazar)')),
|
||||
('backup_day_of_month', models.IntegerField(blank=True, default=1, null=True, verbose_name='Ayın Günü (1-31)')),
|
||||
('backup_retention_days', models.IntegerField(default=30, verbose_name='Yedekleri Saklama Süresi (Gün)')),
|
||||
('backup_crontab_expression', models.CharField(blank=True, max_length=100, null=True, verbose_name='Crontab İfadesi')),
|
||||
('backup_compression', models.BooleanField(default=True, verbose_name='Sıkıştırma Kullan')),
|
||||
('backup_format', models.CharField(default='tar.gz', max_length=10, verbose_name='Yedekleme Format')),
|
||||
('ssh_key_path', models.CharField(blank=True, max_length=255, null=True, verbose_name='SSH Anahtar Yolu')),
|
||||
('ssh_key_passphrase', models.CharField(blank=True, max_length=255, null=True, verbose_name='SSH Anahtar Parolası')),
|
||||
('email_notifications', models.BooleanField(default=False, verbose_name='E-posta Bildirimleri')),
|
||||
('notification_email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='Bildirim E-postası')),
|
||||
('backup_directory', models.CharField(default='/backups', max_length=255, verbose_name='Yedekleme Dizini')),
|
||||
('use_s3_storage', models.BooleanField(default=False, verbose_name='S3 Depolama Kullan')),
|
||||
('s3_access_key', models.CharField(blank=True, max_length=255, null=True, verbose_name='S3 Erişim Anahtarı')),
|
||||
('s3_secret_key', models.CharField(blank=True, max_length=255, null=True, verbose_name='S3 Gizli Anahtar')),
|
||||
('s3_bucket_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='S3 Bucket Adı')),
|
||||
('s3_region', models.CharField(blank=True, max_length=50, null=True, verbose_name='S3 Bölge')),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Sistem Ayarları',
|
||||
'verbose_name_plural': 'Sistem Ayarları',
|
||||
},
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='backup',
|
||||
name='file_size',
|
||||
field=models.BigIntegerField(blank=True, null=True, verbose_name='Dosya Boyutu'),
|
||||
),
|
||||
]
|
||||
@ -0,0 +1,55 @@
|
||||
# Generated by Django 5.2.4 on 2025-07-26 09:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('ssh_manager', '0016_systemsettings_alter_backup_file_size'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='systemsettings',
|
||||
name='backup_directory',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='systemsettings',
|
||||
name='ssh_key_passphrase',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='systemsettings',
|
||||
name='ssh_key_path',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='systemsettings',
|
||||
name='s3_endpoint',
|
||||
field=models.CharField(default='ams1.vultrobjects.com', max_length=255, verbose_name='Vultr S3 Endpoint'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='systemsettings',
|
||||
name='s3_access_key',
|
||||
field=models.CharField(default='', max_length=255, verbose_name='Vultr S3 Erişim Anahtarı'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='systemsettings',
|
||||
name='s3_bucket_name',
|
||||
field=models.CharField(default='backups', max_length=255, verbose_name='Vultr S3 Bucket Adı'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='systemsettings',
|
||||
name='s3_region',
|
||||
field=models.CharField(default='ams', max_length=50, verbose_name='Vultr S3 Bölge'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='systemsettings',
|
||||
name='s3_secret_key',
|
||||
field=models.CharField(default='', max_length=255, verbose_name='Vultr S3 Gizli Anahtar'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='systemsettings',
|
||||
name='use_s3_storage',
|
||||
field=models.BooleanField(default=True, help_text='Tüm yedekler Vultr S3 depolama alanına aktarılır', verbose_name='Vultr S3 Depolama'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user