On Tuesday, February 7, 2017 at 2:39:43 AM UTC-8, Thomas Moschny wrote: > > Hi, > > we have some (internal) plugin that modifies ticket field properties > on the fly. It hooks into /ticket and /query requests via > IRequestFilter.post_process_request() and modifies data['fields']. > > This worked fine for older Trac versions. But newer Trac seems not to > use 'data' in /query requests anymore. Instead the ticket field > properties are passed in the global JS 'properties' variable (via > add_script_data()). > > Now, in my plugin's post_process_request hook, I can also call > add_script_data(). Unfortunately, updating 'properties' doesn't really > work that way, as one can only replace whole keys. > > One easy way would be to access req.chrome['script_data'] directly, > but that feels a bit like cheating (working around the API). > > Another (more sledgehammery) way would be to add a JS snippet that > modifies 'properties'. > > Is there some clean way in between? > > Thanks, > Thomas >
Looks like you are right about the "properties" dict not being a part of "data": https://trac.edgewall.org/browser/tags/trac-1.2/trac/ticket/query.py?marks=1149-1155#L1148 I haven't done any testing, but I suppose we could put "properties" in "data" so that it can be modified in post_process_request. Grabbing it from req.chrome['script_data'] sounds like a good workaround. If you find a modification to Trac that would make your job easier, feel free to propose a patch. What changes do you need to make to the "properties" dict for your plugin to function correctly? - Ryan -- You received this message because you are subscribed to the Google Groups "Trac Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to trac-dev+unsubscr...@googlegroups.com. To post to this group, send email to trac-dev@googlegroups.com. Visit this group at https://groups.google.com/group/trac-dev. For more options, visit https://groups.google.com/d/optout.