def update_action(self, action=None, context=None): result = {} action_uid = self.params('action_uid') try: if action_uid: action = get_obj(int(action_uid)) else: action = self._get_start_action() except Exception: return {} context_uid = self.params('context_uid') try: if context_uid: context = get_obj(int(context_uid)) except Exception: pass dace_ui_api = get_current_registry().getUtility( IDaceUIAPI, 'dace_ui_api') body, resources = dace_ui_api.get_action_body(context, self.request, action, include_resources=True) result = {'body': body} result.update( get_components_data(**get_all_updated_data( action, self.request, context, self, resources=resources))) return result
def update_action(self, action=None, context=None): result = {} action_uid = self.params('action_uid') try: if action_uid: action = get_obj(int(action_uid)) else: action = self._get_start_action() except Exception: return {} context_uid = self.params('context_uid') try: if context_uid: context = get_obj(int(context_uid)) except Exception: pass dace_ui_api = get_current_registry().getUtility( IDaceUIAPI, 'dace_ui_api') body, resources = dace_ui_api.get_action_body( context, self.request, action, include_resources=True) result = {'body': body} result.update(get_components_data( **get_all_updated_data( action, self.request, context, self, resources=resources))) return result
def support_proposal(self): localizer = self.request.localizer result = self._execute_action('proposalmanagement', 'support', {}) root = self.request.root if result.get('state'): result['action'] = self.request.resource_url( self.context, 'novaideoapi', query={ 'op': 'withdraw_token_proposal', 'action': 'support' }) result['title'] = localizer.translate(_('Withdraw my token')) result['opposit_action'] = self.request.resource_url( self.context, 'novaideoapi', query={'op': 'oppose_proposal'}) result['opposit_title'] = localizer.translate(_('Oppose')) result['opposition_counter'] = self.context.len_opposition user = get_current() result['hastoken'] = True if user.get_len_free_tokens( root=root) else False result.update( get_components_data( **get_all_updated_data(result.pop('action_obj', None), self.request, self.context, self))) return result
def update_action_view(self): result = self._update_action_view() action = result.pop('action_obj') action_uid = result.pop('action_uid') view_data = result.pop('view_data') result.update(get_components_data( **get_all_updated_data( action, self.request, self.context, self, view_data=view_data, action_uid=action_uid))) return result
def update_action_view(self): result = self._update_action_view() action = result.pop('action_obj') action_uid = result.pop('action_uid') view_data = result.pop('view_data') result.update( get_components_data(**get_all_updated_data(action, self.request, self.context, self, view_data=view_data, action_uid=action_uid))) return result
def remove_comment(self): comment_oid = get_oid(self.context, None) comment_root = self.context.root comment_parent = self.context.comment_parent channel = self.context.channel subject = channel.subject or self.request.root result = self._update_action_view('remove') action = result.pop('action_obj') result.pop('view_data') if subject: result.update(get_components_data( **get_all_updated_data( action, self.request, subject, self, channel=channel, comment_oid=comment_oid, comment_root=comment_root, comment_parent=comment_parent))) return result
def withdraw_token_idea(self): localizer = self.request.localizer result = self._execute_action('ideamanagement', 'withdraw_token', {}) root = self.request.root if result.get('state'): previous_action = self.params('action') result['action'] = self.request.resource_url( self.context, 'novaideoapi', query={'op': previous_action + '_idea'}) result['title'] = localizer.translate( _('Oppose') if previous_action == 'oppose' else _('Support')) result['withdraw'] = True user = get_current() result['hastoken'] = True if user.get_len_free_tokens(root=root) else False result.update(get_components_data( **get_all_updated_data( result.pop('action_obj', None), self.request, self.context, self))) return result
def remove_comment(self): comment_oid = get_oid(self.context, None) comment_root = self.context.root comment_parent = self.context.comment_parent channel = self.context.channel subject = channel.subject or self.request.root result = self._update_action_view('remove') action = result.pop('action_obj') result.pop('view_data') if subject: result.update( get_components_data( **get_all_updated_data(action, self.request, subject, self, channel=channel, comment_oid=comment_oid, comment_root=comment_root, comment_parent=comment_parent))) return result
def __call__(self): vote = self.params('vote') for item, data in self.context.corrections.items(): self.execute({'item': item, 'vote': vote, 'content': data.get('content')}) user = get_current() values = { 'title': self.context.get_adapted_title(get_current()), 'text': self.context.get_adapted_text(get_current()), 'description': self.context.get_adapted_description(user), } body = self.content(args=values, template=self.template)['body'] result = {'body': body} if self.behaviors_instances.values(): action = list(self.behaviors_instances.values())[0] result.update(get_components_data( **get_all_updated_data( action, self.request, self.context, self))) return result
def withdraw_token_idea(self): localizer = self.request.localizer result = self._execute_action('ideamanagement', 'withdraw_token', {}) root = self.request.root if result.get('state'): previous_action = self.params('action') result['action'] = self.request.resource_url( self.context, 'novaideoapi', query={'op': previous_action + '_idea'}) result['title'] = localizer.translate( _('Oppose') if previous_action == 'oppose' else _('Support')) result['withdraw'] = True user = get_current() result['hastoken'] = True if user.get_len_free_tokens( root=root) else False result.update( get_components_data( **get_all_updated_data(result.pop('action_obj', None), self.request, self.context, self))) return result
def oppose_idea(self): localizer = self.request.localizer user = get_current() root = self.request.root result = self._execute_action('ideamanagement', 'oppose', {}) if result.get('state'): result['action'] = self.request.resource_url( self.context, 'novaideoapi', query={'op': 'withdraw_token_idea', 'action': 'oppose'}) result['title'] = localizer.translate(_('Withdraw my token')) result['opposit_action'] = self.request.resource_url( self.context, 'novaideoapi', query={'op': 'support_idea'}) result['opposit_title'] = localizer.translate(_('Support')) result['opposition_counter'] = self.context.len_support result['hastoken'] = True if user.get_len_free_tokens(root=root) else False result.update(get_components_data( **get_all_updated_data( result.pop('action_obj', None), self.request, self.context, self))) return result
def __call__(self): vote = self.params('vote') for item, data in self.context.corrections.items(): self.execute({ 'item': item, 'vote': vote, 'content': data.get('content') }) user = get_current() values = { 'title': self.context.get_adapted_title(get_current()), 'text': self.context.get_adapted_text(get_current()), 'description': self.context.get_adapted_description(user), } body = self.content(args=values, template=self.template)['body'] result = {'body': body} if self.behaviors_instances.values(): action = list(self.behaviors_instances.values())[0] result.update( get_components_data(**get_all_updated_data( action, self.request, self.context, self))) return result
def creat_home_question(self): try: view_name = self.params('source_path') view_name = view_name if view_name else '' is_mycontents_view = view_name.endswith('seemycontents') context = self.context try: source_path = '/'.join(view_name.split('/')[:-1]) context = find_resource(self.context, source_path) except Exception as error: log.warning(error) is_challenge = isinstance(context, Challenge) redirect = False for action_id in self.behaviors_instances: if action_id in self.request.POST: button = action_id break add_question_action = self.behaviors_instances[button] add_question_view = DEFAULTMAPPING_ACTIONS_VIEWS[ add_question_action.__class__] add_question_view_instance = add_question_view( self.context, self.request, behaviors=[add_question_action]) add_question_view_instance.setviewid('formaskquestionhome') add_question_view_result = add_question_view_instance() if add_question_view_instance.finished_successfully: result = get_components_data( **get_all_updated_data(add_question_action, self.request, self.context, self, view_data=( add_question_view_instance, add_question_view_result))) user = get_current() body = '' if not redirect: question = sorted(user.get_questions(user), key=lambda w: w.created_at)[-1] if not is_mycontents_view and \ 'published' not in question.state: redirect = True else: if is_mycontents_view: result['item_target'] = 'results_contents' elif is_challenge: result[ 'item_target'] = 'results-challenge-questions' else: result['item_target'] = 'results-home-questions' body += render_listing_obj(self.request, question, user) if not redirect: result['redirect_url'] = None result['new_obj_body'] = body result['status'] = True return result except Exception as error: log.warning(error) return {'status': False} return {'status': False}
def creat_home_idea(self): try: view_name = self.params('source_path') view_name = view_name if view_name else '' is_mycontents_view = view_name.endswith('seemycontents') context = self.context try: source_path = '/'.join(view_name.split('/')[:-1]) context = find_resource(self.context, source_path) except Exception as error: log.warning(error) is_challenge = isinstance(context, Challenge) redirect = False for action_id in self.behaviors_instances: if action_id in self.request.POST: button = action_id break add_idea_action = self.behaviors_instances[button] add_idea_view = DEFAULTMAPPING_ACTIONS_VIEWS[add_idea_action.__class__] add_idea_view_instance = add_idea_view( self.context, self.request, behaviors=[add_idea_action]) add_idea_view_instance.setviewid('formcreateideahome') add_idea_view_result = add_idea_view_instance() if add_idea_view_instance.finished_successfully: result = get_components_data( **get_all_updated_data( add_idea_action, self.request, self.context, self, view_data=(add_idea_view_instance, add_idea_view_result) )) user = get_current() body = '' if button == 'Create_a_working_group': redirect = True proposal = sorted( user.get_working_groups(user), key=lambda w: w.created_at)[-1].proposal if is_mycontents_view: redirect = False body = render_listing_obj( self.request, proposal, user) if not redirect: idea = sorted( user.get_ideas(user), key=lambda w: w.created_at)[-1] if not is_mycontents_view and \ 'published' not in idea.state: redirect = True else: if is_mycontents_view: result['item_target'] = 'results_contents' elif is_challenge: result['item_target'] = 'results-challenge-ideas' else: result['item_target'] = 'results-home-ideas' body = body + render_listing_obj( self.request, idea, user) if not redirect: result['redirect_url'] = None result['new_obj_body'] = body result['status'] = True return result except Exception as error: log.warning(error) return {'status': False} return {'status': False}