Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
 def load_views(self):
     result = {}
     result.update(get_components_data(
         **load_components(
             self.request,
             self.context, self)))
     return result
Beispiel #5
0
 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
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #8
0
    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
Beispiel #9
0
 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
Beispiel #10
0
    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
Beispiel #11
0
    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
Beispiel #12
0
    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
Beispiel #13
0
    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
Beispiel #14
0
    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}
Beispiel #15
0
    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}
Beispiel #16
0
 def load_views(self):
     result = {}
     result.update(
         get_components_data(
             **load_components(self.request, self.context, self)))
     return result