mig

Yazılım ekran görüntüsü:
mig
Yazılım detaylar:
Versiyon: 0.0.6
Qayıt: 20 Feb 15
Geliştirici: mig contributors
Lisans: Ücretsiz
Popülerlik: 13

Rating: 2.0/5 (Total Votes: 1)

mig ([M] ediaGoblin [i] s [G] reat!) Ilk GNU MediaGoblin Christopher Allan Webber tarafından yazılmıştır.
O zamandan beri, Joar Wandborg MediaGoblin gelen ve şu anda okumakta olduğunuz README var ayrı bir paket içine işlevselliği temellerini ekstre etmiştir.
Init göçler
Ya çalışma mig.run (motor, isim, modeller, göçler) veya elle mig.models.MigrationData tablo ekleyin.
Not
Veritabanı zaten doldurulur ve MigrationData tabloda hiçbir göç versiyonu satır vardır ise, mig.run () başarısız olur.
Zaten bir kalabalık veritabanı varsa, aksi takdirde mig veritabanını başlatmak için çalışacağız, bir MigrationData (isim = 'migrations_handle', sürüm = 0) MigrationData tabloda göçler için satır oluşturmanız gerekir.
Örnek kurulumu
Göç oluştur
.. Kod bloğu :: piton
& Nbsp; & nbsp; & nbsp; mig ithalat RegisterMigration gelen
& Nbsp; & nbsp; & nbsp; sqlalchemy ithalat meta, Tablo, Sütun, gelen Tamsayı, Unicode, DateTime,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ForeignKey
& Nbsp; & nbsp; & nbsp; GÖÇLER = {}
& Nbsp; & nbsp; & nbsp; RegisterMigration (1, GÖÇLER)
& Nbsp; & nbsp; & nbsp; def create_site_table (db_conn):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; meta = MetaData (bağlama = db_conn.bind)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; user_table = Tablo ('kullanıcı', meta, Gerçek autoload =
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; autoload_with = db_conn.bind)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_table = Tablo ('sitesi', meta,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Sütun ('id', Tamsayı, primary_key = true),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Sütun ('etki', Unicode),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Sütun ('owner_id', Tamsayı, ForeignKey (user_table.columns ['id'])))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_table.create ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; db_conn.commit ()
& Nbsp; & nbsp; & nbsp; RegisterMigration (2, GÖÇLER)
& Nbsp; & nbsp; & nbsp; def (db_conn) item_add_site_id:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; meta = MetaData (bağlama = db_conn.bind)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; item_table = Tablo ('madde', meta, autoload = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_table = Tablo ('sitesi', meta, autoload = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_id_col = Sütun (Integer, ForeignKey ('site_id'
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_table.columns ['id']))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_id_col.create (item_table)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; db_conn.commit ()
Modelleri Kayıt
.. Kod bloğu :: piton
& Nbsp; & nbsp; & nbsp; ithalat bcrypt
& Nbsp; & nbsp; & nbsp; datetime ithalat datetime gelen
& Nbsp; & nbsp; & nbsp; geçirmek ithalat changeset gelen
& Nbsp; & nbsp; & nbsp; talkatv ithalat db den
& Nbsp; & nbsp; & nbsp; sınıf Kullanıcı (db.Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; id = db.Column (db.Integer, primary_key = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; username = db.Column (db.String (60), benzersiz = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; E-posta = db.Column (db.String (255), eşsiz = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Şifre = db.Column (db.String (60))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self, adı, e-posta, şifre = Yok, openid = Yoktur):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.username = kullanıcı adı
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.email = e-posta
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; şifre ise:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.set_password (şifre)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; OpenID eğer:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.openid = openid
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __repr __ (self):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dönüş ''. biçimi (self.username)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def set_password (öz, şifre):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.password = bcrypt.hashpw (şifre, bcrypt.gensalt ())
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def check_password (öz, şifre):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; (şifre, self.password) bcrypt.hashpw dönmek == self.password
& Nbsp; & nbsp; & nbsp; sınıf OpenID (db.Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; id = db.Column (db.Integer, primary_key = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; URL = db.Column (db.String ())
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; oluşturulan = db.Column (db.DateTime)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; USER_ID = db.Column (db.Integer, db.ForeignKey ('user.id'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; user = db.relationship ('Kullanıcı',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; backref = db.backref ('openids', tembel = 'dinamik'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self, kullanıcı, url):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.created = datetime.utcnow ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.user = kullanıcı
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.url = url
& Nbsp; & nbsp; & nbsp; sınıf Öğe (db.Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; id = db.Column (db.Integer, primary_key = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Başlıktaki = db.Column (db.String ())
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; url = db.Column (db.String (), benzersiz = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; oluşturulan = db.Column (db.DateTime)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site_id = db.Column (db.Integer, db.ForeignKey ('site.id'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; site = db.relationship ('Site',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; backref = db.backref ('öğeler', tembel = 'dinamik'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self, url, title, site = Yoktur):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; sitede ise:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.site = sitesi
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.title = başlıktaki
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.url = url
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.created = datetime.utcnow ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __repr __ (self):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dönüş '<Öğe {0} ({1})>'. biçimi (
                    self.url,
                    self.site.owner.username) self.site başka Yok eğer
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def as_dict (öz):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Beni = {
                    'Id': self.id,
                    'Title': self.title,
                    'Url': self.url,
                    'Oluşturuldu': self.created.isoformat ()}
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.site eğer:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; me.update ({'sahibi': self.site.owner.id})
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Bana dönmek
& Nbsp; & nbsp; & nbsp; sınıf Sitesi (db.Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; id = db.Column (db.Integer, primary_key = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; oluşturulan = db.Column (db.DateTime)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; etki alanı = db.Column (db.String)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; owner_id = db.Column (db.Integer, db.ForeignKey ('user.id'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Sahibi = db.relationship ('Kullanıcı',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; backref = db.backref ('siteler', tembel = 'dinamik'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self, sahibi, etki):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.owner = sahibi
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.domain = domain
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.created = datetime.utcnow ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __repr __ (self):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dönüş ''. biçimi (
                    self.domain,
                    self.owner.username)
& Nbsp; & nbsp; & nbsp; sınıf Yorum (db.Model):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; id = db.Column (db.Integer, primary_key = true)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; oluşturulan = db.Column (db.DateTime)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Metin = db.Column (db.String ())
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; item_id = db.Column (db.Integer, db.ForeignKey () 'item.id'),
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; madde = db.relationship ('Öğe',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; backref = db.backref ('Yorumlar', tembel = 'dinamik'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; USER_ID = db.Column (db.Integer, db.ForeignKey ('user.id'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; user = db.relationship ('Kullanıcı',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; backref = db.backref ('Yorumlar', tembel = 'dinamik'))
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __init __ (self, öğe, kullanıcı, metin):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.item = öğe
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.user = kullanıcı
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.text = metin
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.created = datetime.utcnow ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def __repr __ (self):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dönüş ''. biçimi (
                    self.text [: 25] + ('...' len eğer (self.text)> başka 25 ''),
                    self.user.username)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; def as_dict (öz):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Beni = {
                    'Id': self.id,
                    'Öğe': self.item.id,
                    'User_id': self.user.id,
                    'Kullanıcı adı': self.user.username,
                    'Metin': self.text,
                    'Oluşturuldu': self.created.isoformat ()}
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Bana dönmek
& Nbsp; & nbsp; & nbsp; MODELLER = [
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Kullanıcı,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Yorum Yap,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Öğe,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; OpenID,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Site]
Run göçler
.. Kod bloğu :: piton
& Nbsp; & nbsp; & nbsp; mig ithalat çalışmadan elde
& Nbsp; & nbsp; & nbsp; mig.models gelen MigrationData ithal
& Nbsp; & nbsp; & nbsp; YourApp ithalat db den
& Nbsp; & nbsp; & nbsp; yourapp.models ithalat MODELLER gelen
& Nbsp; & nbsp; & nbsp; yourapp.migrations ithalat göçler gelen
& Nbsp; & nbsp; & nbsp; def check_or_create_mig_data ():
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; değilse (db.session 'mig__data') db.engine.dialect.has_table:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Göç tablo oluşturun
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; MigrationData .__ tablo __. Oluşturun (db.engine)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Bu mig init değil bu yüzden, ilk göç oluşturun.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; göç = MigrationData (isim = u '__ main__', version = 0)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; db.session.add (göç)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; db.session.commit ()
& Nbsp; & nbsp; & nbsp; __name__ == '__main__' eğer:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; db.engine.dialect.has_table eğer (db.session, 'kullanıcı'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # DB zaten göçler aktif olup olmadığını kontrol edin doldurulur
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Aksi takdirde göç verileri tablo oluşturmak
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; check_or_create_mig_data ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; çalışma (db.engine u __ 'main__', MODELLER, GÖÇLER)

Gereksinimler :

  • Python

Benzer yazılım

movingaverage
movingaverage

11 May 15

PHP Mini SQL Admin
PHP Mini SQL Admin

14 Apr 15

Products.Undoer
Products.Undoer

15 Apr 15

Tiote
Tiote

14 Apr 15

Yorumlar mig

Yorum Bulunamadı
Yorum eklemek
Görüntülerde açın!