PK€‡6“×2EGG-INFO/dependency_links.txt PK€‡6\i™nnEGG-INFO/entry_points.txt[trac.plugins] hidevals.admin = hidevals.admin hidevals.api = hidevals.api hidevals.filter = hidevals.filter PK€‡6{'qEEEGG-INFO/PKG-INFOMetadata-Version: 1.0 Name: TracHideVals Version: 1.1 Summary: Hide ticket option values from certain users. Home-page: http://trac-hacks.org/wiki/HideValsPlugin Author: Noah Kantrowitz Author-email: coderanger@yahoo.com License: BSD Description: UNKNOWN Keywords: trac plugin Platform: UNKNOWN Classifier: Framework :: Trac PK€‡6¢|‘õ EGG-INFO/requires.txtTracWebAdminPK€‡6­¶,iiEGG-INFO/SOURCES.txtsetup.py TracHideVals.egg-info/PKG-INFO TracHideVals.egg-info/SOURCES.txt TracHideVals.egg-info/dependency_links.txt TracHideVals.egg-info/entry_points.txt TracHideVals.egg-info/requires.txt TracHideVals.egg-info/top_level.txt hidevals/__init__.py hidevals/admin.py hidevals/api.py hidevals/db_default.py hidevals/filter.py hidevals/templates/admin_hidevals.cs PK€‡6ûÔ¹ EGG-INFO/top_level.txthidevals PK€‡6“×2EGG-INFO/zip-safe PKbŸ†6hidevals/__init__.pyPK€‡6¿ËDu††hidevals/__init__.pyc;ò ÉÞFc@sdS(N((((s6build/bdist.darwin-8.9.1-i386/egg/hidevals/__init__.pys?sPKbŸ†6ûØå› › hidevals/admin.py# Created by Noah Kantrowitz on 2007-04-03. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. from trac.core import * from trac.web.chrome import ITemplateProvider from trac.ticket.api import TicketSystem from trac.util import sorted from webadmin.web_ui import IAdminPageProvider from api import HideValsSystem class HideValsAdminModule(Component): """WebAdmin sub-page for configuring the TracHideVals plugins.""" implements(IAdminPageProvider, ITemplateProvider) # IAdminPageProvider methods def get_admin_pages(self, req): if req.perm.has_permission('TICKET_ADMIN'): for field in TicketSystem(self.env).get_ticket_fields(): if 'options' in field: yield 'hidevals', 'Hide Values', field['name'], field['label'] def process_admin_request(self, req, cat, page, path_info): db = self.env.get_db_cnx() cursor = db.cursor() field = dict([(field['name'], field) for field in TicketSystem(self.env).get_ticket_fields()])[page] cursor.execute('SELECT sid, value FROM hidevals WHERE field = %s', (field['name'],)) values = cursor.fetchall() enabled = field['name'] not in HideValsSystem(self.env).dont_filter if req.method == 'POST': if req.args.get('add'): group = req.args['group'] value = req.args['value'] if (group, value) not in values: cursor.execute('INSERT INTO hidevals (sid, field, value) VALUES (%s, %s, %s)', (group, field['name'], value)) db.commit() elif req.args.get('remove'): sel = req.args.getlist('sel') for val in sel: group, value = val.split('#', 1) cursor.execute('DELETE FROM hidevals WHERE sid = %s AND field = %s AND value = %s', (group, field['name'], value)) db.commit() elif req.args.get('toggle'): new_val = HideValsSystem(self.env).dont_filter[:] if enabled: new_val.append(field['name']) else: new_val.remove(field['name']) self.config.set('hidevals', 'dont_filter', ', '.join(sorted(new_val))) self.config.save() req.redirect(req.href.admin(cat, page)) req.hdf['hidevals.field'] = field req.hdf['hidevals.values'] = [{'group': g, 'value': v} for g,v in values] req.hdf['hidevals.enabled'] = enabled return 'admin_hidevals.cs', None # ITemplateProvider methods def get_templates_dirs(self): from pkg_resources import resource_filename return [resource_filename(__name__, 'templates')] def get_htdocs_dirs(self): from pkg_resources import resource_filename return [('hidevals', resource_filename(__name__, 'htdocs'))] PK€‡6Ho+QMMhidevals/admin.pyc;ò ÉÞFc@sbdkTdklZdklZdklZdklZdk l Z de fd„ƒYZ dS( (s*(sITemplateProvider(s TicketSystem(ssorted(sIAdminPageProvider(sHideValsSystemsHideValsAdminModulecBs?tZdZeeeƒd„Zd„Zd„Zd„Z RS(s;WebAdmin sub-page for configuring the TracHideVals plugins.ccsd|iidƒoMxJt|iƒiƒD]/}d|jodd|d|dfVq)q)WndS(Ns TICKET_ADMINsoptionsshidevalss Hide Valuessnameslabel(sreqspermshas_permissions TicketSystemsselfsenvsget_ticket_fieldssfield(sselfsreqsfield((s3build/bdist.darwin-8.9.1-i386/egg/hidevals/admin.pysget_admin_pagess  cCs³|iiƒ} | iƒ}tgi}t|iƒi ƒD]} || d| fƒq;~ƒ|} |i d| dfƒ|i ƒ}| dt|iƒij} |idjo‘|iidƒo\|id}|id}||f|jo+|i d|| d|fƒ| iƒq%n|iidƒof|iid ƒ}xÚ|D]E} | id d ƒ\}}|i d || d|fƒ| iƒqOWnŠ|iid ƒovt|iƒi}| o|i| dƒn|i| dƒ|ii dddi!t"|ƒƒƒ|ii#ƒn|i$|i%i&||ƒƒn| |i(d>>hidevals/db_default.py# Created by Noah Kantrowitz on 2007-04-02. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. from trac.db import Table, Column name = 'hidevals' version = 1 tables = [ Table('hidevals', key=('sid', 'field', 'value'))[ Column('sid'), Column('field'), Column('value'), ], ]PK€‡6ŒMéI°°hidevals/db_default.pyc;ò ÉÞFc@s`dklZlZdZdZedddddfƒedƒedƒedƒfgZdS((sTablesColumnshidevalsiskeyssidsfieldsvalueN(strac.dbsTablesColumnsnamesversionstables(sColumnsTablesversionsnamestables((s8build/bdist.darwin-8.9.1-i386/egg/hidevals/db_default.pys?sPKbŸ†6Ńϡ ¡ hidevals/filter.py# Created by Noah Kantrowitz on 2007-04-02. # Copyright (c) 2007 Noah Kantrowitz. All rights reserved. from trac.core import * from trac.web.api import IRequestFilter try: set = set except NameError: from sets import Set as set from api import HideValsSystem class HideValsFilter(Component): """A filter to hide certain ticket field values.""" implements(IRequestFilter) # IRequestFilter methods def pre_process_request(self, req, handler): return handler def post_process_request(self, req, template, content_type): if req.perm.has_permission('TRAC_ADMIN'): # TRAC_ADMIN would have the filterer permissions by inheritance return template, content_type if req.perm.has_permission('TICKET_HIDEVALS'): fields = HideValsSystem(self.env).visible_fields(req) dont_filter = set(HideValsSystem(self.env).dont_filter) to_delete = [] base = None if req.path_info.startswith('/newticket'): base = 'newticket' elif req.path_info.startswith('/ticket'): base = 'ticket' if base: sub_hdf = req.hdf.getObj(base+'.fields').child() while sub_hdf: if sub_hdf.getObj('options') and sub_hdf.name() not in dont_filter: if sub_hdf.name() in fields: # If we have any values, filter what is there ###req.hdf.removeTree('newticket.fields.%s.options'%sub_hdf.name()) ###req.hdf['newticket.fields.%s.options'%sub_hdf.name()] = fields[sub_hdf.name()] # ???: Can a field have no options at this point? opts = sub_hdf.getObj('options').child() valid_opts = set(fields[sub_hdf.name()]) opts_to_delete = [] while opts: if opts.value() not in valid_opts: opts_to_delete.append(opts.name()) opts = opts.next() for opt in opts_to_delete: req.hdf.removeTree('%s.fields.%s.options.%s'%(base, sub_hdf.name(), opt)) else: # If there are no values for this user, remove the field entirely # NOTE: Deleting in place screws up the iteration, so do it all afterwards. to_delete.append(sub_hdf.name()) sub_hdf = sub_hdf.next() for field in to_delete: req.hdf.removeTree(base+'.fields.'+field) return template, content_typePK€‡6 Äu¢ï ï hidevals/filter.pyc;ò ÉÞFc@shdkTdklZy eZWn ej odklZnXdklZde fd„ƒYZ dS((s*(sIRequestFilter(sSet(sHideValsSystemsHideValsFiltercBs*tZdZeeƒd„Zd„ZRS(s-A filter to hide certain ticket field values.cCs|SdS(N(shandler(sselfsreqshandler((s4build/bdist.darwin-8.9.1-i386/egg/hidevals/filter.pyspre_process_requestscCs"|iidƒo||fSn|iidƒoàt|iƒi|ƒ}t t|iƒi ƒ} g} t } |iidƒo d} n|iidƒo d} n| o_|ii| dƒiƒ} x| o | idƒo| iƒ| joØ| iƒ|jo®| idƒiƒ} t || iƒƒ}g}xB| o:| iƒ|jo|i| iƒƒn| iƒ} qAWxH|D])}|iid | | iƒ|fƒqŠWqÒ| i| iƒƒn| iƒ} qÐWx*| D]}|ii| d |ƒqêWqn||fSdS( Ns TRAC_ADMINsTICKET_HIDEVALSs /newtickets newtickets/ticketstickets.fieldssoptionss%s.fields.%s.options.%ss.fields.(sreqspermshas_permissionstemplates content_typesHideValsSystemsselfsenvsvisible_fieldssfieldsssets dont_filters to_deletesNonesbases path_infos startswithshdfsgetObjschildssub_hdfsnamesoptss valid_optssopts_to_deletesvaluesappendsnextsopts removeTreesfield(sselfsreqstemplates content_typesoptsfieldss valid_optssopts_to_deletesfieldsbases dont_filterssub_hdfs to_deletesopts((s4build/bdist.darwin-8.9.1-i386/egg/hidevals/filter.pyspost_process_requestsD  #+$(s__name__s __module__s__doc__s implementssIRequestFilterspre_process_requestspost_process_request(((s4build/bdist.darwin-8.9.1-i386/egg/hidevals/filter.pysHideValsFilters   N( s trac.cores trac.web.apisIRequestFilterssets NameErrorssetssSetsapisHideValsSystems ComponentsHideValsFilter(sHideValsSystemssetsIRequestFiltersHideValsFilter((s4build/bdist.darwin-8.9.1-i386/egg/hidevals/filter.pys?s   PKbŸ†6$û UU$hidevals/templates/admin_hidevals.cs

Values for

Add Field Mask

Allow a group to see the given field value

Filtering for this field is currently enableddisabled.
  Group Value
PK€‡6“×2¤EGG-INFO/dependency_links.txtPK€‡6\i™nn¤<EGG-INFO/entry_points.txtPK€‡6{'qEE¤áEGG-INFO/PKG-INFOPK€‡6¢|‘õ ¤UEGG-INFO/requires.txtPK€‡6­¶,ii¤”EGG-INFO/SOURCES.txtPK€‡6ûÔ¹ ¤/EGG-INFO/top_level.txtPK€‡6“×2¤lEGG-INFO/zip-safePKbŸ†6¤œhidevals/__init__.pyPK€‡6¿ËDu††¤Îhidevals/__init__.pycPKbŸ†6ûØå› › ¤‡hidevals/admin.pyPK€‡6Ho+QMM¤Qhidevals/admin.pycPKbŸ†6À0‡Hóó¤Î!hidevals/api.pyPK€‡6cÝådOO¤î3hidevals/api.pycPKbŸ†6/ÙÕ>>>¤kIhidevals/db_default.pyPK€‡6ŒMéI°°¤ÝJhidevals/db_default.pycPKbŸ†6Ńϡ ¡ ¤ÂLhidevals/filter.pyPK€‡6 Äu¢ï ï ¤“Xhidevals/filter.pycPKbŸ†6$û UU$¤³bhidevals/templates/admin_hidevals.csPK´Ji