def process_request(self, req): req.perm.require('CARDS_ADMIN') action = req.args.get('action') if 'POST' == req.method: if action == 'add_card': card = self._parse_card(req) stack = self._parse_stack(req) if not Card.add(self.env, card, stack): self._send_conflict(req) self._send_card(req, card) elif action == 'update_card': card = self._parse_card(req) new_stack = self._parse_stack(req) old_stack = self._parse_stack(req, True) if not Card.update(self.env, card, new_stack, old_stack): self._send_conflict(req) self._send_card(req, card) elif action == 'delete_card': card = self._parse_card(req) stack = self._parse_stack(req) if not Card.delete_by_id(self.env, card.id, stack): self._send_conflict(req) req.send_no_content() elif 'GET' == req.method: format = req.args.get('format') if format == 'json': stack_names = req.args.get('stack', '').split('|') cards = Card.select_by_stacks(self.env, stack_names) stacks = CardStack.select_by_names(self.env, stack_names) self._send_cards_and_stacks(req, cards, stacks, stack_names) self._send_error(req, 'Bad request', 400)