Dava Takip Sistemi, svnar

Yazan : Ömer Ücel - Tarih : July 23, 2008 - 10:51 pm - Etiketler : , ,

Dava takip sistemi ile ilgili gerekli incelemeleri ve düzenlemeleri yapıp http://code.google.com/p/dava/ adresine kodları aktardım. Müsait bir vakitte bu sitede bir alt alan adı oluşturup indirmeden önce kullanıcıların görmeleri açısından test imkanı sağlayacağım.

Sistemde şu an davaları kategorilendirme, durum atama, davaları görüntülemesine imkan verilen alt kullanıcıları ekleme gibi özellikler mevcut. İlerleyen sürümlerde aşağıdaki özellikleri eklemeyi düşünüyorum:

  • Davalara dosya ekleyebilme.
  • Eklenen dosyalar pdf, odt, doc vb. türlerde ise bunları içerik olarak belirleyebilme.
  • Davaların pdf, odt, doc vb. türlerde indirilebilmesini saÄŸlama.
  • Davalarla ilgili notlar alabilme.
  • Kullanıcılar için ÅŸu sayfaya girsin, ÅŸunu yapsın, bunu yapmasın gibi detaylı bir yetkilendirme sistemi.
  • Belge bankası, sisteme eklenen tüm dosyaları tek bir yerden yönetebilme.
  • Kullanıcılar arası mesajlaÅŸma sistemi ile basit bir forum sistemi.
  • Åžablon özelliÄŸi. Bir dava ya da herhangi bir belge oluÅŸtururken önceden hazırlanan ÅŸablonları kullanabilme.

svnar
Aşağıdaki kodlarla depodan kaynak kodlarını alabiliyoruz.

 
svn co http://depo/ klasor
 

Ancak alınan kodlarla birlikte alt dizinlerde .svn şeklinde klasörler oluşuyor. Hem bunları göz ardı edebilen hemde belirlenen dosya isimleri ve dosya uzantılarına göre arşive eklenecek dosyaları filtreleyebilen ufak bir arşivleme uygulaması geliştirdim. Kodlara aşağıdan ve buradan erişebilirsiniz.

Vakit bulursam svn modülünüde uygulama içerisine ekleyeceğim. Böylelikle hem svn komutunu kullanmadan depodan dosyalar alınıp arşivlenmiş olacak hem de belirli bir revizyonun arşiv dosyasının oluşturulması sağlanabilecek.

Belki böyle bir uygulama vardır. Aramalarım sonucunda bir şey elde edemedim. Bilen varsa bir zahmet yorum kısmından belirtsin. Boş yere uğraşmayayım :)

Uygulamayı şu şekilde kullanabilirsiniz:

 
python svnar.py hatirlat hatirlat-1.0.tar.gz -fdizin .svn -fdosya Thumbs.db,thumbs.db -ftur .pyc
 

svnar.py den sonraki ilk değer arşivlenecek olan konumu, ikinci değer ise arşiv dosyasının adını belirtiyor. Diğer argümanların kullanım amaçları şu şekildedir:

  • -fdizin DIZIN1 , DIZIN2 : DIZIN1,DIZIN2 adlı dizinler arÅŸiv dosyasına dahil edilmez.
  • -fdosya DOSYA1 , DOSYA2 : DOSYA1 , DOSYA2 adlı dosyalar arÅŸiv dosyasını dahil edilmez.
  • -ftur TUR1,TUR2 : TUR1, TUR2 türündeki dosyalar arÅŸiv dosyasına dahil edilmez.
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import os
import sys
import tarfile
 
class svnar:
    def __init__(self,argv):
        # Çalışma ayarları alınıyor
        self.konum     = argv[1]
        self.arsiv_adi = argv[2]
        if "-fdizin" in argv:
            self.filtre_dizin    = argv[argv.index("-fdizin")+1].split(",")
        else:
            self.filtre_dizin    = []
 
        if "-fdosya" in argv:
            self.filtre_dosya    = argv[argv.index("-fdosya")+1].split(",")
        else:
            self.filtre_dosya    = []
 
        if "-ftur" in argv:
            self.filtre_tur      = argv[argv.index("-ftur")+1].split(",")
        else:
            self.filtre_tur      = []
 
        # Konum içerisinde bulunan dizin ve dosyaları tutan değişkenler.
        self.dizinler = []
        self.dosyalar = []
 
        # Listeyi al.
        self.al(self.konum)
 
        # Dosyaları arşivle
        self.arsivle()
 
    def al(self,konum):
        for i in os.listdir(konum):
            x = "%s/%s" %(konum,i)
            if self.filtrele(konum,i)==True:
                if os.path.isdir(x)==True:
                    self.dizinler.append(x)
                    self.al(x)
                else:
                    self.dosyalar.append(x)
 
    def filtrele(self,konum,veri):
        durum = True
        # Dizin kontrolü
        if os.path.isdir("%s/%s" %(konum,veri))==True:
            if veri in self.filtre_dizin:
                durum = False
        else:
            # Dosya kontrolü
            if veri in self.filtre_dosya:
                durum = False
 
            # Dosya türü kontrolü
            dosya_turu = os.path.splitext(veri)[1]
            if dosya_turu in self.filtre_tur:
                durum = False
 
        return durum
 
    def arsivle(self):
        arsiv = tarfile.open(self.arsiv_adi,"w:gz")
        for dizin in self.dizinler:
            arsiv.add(dizin,recursive=False)
        for dosya in self.dosyalar:
            arsiv.add(dosya)
        arsiv.close()
 
if __name__=="__main__":
    if sys.argv.__len__()>1:
        if os.path.isdir(sys.argv[1])==False:
            print "HATA!"
            print "-----"
            print "Dizin bulunamadı."
        else:
            if sys.argv.__len__()>2:
                if os.path.isfile(sys.argv[2])==False:
                    svnar(sys.argv)
                else:
                    cevap = raw_input("%s konumu dolu görünüyor. Üzerine yazılmasını ister misiniz ? (e/h)" %(sys.argv[2]))
                    if cevap in ["e","E","Evet","evet","y","yes","Y","Yes"]:
                        svnar(sys.argv)
 

« « svnar 0.1
Çalışmalarımda kullandığım programlar, siteler, teknolojiler vs.

Resimler Renkler Gimp PHP Python wxPython Geany Swish Max 2 jQuery

Günlük WordPress tabanlıdır.
Kapat



Bilmiyorum  Ben alacağım/aldım  Bu iÅŸi size bırakıyorum  Evet  Hayır


Kapat