Exemple #1
0
    def find_yammer_messages(self):
        root = self.request.root
        yammer_connectors = list(root.get_connectors(YAMMER_CONNECTOR_ID))
        yammer_connector = yammer_connectors[0] if yammer_connectors else None
        access_token = yammer_connector.get_access_tokens(get_current()).get('access_token', None) \
            if yammer_connector else None
        if yammer_connector and access_token:
            page = self.params('page')
            limit = self.params('limit')
            try:
                yammer = yampy.Yammer(access_token=access_token)
                messages = yammer.client.get(
                    '/messages', older_than=page, threaded=True, limit=limit)
                if messages['messages']:
                    current_ideas = [i.source_data[YAMMER_CONNECTOR_ID]['id']
                                     for i in find_yammer_content([Iidea])]
                    entries = [{'id': e['id'],
                                'text': html_to_text(e['body']['plain'][:150])+'...',
                                'imported': str(e['id']) in current_ideas}
                               for e in messages['messages']]
                    return {
                        'items': entries,
                        'total_count': len(messages['messages']),
                        'has_next': messages['meta']['older_available'],
                        'next_page': messages['messages'][-1]['id']}
            except Exception as error:
                log.warning(error)

        return {'items': [], 'total_count': 0}
Exemple #2
0
def messages_choice(node, kw):
    request = node.bindings['request']
    root = request.root
    yammer_connectors = list(root.get_connectors(YAMMER_CONNECTOR_ID))
    yammer_connector = yammer_connectors[0] if yammer_connectors else None
    access_token = yammer_connector.get_access_tokens(get_current()).get('access_token', None) \
        if yammer_connector else None
    values = []
    page = ''
    limit = 10
    ajax_url = None
    if yammer_connector and access_token:
        try:
            yammer = yampy.Yammer(access_token=access_token)
            messages = yammer.client.get('/messages',
                                         threaded=True,
                                         limit=limit)
            page = messages['messages'][-1]['id']
            values = [(str(e['id']),
                       html_to_text(e['body']['plain'][:150]) + '...')
                      for e in messages['messages']]
            if messages['meta']['older_available']:
                ajax_url = request.resource_url(
                    root, '@@yammerapi', query={'op': 'find_yammer_messages'})
        except Exception as error:
            log.warning(error)

    return AjaxCheckBoxWidget(
        values=values,
        url=ajax_url,
        limit=limit,
        page=page,
        multiple=True,
    )
Exemple #3
0
def get_message_data(request, message_or_id, access_token, include_topics=False, include_replies=False):
    yammer = yampy.Yammer(access_token=access_token)
    message = {}
    message_id = None
    if isinstance(message_or_id, dict):
        message = message_or_id
        message_id = message_or_id['id']
    else:
        message_id = message_or_id
        message = yammer.messages.find(message_id=message_id)

    if message:
        # get author
        user_id = message['sender_id']
        user_info = yammer.users.find(user_id)
        user_networks = user_info.get('network_domains')
        source_data = {
            'app_name': YAMMER_CONNECTOR_ID,
            'id': user_info.get('id'),
            'network_domains': user_networks,
            'access_token': None
        }
        user_data = {
            'first_name': user_info.get('first_name'),
            'last_name': user_info.get('last_name'),
            'email': user_info.get('email')
        }
        user = get_or_create_user(request, {
            'source_data': source_data,
            'user_data': user_data,
        }, False)
        # get files
        attached_files = upload_files(yammer, message['attachments'])
        # get keywords
        keywords = []
        thread_id = message['thread_id']
        if include_topics and thread_id:
            thread = yammer.threads.find(thread_id)
            keywords = [t['name'] for t in thread['references']
                        if t['type'] == 'topic']

        # get replies
        replies_result = {}
        if include_replies and thread_id:
            replies = yammer.messages.in_thread(thread_id)
            replies_result = _get_repleis(
                request, replies['messages'], message_id, access_token)

        content_body = html_to_text(message['body']['plain'])
        return {
            'title': content_body[:50]+' ...',
            'text': content_body,
            'keywords': keywords,
            'attached_files': attached_files,
            'author': user
        }, replies_result

    return {}, {}
Exemple #4
0
 def get_notification_data(self, subject, user, request, alert):
     html_message = alert.render(
         'notification', user, request)
     message = html_to_text(html_message)
     localizer = request.localizer
     return {
         'title': localizer.translate(_('Administration')) + ': ' + localizer.translate(
             subject.get_title(user)),
         'message': message,
         'url': request.resource_url(subject, '@@index')}
Exemple #5
0
 def get_notification_data(self, subject, user, request, alert):
     html_message = alert.render(
         'notification', user, request)
     message = html_to_text(html_message)
     localizer = request.localizer
     return {
         'title': localizer.translate(_('Administration')) + ': ' + localizer.translate(
             subject.get_title(user)),
         'message': message,
         'url': request.resource_url(subject, '@@index')}
Exemple #6
0
    def get_notification_data(self, subject, user, request, alert):
        html_message = alert.render(
            'notification', user, request)
        message = html_to_text(html_message)
        localizer = request.localizer
        title = localizer.translate(_('New message in')) + ' ' + localizer.translate(
            subject.get_title(user))
        channel = subject
        subject = channel.get_subject(user)
        if getattr(alert, 'comment_kind', '') == 'discuss':
            subject = channel.get_subject(subject)

        return {
            'title': title,
            'message': message,
            'url': request.resource_url(subject, '@@index') +
            '#comment-' + str(getattr(alert, 'comment_oid', 'None'))}
Exemple #7
0
    def get_notification_data(self, subject, user, request, alert):
        html_message = alert.render(
            'notification', user, request)
        message = html_to_text(html_message)
        localizer = request.localizer
        title = localizer.translate(_('New message in')) + ' ' + localizer.translate(
            subject.get_title(user))
        channel = subject
        subject = channel.get_subject(user)
        if getattr(alert, 'comment_kind', '') == 'discuss':
            subject = channel.get_subject(subject)

        return {
            'title': title,
            'message': message,
            'url': request.resource_url(subject, '@@index') + \
            '#comment-' + str(getattr(alert, 'comment_oid', 'None'))}
Exemple #8
0
    def find_yammer_messages(self):
        root = self.request.root
        yammer_connectors = list(root.get_connectors(YAMMER_CONNECTOR_ID))
        yammer_connector = yammer_connectors[0] if yammer_connectors else None
        access_token = yammer_connector.get_access_tokens(get_current()).get('access_token', None) \
            if yammer_connector else None
        if yammer_connector and access_token:
            page = self.params('page')
            limit = self.params('limit')
            try:
                yammer = yampy.Yammer(access_token=access_token)
                messages = yammer.client.get('/messages',
                                             older_than=page,
                                             threaded=True,
                                             limit=limit)
                if messages['messages']:
                    current_ideas = [
                        i.source_data[YAMMER_CONNECTOR_ID]['id']
                        for i in find_yammer_content([Iidea])
                    ]
                    entries = [{
                        'id':
                        e['id'],
                        'text':
                        html_to_text(e['body']['plain'][:150]) + '...',
                        'imported':
                        str(e['id']) in current_ideas
                    } for e in messages['messages']]
                    return {
                        'items': entries,
                        'total_count': len(messages['messages']),
                        'has_next': messages['meta']['older_available'],
                        'next_page': messages['messages'][-1]['id']
                    }
            except Exception as error:
                log.warning(error)

        return {'items': [], 'total_count': 0}
Exemple #9
0
 def _init_presentation_text(self):
     self._presentation_text = html_to_text(getattr(self, 'text', ''))
Exemple #10
0
 def resolve_presentation_text(self, args, context, info):
     return html_to_text(self.presentation_text(300))
Exemple #11
0
 def _init_presentation_text(self):
     self._presentation_text = html_to_text(
         getattr(self, 'text', ''))