Changeset 1225

Show
Ignore:
Timestamp:
09/01/06 07:57:59 (2 years ago)
Author:
Blackhex
Message:

ScreenshotsPlugin:

Changes with 0.10 supported features.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • screenshotsplugin/0.10/tracscreenshots/api.py

    r1179 r1225  
    5151          " screenshot_component c, screenshot_version v WHERE c.component" \ 
    5252          " = %s AND v.version = %s AND s.id = c.screenshot AND s.id =" \ 
    53           " v.screenshot;
     53          " v.screenshot ORDER BY s.id
    5454        self.log.debug(sql % (component, version)) 
    5555        cursor.execute(sql, (component, version)) 
  • screenshotsplugin/0.10/tracscreenshots/core.py

    r1220 r1225  
    11from tracscreenshots.api import * 
    22from trac.core import * 
    3 from trac.web.chrome import INavigationContributor, ITemplateProvider, add_stylesheet 
     3from trac.web.chrome import INavigationContributor, ITemplateProvider, \ 
     4  add_stylesheet 
    45from trac.web.main import IRequestHandler 
    56from trac.perm import IPermissionRequestor 
     7from trac.config import Option 
    68from trac.util import Markup, format_datetime, TracError 
     9from trac.util.html import html 
    710import re, os, os.path, time, mimetypes 
    811 
     
    2427      IPermissionRequestor) 
    2528 
     29    title = Option('screenshots', 'title', 'Screenshots', 
     30      'Main navigation bar button title.') 
     31    path = Option('screenshots', 'path', '/var/lib/trac/screenshots', 
     32      'Path where to store uploaded screenshots.') 
     33    ext = Option('screenshots', 'ext', 'jpg png', 
     34      'List of screenshot file extensions that can be uploaded. Must be' 
     35      ' supported by ImageMagick.') 
     36    component = Option('screenshots', 'component', '', 
     37      'Name of default component.') 
     38    version = Option('screenshots', 'version', '', 
     39      'Name of default version.') 
     40    show_name = Option('screenshots', 'show_name', True, 
     41      'Option to disable display of screenshot name and author.') 
     42 
    2643    # IPermissionRequestor methods. 
    2744    def get_permission_actions(self): 
     
    4360    def get_navigation_items(self, req): 
    4461        if req.perm.has_permission('SCREENSHOTS_VIEW'): 
    45             yield 'mainnav', 'screenshots', Markup('<a href="%s">%s</a>' % \ 
    46               (self.env.href.screenshots(), self.env.config.get('screenshots', 
    47               'title', 'Screenshots'))) 
     62            yield 'mainnav', 'screenshots', html.a(self.title, 
     63              href = req.href.screenshots()) 
    4864 
    4965    # IRequestHandler methods. 
     
    6581        cursor = db.cursor() 
    6682 
    67         # Get config variables. 
    68         self.title = self.env.config.get('screenshots', 'title', 'Screenshots') 
    69         self.path = self.env.config.get('screenshots', 'path', 
    70           '/var/lib/trac/screenshots') 
    71         self.component = self.env.config.get('screenshots', 'component') 
    72         self.version = self.env.config.get('screenshots', 'version') 
    73         self.show_name = self.env.config.get('screenshots', 'show_name', 
    74           'true') in ('true', 'True', '1') 
    7583        self.log.debug('path: %s' % (self.path,)) 
    7684 
     
    117125        req.hdf['screenshots.versions'] = versions 
    118126        req.hdf['screenshots.version'] = version 
    119         req.hdf['screenshots.href'] = self.env.href.screenshots() 
     127        req.hdf['screenshots.href'] = req.href.screenshots() 
    120128        req.hdf['screenshots.title'] = self.title 
    121129        req.hdf['screenshots.show_name'] = self.show_name 
     
    197205                reg = re.compile(r'^(.*)[.](.*)$') 
    198206                result = reg.match(filename) 
    199                 if not result.group(2) in ('png', 'jpg'): 
     207                if result: 
     208                    if not result.group(2).lower() in self.ext.split(' '): 
     209                        raise TracError('Unsupported uploaded file type.') 
     210                else: 
    200211                    raise TracError('Unsupported uploaded file type.') 
    201212 
  • screenshotsplugin/0.10/tracscreenshots/db/db1.py

    r1052 r1225  
    1 # Commont SQL statements 
    2 sql = ["""CREATE TABLE screenshot ( 
    3   id integer PRIMARY KEY, 
    4   name text, 
    5   description text, 
    6   time integer, 
    7   author text, 
    8   large_file text, 
    9   medium_file text, 
    10   small_file text, 
    11   component text, 
    12   version text 
    13 );""", 
    14 """INSERT INTO system (name, value) VALUES ('screenshots_version', '1')"""] 
     1from trac.db import Table, Column, Index, DatabaseManager 
    152 
    16 # PostgreSQL statements 
    17 postgre_sql = ["""CREATE TABLE screenshot ( 
    18   id serial PRIMARY KEY
    19   name text
    20   description text
    21   time integer
    22   author text
    23   large_file text
    24   medium_file text
    25   small_file text
    26   component text
    27   version text 
    28 );""", 
    29 """INSERT INTO system (name, value) VALUES ('screenshots_version', '1')"""
     3tables = [ 
     4  Table('screenshot', key = 'id')[ 
     5    Column('id', type = 'integer', auto_increment = True)
     6    Column('name')
     7    Column('description')
     8    Column('time', type = 'integer')
     9    Column('author')
     10    Column('large_file')
     11    Column('medium_file')
     12    Column('small_file')
     13    Column('component')
     14    Column('version') 
     15  ] 
     16
    3017 
    3118def do_upgrade(env, cursor): 
    32     if env.config.get('trac', 'database').startswith('postgres'): 
    33         for statement in postgre_sql: 
     19    db_connector, _ = DatabaseManager(env)._get_connector() 
     20 
     21    # Create tables 
     22    for table in tables: 
     23        for statement in db_connector.to_sql(table): 
    3424            cursor.execute(statement) 
    35     else: 
    36         for statement in sql: 
    37             cursor.execute(statement) 
     25 
     26    # Set database schema version. 
     27    cursor.execute("INSERT INTO system (name, value) VALUES" 
     28      " ('screenshots_version', '1')") 
  • screenshotsplugin/0.10/tracscreenshots/db/db2.py

    r1179 r1225  
    1 # Commont SQL statements 
    2 pre_sql = ["""ALTER TABLE screenshot RENAME TO tmp_screenshot""", 
    3 """CREATE TABLE screenshot ( 
    4   id integer PRIMARY KEY, 
    5   name text, 
    6   description text, 
    7   time integer, 
    8   author text, 
    9   tags text, 
    10   large_file text, 
    11   medium_file text, 
    12   small_file text 
    13 )""", 
    14 """CREATE TABLE screenshot_component ( 
    15   id integer PRIMARY KEY, 
    16   screenshot integer, 
    17   component text 
    18 )""", 
    19 """CREATE TABLE screenshot_version ( 
    20   id integer PRIMARY KEY, 
    21   screenshot integer, 
    22   version text 
    23 )"""] 
     1from trac.db import Table, Column, Index, DatabaseManager 
    242 
    25 post_sql = ["""DROP TABLE tmp_screenshot""", 
    26 """UPDATE system SET value = '2' WHERE name = 'screenshots_version'"""] 
    27  
    28 # PostgreSQL statements 
    29 pre_postgre_sql = ["""ALTER TABLE screenshot RENAME TO tmp_screenshot"""
    30 """CREATE TABLE screenshot ( 
    31   id serial PRIMARY KEY
    32   name text
    33   description text
    34   time integer
    35   author text
    36   tags, text
    37   large_file text
    38   medium_file text, 
    39   small_file text 
    40 )"""
    41 """CREATE TABLE screenshot_component ( 
    42   id serial PRIMARY KEY, 
    43   screenshot integer
    44   component text 
    45 )""", 
    46 """CREATE TABLE screenshot_version ( 
    47   id serial PRIMARY KEY
    48   screenshot integer, 
    49   version text 
    50 )"""
     3tables = [ 
     4  Table('screenshot', key = 'id') 
     5  [ 
     6    Column('id', type = 'integer', auto_increment = True), 
     7    Column('name')
     8    Column('description'), 
     9    Column('time', type = 'integer')
     10    Column('author')
     11    Column('tags')
     12    Column('large_file')
     13    Column('medium_file')
     14    Column('small_file')
     15  ]
     16  Table('screenshot_component', key = 'id') 
     17  [ 
     18     Column('id', type = 'integer', auto_increment = True)
     19     Column('screenshot', type = 'integer'), 
     20     Column('component') 
     21  ]
     22  Table('screenshot_version', key = 'id') 
     23  [ 
     24    Column('id', type = 'integer', auto_increment = True), 
     25    Column('screenshot', type = 'integer')
     26    Column('version') 
     27  ] 
     28
    5129 
    5230def do_upgrade(env, cursor): 
    53     # Prepare old and new tables. 
    54     if env.config.get('trac', 'database').startswith('postgres'): 
    55         for statement in pre_postgre_sql: 
    56             cursor.execute(statement) 
    57     else: 
    58         for statement in pre_sql: 
     31    db_connector, _ = DatabaseManager(env)._get_connector() 
     32 
     33    # Backup old screenshot table. 
     34    cursor.execute("CREATE TEMPORARY TABLE screenshot_old AS SELECT * FROM screenshot") 
     35    cursor.execute("DROP TABLE screenshot") 
     36 
     37    # Create new tables 
     38    for table in tables: 
     39        for statement in db_connector.to_sql(table): 
    5940            cursor.execute(statement) 
    6041 
     
    6344          'medium_file', 'small_file', 'component', 'version') 
    6445    sql = "SELECT id, name, description, time, author, large_file," \ 
    65           " medium_file, small_file, component, version FROM tmp_screenshot
     46          " medium_file, small_file, component, version FROM screenshot_old
    6647    cursor.execute(sql) 
    6748    screenshots = [] 
     
    8667        cursor.execute(sql, (screenshot['id'], screenshot['version'])) 
    8768 
    88     # Finish upgrade. 
    89     for statement in post_sql: 
    90         cursor.execute(statement) 
     69    # Delete temporary table and set database schema version. 
     70    cursor.execute("DROP TABLE screenshot_old") 
     71    cursor.execute("UPDATE system SET value = '2' WHERE name =" 
     72      " 'screenshots_version'") 
  • screenshotsplugin/0.10/tracscreenshots/init.py

    r1179 r1225  
    2929        db_version = self._get_db_version(cursor) 
    3030 
     31 
    3132        # Perform incremental upgrades 
    3233        for I in range(db_version + 1, last_db_version + 1): 
    3334            script_name  = 'db%i' % (I) 
    34             try: 
    35                 module = __import__('tracscreenshots.db.%s' % (script_name), 
    36                 globals(), locals(), ['do_upgrade']) 
    37                 module.do_upgrade(self.env, cursor) 
    38             except: 
    39                 raise TracError('Error upgrading database to version %i' % I) 
     35            module = __import__('tracscreenshots.db.%s' % (script_name), 
     36            globals(), locals(), ['do_upgrade']) 
     37            module.do_upgrade(self.env, cursor) 
    4038 
    4139    def _get_db_version(self, cursor): 
  • screenshotsplugin/0.10/tracscreenshots/wiki.py

    r1179 r1225  
    22from trac.core import * 
    33from trac.wiki import IWikiSyntaxProvider 
     4from trac.util.html import html 
    45 
    56class ScreenshotsWiki(Component): 
     
    3637                version = self._get_version_by_name(versions, 
    3738                  screenshot['versions'][0]) 
    38                 return '<a href="%s?component=%s;version=%s;id=%s" title="%s">' \ 
    39                   '%s</a>' % (self.env.href.screenshots(), component['id'], 
    40                   version['id'], screenshot['id'], screenshot['name'], label
     39                return html.a(label, href = formatter.href.screenshots() 
     40                  + '?component=%s;version=%s;id=%s' % (component['id'], 
     41                  version['id'], screenshot['id']), title = screenshot['name']
    4142            else: 
    42                 return '<a href="%s" class="missing">%s?</a>' % ( 
    43                   self.env.href.screenshots(), label
     43                return html.a(label, href = formatter.href.screenshots(), 
     44                  title = params, class_ = 'missing'
    4445 
    4546    def _get_component_by_name(self, components, name):