annotate treepkg/info/data.py @ 506:3a5dd6f98f71

fixed typo
author Bjoern Ricks <bricks@intevation.de>
date Fri, 05 Nov 2010 11:02:57 +0000
parents b7aad4cb58bb
children
rev   line source
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
1 #! /usr/bin/python
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
2 # Copyright (C) 2010 by Intevation GmbH
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
3 # Authors:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
4 # Bjoern Ricks <bjoern.ricks@intevation.de>
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
5 #
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
6 # This program is free software under the GPL (>=v2)
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
7 # Read the file COPYING coming with the software for details.
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
8 """ Classes for storing and handling data related to treepkg info """
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
9
419
eac71f066037 make treepkg compatible to python 2.4
Bjoern Ricks <bricks@intevation.de>
parents: 416
diff changeset
10 try:
eac71f066037 make treepkg compatible to python 2.4
Bjoern Ricks <bricks@intevation.de>
parents: 416
diff changeset
11 import sqlite3 as db
eac71f066037 make treepkg compatible to python 2.4
Bjoern Ricks <bricks@intevation.de>
parents: 416
diff changeset
12 except ImportError:
eac71f066037 make treepkg compatible to python 2.4
Bjoern Ricks <bricks@intevation.de>
parents: 416
diff changeset
13 from pysqlite2 import dbapi2 as db
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
14
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
15 class Package:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
16
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
17 def __init__(self, filename, trackname, packagename, packagepath,
438
3a3cad8f6f60 review changes
Bjoern Ricks <bricks@intevation.de>
parents: 420
diff changeset
18 arch, md5sum):
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
19 self.filename = filename
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
20 self.trackname = trackname
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
21 self.name = packagename
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
22 self.sourcepath = packagepath
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
23 self.arch = arch
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
24 self.md5sum = md5sum
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
25
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
26
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
27 class CacheDb:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
28
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
29 def __init__(self, file):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
30 self.SELECT_PACKAGE_TMPL = """SELECT * FROM packages
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
31 WHERE filename = ?"""
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
32 self.file = file
420
414c77061d5a fixed last commit (db instead of sqlite3)
Bjoern Ricks <bricks@intevation.de>
parents: 419
diff changeset
33 self.conn = db.connect(file)
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
34 self.cursor = self.conn.cursor()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
35 self.init_db()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
36
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
37 def init_db(self):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
38 self.cursor.execute(
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
39 """CREATE TABLE IF NOT EXISTS packages (
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
40 filename TEXT PRIMARY KEY,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
41 trackname TEXT,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
42 packagename TEXT,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
43 sourcepath TEXT,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
44 arch TEXT,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
45 md5sum TEXT )""")
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
46 self.conn.commit()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
47
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
48
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
49 def add_package(self, package):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
50 self.cursor.execute(self.SELECT_PACKAGE_TMPL, (package.filename,))
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
51 row = self.cursor.fetchone()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
52 if not row:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
53 self.insert_package(package)
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
54 else:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
55 self.update_package(package)
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
56
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
57 def insert_package(self, package):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
58 INSERT_TMPL = """INSERT INTO packages VALUES (
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
59 ?, ?, ? ,? ,?, ?)"""
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
60 self.cursor.execute(INSERT_TMPL, (package.filename,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
61 package.trackname,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
62 package.name,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
63 package.sourcepath,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
64 package.arch,
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
65 package.md5sum))
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
66 self.conn.commit()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
67
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
68 def update_package(self, package):
416
4980f8d5014a first version of incremental copying debian packages to cachedir
Bjoern Ricks <bricks@intevation.de>
parents: 414
diff changeset
69 UPDATE_TMPL = """UPDATE packages set md5sum = ?
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
70 WHERE filename in (?)"""
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
71 self.cursor.execute(UPDATE_TMPL, (package.md5sum, package.filename))
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
72 self.conn.commit()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
73
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
74 def get_package(self, filename):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
75 self.cursor.execute(self.SELECT_PACKAGE_TMPL, (filename,))
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
76 row = self.cursor.fetchone()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
77 if not row:
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
78 return None
438
3a3cad8f6f60 review changes
Bjoern Ricks <bricks@intevation.de>
parents: 420
diff changeset
79 return Package(*row)
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
80
505
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
81 def get_old_packages(self, newpackages):
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
82 '''
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
83 Returns a list of all packages that are not in
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
84 newpackages and have a valid track. Therefore packages
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
85 from a not provided track aren't listed.
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
86 '''
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
87 SELECT_TMPL = """SELECT * FROM packages
505
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
88 WHERE filename not in (%s) and trackname in (%s)"""
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
89 newfiles = [p.filename for p in newpackages]
506
3a5dd6f98f71 fixed typo
Bjoern Ricks <bricks@intevation.de>
parents: 505
diff changeset
90 tracknames = list(set([p.trackname for p in newpackages]))
505
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
91 tmp1 = ", ".join(['?'] * len(newfiles))
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
92 tmp2 = ", ".join(['?'] * len(tracknames))
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
93
b7aad4cb58bb don't remove packages if a track is deactivated
Bjoern Ricks <bricks@intevation.de>
parents: 438
diff changeset
94 self.cursor.execute(SELECT_TMPL % (tmp1, tmp2), newfiles + tracknames)
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
95 return [Package(*row) for row in self.cursor.fetchall()]
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
96
416
4980f8d5014a first version of incremental copying debian packages to cachedir
Bjoern Ricks <bricks@intevation.de>
parents: 414
diff changeset
97 def remove_packages(self, packages):
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
98 DELET_TMPL = """DELETE FROM packages
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
99 WHERE filename in (%s)"""
416
4980f8d5014a first version of incremental copying debian packages to cachedir
Bjoern Ricks <bricks@intevation.de>
parents: 414
diff changeset
100 tmp = ", ".join(['?'] * len(packages))
4980f8d5014a first version of incremental copying debian packages to cachedir
Bjoern Ricks <bricks@intevation.de>
parents: 414
diff changeset
101 self.cursor.execute(DELET_TMPL % tmp,
4980f8d5014a first version of incremental copying debian packages to cachedir
Bjoern Ricks <bricks@intevation.de>
parents: 414
diff changeset
102 [package.filename for package in packages])
414
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
103 self.conn.commit()
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
104
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
105 def get_packages(self):
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
106 SELECT_TMPL = "SELECT * FROM packages"
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
107 self.cursor.execute(SELECT_TMPL)
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
108 return [Package(*row) for row in self.cursor.fetchall()]
e0539b483b04 moved data handling in publishdebianpackages into seperate module
Bjoern Ricks <bricks@intevation.de>
parents:
diff changeset
109
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)