gedankenstuecke/twitter-analyser

View on GitHub
tweet_display/helper.py

Summary

Maintainability
A
45 mins
Test Coverage
import requests
from users.models import OpenHumansMember
from .models import Graph


def grant_access(request, oh_id):
    if oh_id is None:
        if request.user.is_authenticated:
            return request.user.openhumansmember.oh_id
    else:
        if (OpenHumansMember.objects.get(oh_id=oh_id).public or
            (request.user.is_authenticated and
             request.user.openhumansmember.oh_id == oh_id)):
            return oh_id
    return False


def get_file_url(oh_id):
    oh_member = OpenHumansMember.objects.get(oh_id=oh_id)
    token = oh_member.get_access_token()
    req = requests.get(
        'https://www.openhumans.org/api/direct-sharing/'
        'project/exchange-member/', params={'access_token': token})
    if req.status_code == 200 and 'data' in req.json():
        data = req.json()['data']
        # WARNING! This is assumes the first file encountered is what you want!
        if len(data) > 0:
            return data[0]['download_url']
    return None


def get_current_user(request):
    if request.user.is_authenticated:
        return request.user.openhumansmember.oh_id
    return None


def check_graphs(graph_types, oh_id):
    graphs_ready = []
    for graph in graph_types:
        found = Graph.objects.filter(graph_type__exact=graph,
                                     open_humans_member__oh_id=oh_id)
        if found:
            graphs_ready.append(graph)
    return graphs_ready


def message_success(oh_user):
    print('trying to send message for {}'.format(oh_user.oh_id))
    subject = 'Your graphs are ready!'
    message = 'Dear TwArxiv user,\nthe graphs generated from your Twitter \
archive are now ready for you.\nGo over to \
https://twtr-analyser.herokuapp.com/tweet_display/index/{} to \
view them'.format(oh_user.oh_id)
    message_url = 'https://www.openhumans.org/api/direct-sharing/project/message/?access_token={}'.format(
        oh_user.get_access_token())
    response = requests.post(message_url, data={'subject': subject,
                                                'message': message})
    print(response)
    print(response.json())