mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-17 11:30:19 +01:00
* Change DB engine to sqlite.
* Removed login stuff. * Improvements.
This commit is contained in:
264
moviedb.py
264
moviedb.py
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: iso8859-2 -*-
|
# -*- coding: iso8859-2 -*-
|
||||||
"""
|
"""
|
||||||
MovieDB 0.7
|
MovieDB 0.8
|
||||||
|
|
||||||
features:
|
features:
|
||||||
- szukanie po tytule filmu/serii
|
- szukanie po tytule filmu/serii
|
||||||
@@ -23,12 +23,42 @@ todo:
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
WRKDIR = sys.argv[0:][0].split('moviedb.py')[0]
|
WRKDIR = sys.argv[0:][0].split('moviedb2.py')[0]
|
||||||
|
|
||||||
if WRKDIR[0] != '/':
|
if WRKDIR[0] != '/':
|
||||||
"""<EFBFBD>cie<EFBFBD>ka nie jest absolutna"""
|
"""<EFBFBD>cie<EFBFBD>ka nie jest absolutna"""
|
||||||
WRKDIR = os.getcwd()+"/"+WRKDIR
|
WRKDIR = os.getcwd()+"/"+WRKDIR
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
path = os.environ['HOME']
|
||||||
|
except:
|
||||||
|
path = "/tmp"
|
||||||
|
|
||||||
|
try:
|
||||||
|
# przeczytaj plik, o ile istnieje
|
||||||
|
f = open("%s/.moviedb" % path,"rw")
|
||||||
|
zpliku = f.read()
|
||||||
|
f.close()
|
||||||
|
p = {}
|
||||||
|
zpliku = zpliku.split("\n")
|
||||||
|
for i in zpliku:
|
||||||
|
i = i.split("\t")
|
||||||
|
p[i[0]] = i[1]
|
||||||
|
if len(p) == 5:
|
||||||
|
DB=p['db']
|
||||||
|
CD=p['cdrom']
|
||||||
|
EPORTXLS=p['exportxls']
|
||||||
|
else:
|
||||||
|
DB="moviedb.db"
|
||||||
|
CD="/mnt/cdrom"
|
||||||
|
EPORTXLS=False
|
||||||
|
except:
|
||||||
|
# w przeciwnym przypadku przjmij warto<74>ci domy<6D>lne
|
||||||
|
DB="moviedb.db"
|
||||||
|
CD="/mnt/cdrom"
|
||||||
|
EPORTXLS=False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import pygtk
|
import pygtk
|
||||||
#tell pyGTK, if possible, that we want GTKv2
|
#tell pyGTK, if possible, that we want GTKv2
|
||||||
@@ -49,55 +79,20 @@ except:
|
|||||||
#Also, we know we are running GTK v2
|
#Also, we know we are running GTK v2
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from pyPgSQL import PgSQL
|
from pysqlite2 import dbapi2 as sqlite
|
||||||
|
|
||||||
except:
|
except:
|
||||||
print "You need to install pyPgSQL to run this app\nhttp://pypgsql.sourceforge.net/"
|
print "MovieDB uses SQLite DB.\nYou'll need to get it and the python bindings as well.\nhttp://www.sqlite.org\nhttp://initd.org/tracker/pysqlite"
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
if EPORTXLS==True:
|
||||||
try:
|
try:
|
||||||
import pyExcelerator
|
import pyExcelerator
|
||||||
except:
|
except:
|
||||||
print "You need pyExcelerator\nhttp://sourceforge.net/projects/pyexcelerator"
|
print "You'll need pyExcelerator, if you want to export DB to XLS format.\nhttp://sourceforge.net/projects/pyexcelerator"
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
try:
|
|
||||||
path = os.environ['HOME']
|
|
||||||
except:
|
|
||||||
path = "/tmp"
|
|
||||||
|
|
||||||
try:
|
|
||||||
# przeczytaj plik, o ile istnieje
|
|
||||||
f = open("%s/.moviedb" % path,"rw")
|
|
||||||
zpliku = f.read()
|
|
||||||
f.close()
|
|
||||||
p = {}
|
|
||||||
zpliku = zpliku.split("\n")
|
|
||||||
for i in zpliku:
|
|
||||||
i = i.split("\t")
|
|
||||||
p[i[0]] = i[1]
|
|
||||||
if len(p) == 5:
|
|
||||||
USER=p['user']
|
|
||||||
PASS=p['pass']
|
|
||||||
HOST=p['host']
|
|
||||||
DB=p['db']
|
|
||||||
CD=p['cdrom']
|
|
||||||
else:
|
|
||||||
USER="movie"
|
|
||||||
PASS="teamsleep"
|
|
||||||
HOST="localhost"
|
|
||||||
DB="moviedb"
|
|
||||||
CD="/mnt/cdrom"
|
|
||||||
except:
|
|
||||||
# w przeciwnym przypadku przjmij warto<74>ci domy<6D>lne
|
|
||||||
USER="movie"
|
|
||||||
PASS="teamsleep"
|
|
||||||
HOST="localhost"
|
|
||||||
DB="moviedb"
|
|
||||||
CD="/mnt/cdrom"
|
|
||||||
|
|
||||||
|
|
||||||
class SaveAsMDB:
|
class SaveAsMDB:
|
||||||
"""pokazuje dialog zapisu(exportu) do pliku""" #{{{
|
"""pokazuje dialog zapisu(exportu) do pliku""" #{{{
|
||||||
@@ -214,27 +209,6 @@ class StdMSG:
|
|||||||
return self.result
|
return self.result
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
class LoginMDB:
|
|
||||||
"""pokazuje dialog logowania""" #{{{
|
|
||||||
def __init__(self):
|
|
||||||
self.gladefile = WRKDIR + "/glade/moviedb.glade"
|
|
||||||
def run(self):
|
|
||||||
self.logingld = gtk.glade.XML(self.gladefile, "loginMDB")
|
|
||||||
self.login = self.logingld.get_widget("loginMDB")
|
|
||||||
try:
|
|
||||||
pixBuf = gtk.gdk.pixbuf_new_from_file(WRKDIR + "/pixmaps/login.png")
|
|
||||||
self.logingld.get_widget("loginImg").set_from_pixbuf(pixBuf)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
self.login.set_title("MovieDB - Login")
|
|
||||||
self.result = self.login.run()
|
|
||||||
l = self.logingld.get_widget("flogin").get_text()
|
|
||||||
p = self.logingld.get_widget("fpass").get_text()
|
|
||||||
self.login.destroy()
|
|
||||||
return self.result,[l,p]
|
|
||||||
#}}}
|
|
||||||
|
|
||||||
class AboutMDB:
|
class AboutMDB:
|
||||||
"""pokazuje prosty dialog "o programie" """ #{{{
|
"""pokazuje prosty dialog "o programie" """ #{{{
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -257,14 +231,13 @@ class AboutMDB:
|
|||||||
|
|
||||||
class DetailsMDB:
|
class DetailsMDB:
|
||||||
"""Pokazuje okno z informacjami wyci<63>gni<6E>tymi z DB na podstawie id tytu<74>u""" #{{{
|
"""Pokazuje okno z informacjami wyci<63>gni<6E>tymi z DB na podstawie id tytu<74>u""" #{{{
|
||||||
def __init__(self, tid=0, perms=0):
|
def __init__(self, tid=0):
|
||||||
"""innicjalizacja obiektu"""
|
"""innicjalizacja obiektu"""
|
||||||
gladefile=WRKDIR + "/glade/moviedb.glade"
|
gladefile=WRKDIR + "/glade/moviedb.glade"
|
||||||
self.wDetails = gtk.glade.XML(gladefile,"winDetails")
|
self.wDetails = gtk.glade.XML(gladefile,"winDetails")
|
||||||
self.wDetails.get_widget("image1").set_from_file(WRKDIR + "/img/notavail.gif")
|
self.wDetails.get_widget("image1").set_from_file(WRKDIR + "/img/notavail.gif")
|
||||||
|
|
||||||
# pomocnicze zmienne
|
# pomocnicze zmienne
|
||||||
self.perms = perms
|
|
||||||
self.typ = '0'
|
self.typ = '0'
|
||||||
self.imgIndeks = 1
|
self.imgIndeks = 1
|
||||||
|
|
||||||
@@ -296,12 +269,10 @@ class DetailsMDB:
|
|||||||
self.sbid = 0
|
self.sbid = 0
|
||||||
|
|
||||||
# g<><67>wna robota:
|
# g<><67>wna robota:
|
||||||
cx = PgSQL.connect(user=USER, password=PASS, host=HOST, database=DB, client_encoding="iso8859-2")
|
cx = sqlite.connect(WRKDIR+"/db/"+DB,isolation_level=None)
|
||||||
|
cx.isolation_level = "IMMEDIATE"
|
||||||
c = cx.cursor()
|
c = cx.cursor()
|
||||||
|
|
||||||
if self.perms != 2:
|
|
||||||
typ = 4
|
|
||||||
else:
|
|
||||||
typ = 0
|
typ = 0
|
||||||
|
|
||||||
# {{{ SQL: DetailsMDB#1 wyci<63>gni<6E>cie podstawowych informacji o tytule
|
# {{{ SQL: DetailsMDB#1 wyci<63>gni<6E>cie podstawowych informacji o tytule
|
||||||
@@ -496,35 +467,27 @@ class DetailsMDB:
|
|||||||
|
|
||||||
class MovieDB:
|
class MovieDB:
|
||||||
"""pokazuj<EFBFBD>ca g<><67>wne okno aplikacji, pozwalaj<61>ca na przeszukiwanie w<>r<EFBFBD>d plik<69>w i tytu<74><75>w i wy<77>wietlaj<61>ca wynik wyszukiwania""" #{{{
|
"""pokazuj<EFBFBD>ca g<><67>wne okno aplikacji, pozwalaj<61>ca na przeszukiwanie w<>r<EFBFBD>d plik<69>w i tytu<74><75>w i wy<77>wietlaj<61>ca wynik wyszukiwania""" #{{{
|
||||||
def __init__(self, perms=0):
|
def __init__(self,dbfile=None):
|
||||||
|
|
||||||
self.perms = perms
|
|
||||||
self.gladefile=WRKDIR + "/glade/moviedb.glade"
|
self.gladefile=WRKDIR + "/glade/moviedb.glade"
|
||||||
self.wTree=gtk.glade.XML(self.gladefile,"mainWin")
|
self.wTree=gtk.glade.XML(self.gladefile,"mainWin")
|
||||||
|
|
||||||
# sygna<6E>y:
|
# sygna<6E>y:
|
||||||
dic = {"on_mainWin_destroy" :(gtk.main_quit),\
|
dic = {"on_mainWin_destroy" :(gtk.main_quit),\
|
||||||
"on_quit1_activate" :(gtk.main_quit),\
|
"on_quit1_activate" :(gtk.main_quit),\
|
||||||
"on_szukaj_clicked" :(self.searchdb,self.perms),\
|
"on_szukaj_clicked" :(self.searchdb),\
|
||||||
"on_szukPat_activate" :(self.searchdb,self.perms),\
|
"on_szukPat_activate" :(self.searchdb),\
|
||||||
"on_lista_row_activated" :(self.szczegoly,self.perms),\
|
"on_lista_row_activated" :(self.szczegoly),\
|
||||||
"on_about1_activate" :self.oprogramie,\
|
"on_about1_activate" :self.oprogramie,\
|
||||||
"on_cut1_activate" :self.showPrefs,\
|
"on_cut1_activate" :self.showPrefs,\
|
||||||
"on_save_as1_activate" :self.exportToXLS}
|
"on_save_as1_activate" :self.exportToXLS}
|
||||||
|
|
||||||
# inicjalizacja dodatkowych pozycji w menu, je<6A>li uprawnienia pozwalaj<61>
|
|
||||||
if self.perms == 2:
|
|
||||||
pass
|
|
||||||
#self.wTree.get_widget("mainMenu").
|
|
||||||
|
|
||||||
# pod<6F><64>czenie sygna<6E><61>w
|
# pod<6F><64>czenie sygna<6E><61>w
|
||||||
self.wTree.signal_autoconnect(dic)
|
self.wTree.signal_autoconnect(dic)
|
||||||
|
|
||||||
# inicjalizacja combo box<6F>w
|
# inicjalizacja combo box<6F>w
|
||||||
self.treeview=self.wTree.get_widget("pattMatch").set_active(0)
|
self.treeview=self.wTree.get_widget("pattMatch").set_active(0)
|
||||||
self.treeview=self.wTree.get_widget("typ").set_active(0)
|
self.treeview=self.wTree.get_widget("typ").set_active(0)
|
||||||
if self.perms ==2:
|
|
||||||
self.treeview=self.wTree.get_widget("typ").append_text('XXX')
|
|
||||||
# inicjalizacja listy z tytu<74>ami
|
# inicjalizacja listy z tytu<74>ami
|
||||||
import gobject
|
import gobject
|
||||||
self.treeview=self.wTree.get_widget("lista")
|
self.treeview=self.wTree.get_widget("lista")
|
||||||
@@ -563,9 +526,9 @@ class MovieDB:
|
|||||||
return myiter
|
return myiter
|
||||||
|
|
||||||
#####CALLBACKS
|
#####CALLBACKS
|
||||||
def szczegoly(self,treeview,path,view_column,perms=0):
|
def szczegoly(self,treeview,path,view_column):
|
||||||
"""poka<EFBFBD> szczeg<65><67>y w nowym oknie.""" # {{{
|
"""poka<EFBFBD> szczeg<65><67>y w nowym oknie.""" # {{{
|
||||||
win = DetailsMDB(treeview.get_model().get_value(treeview.get_model().get_iter(path),0),perms)
|
win = DetailsMDB(treeview.get_model().get_value(treeview.get_model().get_iter(path),0))
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
def oprogramie(self, widget):
|
def oprogramie(self, widget):
|
||||||
@@ -579,7 +542,7 @@ class MovieDB:
|
|||||||
prefs = PrefsMDB()
|
prefs = PrefsMDB()
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
def searchdb(self,widget,perms=0):
|
def searchdb(self,widget):
|
||||||
"""u<EFBFBD><EFBFBD><EFBFBD> zapytanie i wypluj wyniki do treeview""" #{{{
|
"""u<EFBFBD><EFBFBD><EFBFBD> zapytanie i wypluj wyniki do treeview""" #{{{
|
||||||
if self.wTree.get_widget("pattMatch").get_active() == 3:
|
if self.wTree.get_widget("pattMatch").get_active() == 3:
|
||||||
pattern=self.wTree.get_widget("szukPat").get_text()
|
pattern=self.wTree.get_widget("szukPat").get_text()
|
||||||
@@ -590,12 +553,13 @@ class MovieDB:
|
|||||||
else:
|
else:
|
||||||
pattern="%" + self.wTree.get_widget("szukPat").get_text() + "%"
|
pattern="%" + self.wTree.get_widget("szukPat").get_text() + "%"
|
||||||
|
|
||||||
cx = PgSQL.connect(user=USER, password=PASS, host=HOST, database=DB, client_encoding="iso8859-2")
|
cx = sqlite.connect(WRKDIR+"/db/"+DB,isolation_level=None)
|
||||||
|
cx.isolation_level = "IMMEDIATE"
|
||||||
c = cx.cursor()
|
c = cx.cursor()
|
||||||
if self.wTree.get_widget("czalt").get_active():
|
if self.wTree.get_widget("czalt").get_active():
|
||||||
klon = False
|
klon = 'f'
|
||||||
else:
|
else:
|
||||||
klon = True
|
klon = 't'
|
||||||
|
|
||||||
# szukaj wg typu:
|
# szukaj wg typu:
|
||||||
# NOTE: daj tu to, co potrzeba
|
# NOTE: daj tu to, co potrzeba
|
||||||
@@ -603,11 +567,12 @@ class MovieDB:
|
|||||||
if self.wTree.get_widget("radn").get_active():
|
if self.wTree.get_widget("radn").get_active():
|
||||||
# SQL: zapytanie zbieraj<61>ce tytu<74>y film<6C>w po kluczu nazw plik<69>w
|
# SQL: zapytanie zbieraj<61>ce tytu<74>y film<6C>w po kluczu nazw plik<69>w
|
||||||
# TODO: zrobi<62> tablic<69> przechowuj<75>c<EFBFBD> nr p<>yt (najlepiej triggerze)
|
# TODO: zrobi<62> tablic<69> przechowuj<75>c<EFBFBD> nr p<>yt (najlepiej triggerze)
|
||||||
|
"""
|
||||||
c.execute("SELECT distinct\
|
c.execute("SELECT distinct\
|
||||||
a.id_tytulu,\
|
a.id_tytulu,\
|
||||||
n.tytul,\
|
n.tytul,\
|
||||||
alt,\
|
alt,\
|
||||||
to_char (data_wydania,'YYYY'),\
|
data_wydania,\
|
||||||
case\
|
case\
|
||||||
when\
|
when\
|
||||||
ilosc_w_serii is null then 0\
|
ilosc_w_serii is null then 0\
|
||||||
@@ -621,26 +586,25 @@ class MovieDB:
|
|||||||
ilosc_posiadanych\
|
ilosc_posiadanych\
|
||||||
end,\
|
end,\
|
||||||
nazwa_typu,\
|
nazwa_typu,\
|
||||||
plyty_asstring(a.id_tytulu::text)\
|
1\
|
||||||
from\
|
from\
|
||||||
nazwa_tytulu as n\
|
nazwa_tytulu as n\
|
||||||
left join tytul a using(id_tytulu)\
|
left join tytul a using(id_tytulu)\
|
||||||
left join typ as t using(id_typu)\
|
left join typ as t using(id_typu)\
|
||||||
left join plik p using(id_tytulu)\
|
left join plik p using(id_tytulu)\
|
||||||
where\
|
where\
|
||||||
(alt is false or alt is %s)\
|
(alt = 'f' or alt = %s)\
|
||||||
and nazwa_pliku ilike %s\
|
and nazwa_pliku ilike %s\
|
||||||
and id_typu in (%s, %s, %s, %s)\
|
and id_typu in (%s, %s, %s, %s)\
|
||||||
and id_typu != %s\
|
and id_typu != %s\
|
||||||
order by\
|
order by\
|
||||||
id_tytulu, alt",(klon,pattern.encode("iso8859-2"),anime,xxx,filmy,kreskowki,typ))
|
id_tytulu, alt",(klon,pattern,anime,xxx,filmy,kreskowki,typ))
|
||||||
else:
|
"""
|
||||||
# SQL: zapytanie zbieraj<61>ce tytu<74>y film<6C>w
|
c.execute("SELECT distinct\
|
||||||
c.execute("SELECT \
|
|
||||||
a.id_tytulu,\
|
a.id_tytulu,\
|
||||||
n.tytul,\
|
n.tytul,\
|
||||||
alt,\
|
alt,\
|
||||||
to_char (data_wydania,'YYYY'),\
|
data_wydania,\
|
||||||
case\
|
case\
|
||||||
when\
|
when\
|
||||||
ilosc_w_serii is null then 0\
|
ilosc_w_serii is null then 0\
|
||||||
@@ -654,18 +618,62 @@ class MovieDB:
|
|||||||
ilosc_posiadanych\
|
ilosc_posiadanych\
|
||||||
end,\
|
end,\
|
||||||
nazwa_typu,\
|
nazwa_typu,\
|
||||||
plyty_asstring(a.id_tytulu::text)\
|
1\
|
||||||
|
from\
|
||||||
|
nazwa_tytulu as n\
|
||||||
|
left join tytul a using(id_tytulu)\
|
||||||
|
left join typ as t using(id_typu)\
|
||||||
|
left join plik p using(id_tytulu)")
|
||||||
|
else:
|
||||||
|
# SQL: zapytanie zbieraj<61>ce tytu<74>y film<6C>w
|
||||||
|
"""
|
||||||
|
c.execute("SELECT \
|
||||||
|
a.id_tytulu,\
|
||||||
|
n.tytul,\
|
||||||
|
alt,\
|
||||||
|
data_wydania,\
|
||||||
|
case\
|
||||||
|
when\
|
||||||
|
ilosc_w_serii is null then 0\
|
||||||
|
else\
|
||||||
|
ilosc_w_serii\
|
||||||
|
end,\
|
||||||
|
case\
|
||||||
|
when\
|
||||||
|
ilosc_posiadanych is null then 0\
|
||||||
|
else\
|
||||||
|
ilosc_posiadanych\
|
||||||
|
end,\
|
||||||
|
nazwa_typu,\
|
||||||
|
1\
|
||||||
from\
|
from\
|
||||||
nazwa_tytulu as n\
|
nazwa_tytulu as n\
|
||||||
left join tytul a using(id_tytulu)\
|
left join tytul a using(id_tytulu)\
|
||||||
left join typ as t using(id_typu)\
|
left join typ as t using(id_typu)\
|
||||||
where\
|
where\
|
||||||
(alt is false or alt is %s)\
|
(alt = 'f' or alt = %s)\
|
||||||
and tytul ilike %s\
|
and tytul ilike %s\
|
||||||
and id_typu in (%s, %s, %s, %s)\
|
and id_typu in (%s, %s, %s, %s)\
|
||||||
and id_typu != %s\
|
and id_typu != %s\
|
||||||
order by\
|
order by\
|
||||||
id_tytulu, alt",(klon,pattern.encode("iso8859-2"),anime,xxx,filmy,kreskowki,typ))
|
id_tytulu, alt",(klon,pattern,anime,xxx,filmy,kreskowki,typ))
|
||||||
|
"""
|
||||||
|
c.execute("SELECT distinct\
|
||||||
|
a.id_tytulu,\
|
||||||
|
n.tytul,\
|
||||||
|
alt,\
|
||||||
|
data_wydania,\
|
||||||
|
ilosc_w_serii,\
|
||||||
|
ilosc_posiadanych,\
|
||||||
|
nazwa_typu,\
|
||||||
|
1\
|
||||||
|
from\
|
||||||
|
nazwa_tytulu as n\
|
||||||
|
left join tytul as a on a.id_tytulu=n.id_tytulu\
|
||||||
|
left join typ as t using (id_typu)\
|
||||||
|
left join plik as p on p.id_tytulu=n.id_tytulu\
|
||||||
|
where\
|
||||||
|
tytul like '%s'" % pattern)
|
||||||
|
|
||||||
res = c.fetchall()
|
res = c.fetchall()
|
||||||
cx.close()
|
cx.close()
|
||||||
@@ -685,13 +693,13 @@ class MovieDB:
|
|||||||
ido=0
|
ido=0
|
||||||
for i in res:
|
for i in res:
|
||||||
if i[2] == True and ido == i[0]:
|
if i[2] == True and ido == i[0]:
|
||||||
self.insert_row(model,iterobj,i[0],i[1].decode("iso8859-2"),i[4],i[5],i[3],i[6],i[7])
|
self.insert_row(model,iterobj,i[0],i[1],i[4],i[5],i[3],i[6],i[7])
|
||||||
else:
|
else:
|
||||||
iterobj = self.insert_row(model,None,i[0],i[1].decode("iso8859-2"),i[4],i[5],i[3],i[6],i[7])
|
iterobj = self.insert_row(model,None,i[0],i[1],i[4],i[5],i[3],i[6],i[7])
|
||||||
ido = i[0]
|
ido = i[0]
|
||||||
else:
|
else:
|
||||||
for i in res:
|
for i in res:
|
||||||
self.insert_row(model,None,i[0],i[1].decode("iso8859-2"),i[4],i[5],i[3],i[6],i[7])
|
self.insert_row(model,None,i[0],i[1],i[4],i[5],i[3],i[6],i[7])
|
||||||
|
|
||||||
#model.set_sort_column_id(1,gtk.SORT_ASCENDING)
|
#model.set_sort_column_id(1,gtk.SORT_ASCENDING)
|
||||||
|
|
||||||
@@ -729,9 +737,7 @@ class MovieDB:
|
|||||||
filmy = 2
|
filmy = 2
|
||||||
kreskowki = 3
|
kreskowki = 3
|
||||||
xxx = 4
|
xxx = 4
|
||||||
if self.perms !=2:
|
|
||||||
typ=4
|
|
||||||
else:
|
|
||||||
typ=0
|
typ=0
|
||||||
|
|
||||||
return anime,filmy,kreskowki,xxx,typ
|
return anime,filmy,kreskowki,xxx,typ
|
||||||
@@ -766,7 +772,7 @@ class MovieDB:
|
|||||||
|
|
||||||
anime,filmy,kreskowki,xxx,typ = self.getType()
|
anime,filmy,kreskowki,xxx,typ = self.getType()
|
||||||
|
|
||||||
cx = PgSQL.connect(user=USER, password=PASS, host=HOST, database=DB, client_encoding="iso8859-2")
|
cx = sqlite.connect(user=USER, password=PASS, host=HOST, database=DB, client_encoding="iso8859-2")
|
||||||
c = cx.cursor()
|
c = cx.cursor()
|
||||||
sql = "select\
|
sql = "select\
|
||||||
p.id_pliku,\
|
p.id_pliku,\
|
||||||
@@ -871,55 +877,13 @@ class MovieDB:
|
|||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
# NOTE: koniec deklaracji klas. g<><67>wny program:
|
# NOTE: koniec deklaracji klas. g<><67>wny program:
|
||||||
petla = 0
|
|
||||||
perms = 0
|
|
||||||
|
|
||||||
while petla == 0:
|
|
||||||
# {{{ pokazanie dialogu logowania w p<>tli
|
|
||||||
login = LoginMDB()
|
|
||||||
result,loginPair = login.run()
|
|
||||||
|
|
||||||
#sprawdzenie co te<74> u<>ytkownik wpisa<73> i dokonanie odpowiedniego zachowania
|
try:
|
||||||
if (result == gtk.RESPONSE_OK):
|
app=MovieDB(sys.argv[1])
|
||||||
# w przypadku naci<63>ni<6E>cia OK, pobranie z DB uprawnienia, je<6A>li login/has<61>o si<73> zgadza
|
except:
|
||||||
cx = PgSQL.connect(user=USER, password=PASS, host=HOST, database=DB, client_encoding="iso8859-2")
|
app=MovieDB()
|
||||||
c = cx.cursor()
|
|
||||||
c.execute("SELECT\
|
|
||||||
uprawnienia\
|
|
||||||
from\
|
|
||||||
users\
|
|
||||||
where\
|
|
||||||
login = %s\
|
|
||||||
and password = md5(%s)\
|
|
||||||
", loginPair[0],loginPair[1])
|
|
||||||
perms = c.fetchone()
|
|
||||||
cx.close()
|
|
||||||
|
|
||||||
if perms==None:
|
|
||||||
# z<>y login lub has<61>o
|
|
||||||
m = StdMSG(u"MovieDB - B<><42>d logowania",u"Nieprawid<EFBFBD>owy login lub has<61>o.\n",1)
|
|
||||||
m.run()
|
|
||||||
else:
|
|
||||||
# zapytanie zwr<77>ci<63>o nie None; wychodzimy z p<>tli while.
|
|
||||||
petla = 1
|
|
||||||
perms = perms[0]
|
|
||||||
elif (result == gtk.RESPONSE_CANCEL):
|
|
||||||
# user nacisn<73><6E> cancel, wi<77>c nie chce, lub ne mo<6D>e si<73> zalogowa<77>. sprawdzamy jak jest.
|
|
||||||
# pokazanie dialogu z pytaniem
|
|
||||||
m = StdMSG("MovieDB - Pytanie",u"Jeste<EFBFBD> pewien, <20>e <b>nie chcesz</b> si<73> logowa<77>?\n")
|
|
||||||
res = m.run()
|
|
||||||
if(res == gtk.RESPONSE_OK):
|
|
||||||
# je<6A>li jest pewny, wychodzimy z p<>tli while. je<6A>li nie, nic nie robimy,
|
|
||||||
# okno logowanie pojawi si<73> przy powt<77>rnym obrocie p<>tli.
|
|
||||||
petla = 1
|
|
||||||
else:
|
|
||||||
# user ubi<62> okno logowania, lub poci<63>gn<67><6E> z krzy<7A>a, lub do dialogu zosta<74> wys<79>any inny sygna<6E>.
|
|
||||||
petla = 2
|
|
||||||
#}}}
|
|
||||||
|
|
||||||
if petla != 2:
|
|
||||||
# w przypadku poci<63>gni<6E>cia z krzy<7A>a wychodzimy z aplikacji, w pozosta<74>ych przypadkach uruchomione zostaje g<><67>wne okno.
|
|
||||||
app=MovieDB(perms)
|
|
||||||
try:
|
try:
|
||||||
gtk.main()
|
gtk.main()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
|||||||
Reference in New Issue
Block a user