Changeset 3345
- Timestamp:
- 03/11/08 18:52:53 (9 months ago)
- Files:
-
- checklistplugin/0.11/trac_checklist/db.py (modified) (5 diffs)
- checklistplugin/0.11/trac_checklist/macros.py (modified) (4 diffs)
- checklistplugin/0.11/trac_checklist/updater.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
checklistplugin/0.11/trac_checklist/db.py
r3337 r3345 16 16 def checklist_setValue(context, field, value, who): 17 17 "Adds or updates a value for the context field specified." 18 19 def checklist_updateFields(fields): 20 "Performs setValue calls based on the 4-tuple list fields" 18 21 19 22 class ChecklistDBComponent(Component): … … 62 65 63 66 def checklist_setValue(self, context, field, value, who): 64 when = datetime.now().isoformat(':') 67 self.updateField(context, field, value, who) 68 self.commit() 69 70 def checklist_updateFields(self, fields): 71 for context, field, value, who in fields: 72 self.updateField(context, field, value, who) 73 self.commit() 74 75 # 76 # Database access/update methods 77 def updateField(self, context, field, value, who): 78 when = datetime.now().isoformat(' ') 65 79 self.log.debug('checklist_setValue(%r, %r, %r, %r, %r)' % 66 80 (context, field, value, who, when)) … … 71 85 """, context, field): 72 86 73 self. commit("""87 self.execute(""" 74 88 UPDATE checklist_value 75 89 SET value = %s, … … 80 94 """, value, when, who, context, field) 81 95 else: 82 self. commit("""96 self.execute(""" 83 97 INSERT INTO checklist_value( 84 98 context, field, value, updated_when, updater) … … 176 190 177 191 def rollback(self): 178 self. db.rollback()192 self.env.get_db_cnx().rollback() 179 193 180 194 def commit(self, sql=None, *params, **kw): 181 195 if sql is not None: 182 196 cursor = self.execute(sql, *params, **kw) 183 self. db.commit()197 self.env.get_db_cnx().commit() 184 198 checklistplugin/0.11/trac_checklist/macros.py
r3344 r3345 46 46 break 47 47 section = flags.get('section') 48 can_set = str(flags.get('can-set', '')) 49 can_get = str(flags.get('can-get', '')) 50 can_change = str(flags.get('can-change', '')) 48 51 if section: 49 52 context += '::' + section … … 55 58 def replacer(match): 56 59 op, field = match.groups() 57 fn = getattr(self, 'op_' + (op or 'checkbox'), None) 60 op, argstr = (op.split(':', 1) + [''])[:2] 61 fn = getattr(self, 62 'op_' + (op or 'checkbox').replace('-', '_'), None) 58 63 if fn is not None: 59 return fn(field, data, notes) 64 args = [arg.strip() for arg in argstr.split(':')] 65 return fn(field, data, notes, *(arg for arg in args if arg)) 60 66 else: 61 67 return 'ERROR: No function for operation %r' % op … … 68 74 '<FORM method="GET" action="%s"' % href, 69 75 '>', 76 '<INPUT type="hidden" name="can-set:*" value=%r>' % can_set, 77 '<INPUT type="hidden" name="can-get:*" value=%r>' % can_get, 78 '<INPUT type="hidden" name="can-change:*" value=%r>' % can_change, 70 79 '<INPUT type="hidden" name="__backpath__" value=%r>' 71 80 % formatter.req.href(formatter.req.path_info), … … 112 121 )) 113 122 123 def op_can_set(self, field, data, notes, right=''): 124 return ''.join(( 125 '<INPUT type="hidden" name=%r value=%r>' % 126 ('can-set:' + field, right) 127 )) 128 129 def op_can_get(self, field, data, notes, right=''): 130 return ''.join(( 131 '<INPUT type="hidden" name=%r value=%r>' % 132 ('can-get:' + field, right) 133 )) 134 135 def op_can_change(self, field, data, notes, right=''): 136 return ''.join(( 137 '<INPUT type="hidden" name=%r value=%r>' % 138 ('can-change:' + field, right) 139 )) 140 checklistplugin/0.11/trac_checklist/updater.py
r3344 r3345 62 62 if isinstance(fields, basestring): 63 63 fields = (fields,) 64 updates =[] 64 65 for name in set(fields): 65 66 value = bool(args.get(name)) and 'on' or '' 66 67 oldvalue = bool(args.get('old:' + name)) and 'on' or '' 68 can_set = args.get('can-set:' + name) or args.get('can-set:*') 69 can_get = args.get('can-get:' + name) or args.get('can-get:*') 70 can_change = args.get('can-change:' + name) \ 71 or args.get('can-change:*') 67 72 if value != oldvalue: 68 self.updateField(context, name, value, who) 73 if value: 74 perm = can_set or can_change 75 else: 76 perm = can_get or can_change 77 perm = str(perm) 78 if perm and not req.perm.has_permission(perm): 79 raise PermissionDenied( 80 'You must have %r to do this.' % perm) 81 updates.append((context, name, value, who)) 82 self.updateFields(updates) 69 83 except Exception, e: 70 84 code = getattr(e, '__http_status__', 500) … … 88 102 req.write('OK') 89 103 90 def updateField (self, context, name, value, who):104 def updateFields(self, updates): 91 105 # Broadcast the updates. 92 106 for observer in self.clobservers: 93 observer.checklist_ setValue(context, name, value, who)107 observer.checklist_updateFields(updates) 94 108
