1""" 

2Alter permissions for new tables and set default permissions 

3 

4@contact: Debian FTP Master <ftpmaster@debian.org> 

5@copyright: 2012 Ansgar Burchardt <ansgar@debian.org> 

6@license: GNU General Public License version 2 or later 

7""" 

8 

9# This program is free software; you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation; either version 2 of the License, or 

12# (at your option) any later version. 

13 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18 

19# You should have received a copy of the GNU General Public License 

20# along with this program; if not, write to the Free Software 

21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 

22 

23################################################################################ 

24 

25import psycopg2 

26from daklib.dak_exceptions import DBUpdateError 

27from daklib.config import Config 

28 

29################################################################################ 

30 

31 

32def do_update(self): 

33 print(__doc__) 

34 try: 

35 cnf = Config() 

36 

37 c = self.db.cursor() 

38 

39 c.execute("GRANT SELECT ON files_archive_map, policy_queue_byhand_file, policy_queue_upload, policy_queue_upload_binaries_map TO PUBLIC") 

40 c.execute("GRANT ALL ON files_archive_map, policy_queue_byhand_file, policy_queue_upload, policy_queue_upload_binaries_map TO ftpmaster") 

41 

42 c.execute("ALTER DEFAULT PRIVILEGES GRANT SELECT ON TABLES TO PUBLIC") 

43 c.execute("ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO ftpmaster") 

44 c.execute("ALTER DEFAULT PRIVILEGES GRANT SELECT ON SEQUENCES TO PUBLIC") 

45 c.execute("ALTER DEFAULT PRIVILEGES GRANT ALL ON SEQUENCES TO ftpmaster") 

46 c.execute("ALTER DEFAULT PRIVILEGES GRANT ALL ON FUNCTIONS TO ftpmaster") 

47 

48 c.execute("UPDATE config SET value = '78' WHERE name = 'db_revision'") 

49 self.db.commit() 

50 

51 except psycopg2.ProgrammingError as msg: 

52 self.db.rollback() 

53 raise DBUpdateError('Unable to apply sick update 78, rollback issued. Error message: {0}'.format(msg))