1 | # -*- coding: utf-8 -*- |
---|
2 | # |
---|
3 | # Copyright (C) 2007 Armin Ronacher <armin.ronacher@active-4.com> |
---|
4 | # Copyright (C) 2008 Michael Renzmann <mrenzmann@otaku42.de> |
---|
5 | # Copyright (C) 2015 Ryan J Ollos <ryan.j.ollos@gmail.com> |
---|
6 | # All rights reserved. |
---|
7 | # |
---|
8 | # This software is licensed as described in the file COPYING, which |
---|
9 | # you should have received as part of this distribution. |
---|
10 | |
---|
11 | from trac.core import * |
---|
12 | from trac.db.api import DatabaseManager |
---|
13 | from trac.db.schema import Column, Index, Table |
---|
14 | from trac.env import IEnvironmentSetupParticipant |
---|
15 | |
---|
16 | schema_version = 3 |
---|
17 | schema_version_name = 'tracpaste_version' |
---|
18 | |
---|
19 | schema = [ |
---|
20 | Table('pastes', key='id')[ |
---|
21 | Column('id', auto_increment=True), |
---|
22 | Column('title'), |
---|
23 | Column('author'), |
---|
24 | Column('mimetype'), |
---|
25 | Column('data'), |
---|
26 | Column('time', type='int'), |
---|
27 | Index(['id']), |
---|
28 | Index(['time']) |
---|
29 | ], |
---|
30 | ] |
---|
31 | |
---|
32 | |
---|
33 | class TracpasteSetup(Component): |
---|
34 | |
---|
35 | implements(IEnvironmentSetupParticipant) |
---|
36 | |
---|
37 | def __init__(self): |
---|
38 | self.dbm = DatabaseManager(self.env) |
---|
39 | |
---|
40 | # IEnvironmentSetupParticipant methods |
---|
41 | |
---|
42 | def environment_created(self): |
---|
43 | self.dbm.create_tables(schema) |
---|
44 | self.dbm.set_database_version(schema_version, schema_version_name) |
---|
45 | |
---|
46 | def environment_needs_upgrade(self, db=None): |
---|
47 | return self.dbm.needs_upgrade(schema_version, schema_version_name) |
---|
48 | |
---|
49 | def upgrade_environment(self, db=None): |
---|
50 | if not self.dbm.get_database_version(schema_version_name) and \ |
---|
51 | 'pastes' in self.dbm.get_table_names(): |
---|
52 | self.dbm.set_database_version(1, schema_version_name) |
---|
53 | |
---|
54 | if not self.dbm.get_database_version(schema_version_name): |
---|
55 | self.environment_created() |
---|
56 | else: |
---|
57 | self.dbm.upgrade(schema_version, schema_version_name, |
---|
58 | 'tracpaste.upgrades') |
---|