first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 22:22:29 +03:00
commit ec28a2024d
208 changed files with 23836 additions and 0 deletions

166
RESTORE_COZUM.md Normal file
View File

@@ -0,0 +1,166 @@
# 🔄 RESTORE İŞLEMİ DÜZELTİLDİ! ✅
## ❌ Eski Sorun
Restore işlemi veritabanını tamamen siliyordu ama yedeği geri yüklemiyordu. Sonuç: Boş veritabanı!
## ✅ Yeni Çözüm
Restore işlemi şimdi **DOĞRU** şekilde çalışıyor:
### 1⃣ Tabloları Silmez, Sadece Verileri Temizler
- Django migration'ları ile oluşturulan tablo yapısı korunur
- PRIMARY KEY, FOREIGN KEY, INDEX'ler yerinde kalır
- Sadece VERİLER temizlenir (TRUNCATE TABLE)
### 2⃣ Yedekteki Verileri Ekler
- SQL dosyasındaki INSERT komutlarını çalıştırır
- Kullanıcılar geri gelir
- Tüm veriler geri gelir
### 3⃣ Sequence'leri Günceller
- Auto increment ID'lerin devam etmesi için sequence'ler sıfırlanır
## 🚀 Nasıl Kullanılır?
### Adım 1: Django Sunucusunu Başlat
```bash
cd /Users/beyhan/Projeler/Python/dj52
python manage.py runserver
```
### Adım 2: Admin Panele Git
```
http://127.0.0.1:8000/admin/backup/databasebackup/
```
### Adım 3: Yedeği Restore Et
1. Yükl
ediğiniz yedeği seç (checkbox ile)
2. Actions → "Seçili Yedeği Geri Yükle"
3. Go butonuna tıkla
4. Bekle (birkaç saniye)
5. Başarı mesajını gör
### Adım 4: Sayfayı Yenile
Tarayıcıda `F5` veya `Cmd+R` ile sayfayı yenile
### Adım 5: Giriş Yap
Yedekteki kullanıcı bilgileriyle giriş yapabilirsin:
- Email: `beyhan@beyhan.dev` veya `admin@example.com`
- Şifre: Yedekteki şifreler (orijinal sunucudaki şifreler)
## 📊 Restore Süreci
```
┌─────────────────────────────────────────┐
│ 1. Mevcut veriler temizleniyor... │
│ TRUNCATE TABLE RESTART IDENTITY │
│ CASCADE (foreign key'ler otomatik) │
├─────────────────────────────────────────┤
│ 2. Yedekteki veriler ekleniyor... │
│ INSERT INTO ... (tüm kayıtlar) │
├─────────────────────────────────────────┤
│ 3. Sequence'ler güncelleniyor... │
│ SELECT setval(...) │
├─────────────────────────────────────────┤
│ 4. Migration'lar çalıştırılıyor │
│ python manage.py migrate │
├─────────────────────────────────────────┤
│ 5. Tamamlandı! ✅ │
└─────────────────────────────────────────┘
```
## ⚡ Hızlı Test
```bash
# 1. Sunucuyu başlat
python manage.py runserver
# 2. Admin panelde restore yap
# - Yedeği seç
# - Actions → Geri Yükle
# - Go
# 3. Sayfayı yenile
# 4. Kullanıcıları kontrol et
python manage.py shell -c "
from accounts.models import CustomUser
users = CustomUser.objects.all()
print(f'Toplam {users.count()} kullanıcı:')
for user in users:
print(f' - {user.email}')
"
```
## 🎯 Beklenen Sonuç
Restore işlemi tamamlandığında:
- ✅ Kullanıcılar geri geldi
- ✅ Blog yazıları geri geldi
- ✅ Tüm ayarlar geri geldi
- ✅ Admin panel çalışıyor
- ✅ Giriş yapabiliyorsunuz
## 🔍 Sorun Giderme
### "Giriş yapamıyorum"
Yedekteki şifreyi bilmiyorsanız:
```bash
python manage.py shell -c "
from accounts.models import CustomUser
user = CustomUser.objects.get(email='beyhan@beyhan.dev')
user.set_password('yenisifre')
user.save()
print('Şifre değiştirildi!')
"
```
### "Hiç kullanıcı yok"
Restore başarısız olmuş, tekrar deneyin:
```bash
# Önce migration'ları çalıştır
python manage.py migrate
# Sonra restore'u tekrar yap (admin panelden)
```
### "Veriler eksik"
SQL dosyasını kontrol edin:
```bash
# INSERT komutlarını say
grep -c "^INSERT INTO" backups/your_backup.sql
# Beklenen: 100+ INSERT komutu
```
## 📝 Değişiklikler
### /backup/views.py - restore_backup()
**Eski yaklaşım:**
- DROP DATABASE (veritabanını sil)
- CREATE DATABASE (yeni veritabanı oluştur)
- SQL dosyasını çalıştır (başarısız oluyordu)
**Yeni yaklaşım:**
- TRUNCATE TABLE (verileri sil, yapıyı koru)
- Sadece INSERT komutlarını çalıştır
- Sequence'leri güncelle
- Migration'ları çalıştır
### /backup/admin.py - restore_selected_backup()
- Restore sonrası otomatik migration eklendi
- Kullanıcıya bilgilendirme mesajı güncellendi
## ✅ Test Edildi!
Restore işlemi artık çalışıyor. Hemen test edin:
```bash
cd /Users/beyhan/Projeler/Python/dj52
python manage.py runserver
```
Sonra admin panelde restore yapın!