def product_admincmd_mgr(self, prefix): try: product_env = ProductEnvironment.lookup_env(self.env, prefix) except LookupError: raise AdminCommandError('Unknown product %s' % (prefix, )) else: return AdminCommandManager(product_env)
def product_admincmd_mgr(self, prefix): try: product_env = ProductEnvironment.lookup_env(self.env, prefix) except LookupError: raise AdminCommandError('Unknown product %s' % (prefix,)) else: return AdminCommandManager(product_env)
def post_process_request(self, req, template, data, content_type): """Append necessary ticket data """ try: tm = self._get_ticket_module() except TracError: # no ticket module so no create ticket button return template, data, content_type if (template, data, content_type) != (None,) * 3: # TODO: Check ! if data is None: data = {} dum_req = dummy_request(self.env) dum_req.perm = req.perm ticket = Ticket(self.env) tm._populate(dum_req, ticket, False) all_fields = dict([f['name'], f] for f in tm._prepare_fields(dum_req, ticket) if f['type'] == 'select') product_field = all_fields.get('product') if product_field: # When at product scope, set the default selection to the # product at current scope. When at global scope the default # selection is determined by [ticket] default_product if self.env.product and \ self.env.product.prefix in product_field['options']: product_field['value'] = self.env.product.prefix # Transform the options field to dictionary of product # attributes and filter out products for which user doesn't # have TICKET_CREATE permission product_field['options'] = [ dict(value=p, new_ticket_url=dum_req.href.products(p, 'newticket'), description=ProductEnvironment.lookup_env(self.env, p) .product.name ) for p in product_field['options'] if req.perm.has_permission('TICKET_CREATE', Neighborhood('product', p) .child(None, None))] else: msg = _("Missing ticket field '%(field)s'.", field='product') if ProductTicketModule is not None and \ self.env[ProductTicketModule] is not None: # Display warning alert to users add_warning(req, msg) else: # Include message in logs since this might be a failure self.log.warning(msg) data['qct'] = { 'fields': [all_fields[k] for k in self.qct_fields if k in all_fields], 'hidden_fields': [all_fields[k] for k in all_fields.keys() if k not in self.qct_fields] } return template, data, content_type
def post_process_request(self, req, template, data, content_type): """Append necessary ticket data """ try: tm = self._get_ticket_module() except TracError: # no ticket module so no create ticket button return template, data, content_type if (template, data, content_type) != (None, ) * 3: # TODO: Check ! if data is None: data = {} req = dummy_request(self.env) ticket = Ticket(self.env) tm._populate(req, ticket, False) all_fields = dict([f['name'], f] for f in tm._prepare_fields(req, ticket) if f['type'] == 'select') product_field = all_fields['product'] if product_field: if self.env.product: product_field['value'] = self.env.product.prefix else: # Global scope, now check default_product_prefix is valid default_prefix = self.config.get('multiproduct', 'default_product_prefix') try: ProductEnvironment.lookup_env(self.env, default_prefix) except LookupError: product_field['value'] = product_field['options'][0] else: product_field['value'] = default_prefix data['qct'] = { 'fields': [all_fields[k] for k in self.qct_fields if k in all_fields], 'hidden_fields': [ all_fields[k] for k in all_fields.keys() if k not in self.qct_fields ] } return template, data, content_type
def post_process_request(self, req, template, data, content_type): """Append necessary ticket data """ try: tm = self._get_ticket_module() except TracError: # no ticket module so no create ticket button return template, data, content_type if (template, data, content_type) != (None,) * 3: # TODO: Check ! if data is None: data = {} req = dummy_request(self.env) ticket = Ticket(self.env) tm._populate(req, ticket, False) all_fields = dict([f['name'], f] for f in tm._prepare_fields(req, ticket) if f['type'] == 'select') product_field = all_fields['product'] if product_field: if self.env.product: product_field['value'] = self.env.product.prefix else: # Global scope, now check default_product_prefix is valid default_prefix = self.config.get('multiproduct', 'default_product_prefix') try: ProductEnvironment.lookup_env(self.env, default_prefix) except LookupError: product_field['value'] = product_field['options'][0] else: product_field['value'] = default_prefix data['qct'] = { 'fields': [all_fields[k] for k in self.qct_fields if k in all_fields], 'hidden_fields': [all_fields[k] for k in all_fields.keys() if k not in self.qct_fields] } return template, data, content_type
def admin_url(prefix): env = ProductEnvironment.lookup_env(self.env, prefix) href = ProductEnvironment.resolve_href(env, self.env) return href.admin()