def get(self, request, *args, **kwargs): user = self.request.user auth_code = request.GET["code"] data = { "grant_type": "authorization_code", "code": auth_code, "redirect_uri": settings.OPENHUMANS_APP_BASE_URL + "/accounts/openhumans/complete", } token_response = requests.post( "https://www.openhumans.org/oauth2/token/", data=data, auth=requests.auth.HTTPBasicAuth( settings.OPENHUMANS_CLIENT_ID, settings.OPENHUMANS_CLIENT_SECRET ), ) token_data = token_response.json() # OpenHumansMember.get_create_member() does not work... oh_id = ohapi.api.exchange_oauth2_member( access_token=token_data["access_token"], base_url=settings.OPENHUMANS_OH_BASE_URL, )["project_member_id"] user_model = get_user_model() if user.is_authenticated: # User is trying to link link OH account to MH. try: user = user_model.objects.get(openhumansmember__oh_id=oh_id) # TODO: Link accounts to each other? self.request.session["OHMemberInUse"] = True return redirect("main:profile") except user_model.DoesNotExist: openhumansmember = OpenHumansMember.create( oh_id=oh_id, data=token_data, user=user ) openhumansmember.save() else: # User is trying to log in with an OH. try: user = user_model.objects.get(openhumansmember__oh_id=oh_id) except user_model.DoesNotExist: openhumansmember = OpenHumansMember.create(oh_id=oh_id, data=token_data) openhumansmember.save() user = openhumansmember.user login(self.request, user) return redirect("main:index")
def index(request): """ Starting page for app. """ context = {} try: auth_url = OpenHumansMember.get_auth_url() context['auth_url'] = auth_url except ImproperlyConfigured as e: messages.info( request, mark_safe( f'<b>Received an error ${e}. You might to set up your ".env" file?</b>' )) # if request.user.is_authenticated: # context['overland_file'] = get_overland_file(request.user.openhumansmember) # context['overland_endpoint'] = urllib.parse.urljoin(settings.OPENHUMANS_APP_BASE_URL, request.user.openhumansmember.garminuser.endpoint_token + "/") if request.user.is_authenticated and request.user.openhumansmember.garmin_member: context['is_garmin_member'] = True # member= GarminMember.objects.get(oh_member_id=request.user.openhumansmember.) # print(f"queueing backfill ${request.user.openhumansmember.garmin_member.userid}") # handle_backfill(request.user.openhumansmember.garmin_member.userid) # print(current_app.tasks.keys()) return render(request, 'main/index.html', context=context)
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_refresh_token = line[1] github_refresh_token = line[2] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token="mock", refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() oh_member._refresh_tokens( client_id=settings.OPENHUMANS_CLIENT_ID, client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) github_member = DataSourceMember( access_token="mock", refresh_token=github_refresh_token, token_expires=DataSourceMember.get_expiration(-3600)) github_member.user = oh_member github_member._refresh_tokens( client_id=settings.GITHUB_CLIENT_ID, client_secret=settings.GITHUB_CLIENT_SECRET) process_github.delay(oh_member.oh_id) process_github(oh_member.oh_id)
def about(request): """ Share further details about the project. """ auth_url = OpenHumansMember.get_auth_url() context = {'auth_url': auth_url} return render(request, 'main/about.html', context=context)
def index(request): """ Starting page for app. """ test_step_data = { "stepper": [{ "id": 1, "label": "Login" }, { "id": 2, "label": "Define Profile" }, { "id": 3, "label": "Add Event" }], } stepper_object = Stepper.Stepper(test_step_data, request) stepper_object.update() stepper_data = stepper_object.get_stepper_data() auth_url = OpenHumansMember.get_auth_url() context = {'auth_url': auth_url, 'oh_proj_page': settings.OH_PROJ_PAGE} if request.user.is_authenticated: return redirect('overview') # return render(request, 'index.html', context=context) return render(request, 'index.html', stepper_data)
def index(request): """ Starting page for app. """ try: auth_url = OpenHumansMember.get_auth_url() except ImproperlyConfigured: auth_url = None if not auth_url: messages.info( request, mark_safe('<b>You need to set up your ".env"' ' file!</b>')) context = {'auth_url': auth_url} if request.user.is_authenticated: context['fb_redirect_uri'] = (settings.OPENHUMANS_APP_BASE_URL + '/' 'fitbit/authorized') if hasattr(request.user.openhumansmember, 'fitbituser'): context['fitbituser'] = request.user.openhumansmember.fitbituser if not request.user.openhumansmember.fitbituser.access_token: fb_user = request.user.openhumansmember.fitbituser fb_auth_url = ( 'https://www.fitbit.com/oauth2/authorize?response_type=code' '&client_id=' + fb_user.personal_client_id + '&scope' '=activity%20nutrition%20heartrate%20location' '%20nutrition%20profile%20settings%20sleep%20social%20weight' '&redirect_uri=' + settings.OPENHUMANS_APP_BASE_URL + '/' 'fitbit/authorized') context['fb_auth_url'] = fb_auth_url return render(request, 'main/index.html', context=context)
def get_context_data(self, *args, **kwargs): """ Add auth url to context """ context = super().get_context_data(*args, **kwargs) auth_url = OpenHumansMember.get_auth_url() context.update({"auth_url": auth_url}) return context
def index(request): """ Starting page for app. """ auth_url = OpenHumansMember.get_auth_url() context = {'auth_url': auth_url, 'oh_proj_page': settings.OH_PROJ_PAGE} if request.user.is_authenticated: return redirect('main:overview') return render(request, 'main/home.html', context=context)
def index(request): """ Starting page for app. """ if request.user.is_authenticated: return redirect('dashboard') auth_url = OpenHumansMember.get_auth_url() context = {'auth_url': auth_url} return render(request, 'main/index.html', context=context)
def index(request): """ Starting page for app. """ if request.user.is_authenticated: return redirect('/dashboard') context = { 'oh_auth_url': OpenHumansMember.get_auth_url(), 'oh_proj_page': settings.OH_ACTIVITY_PAGE } return render(request, 'main/index.html', context=context)
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) published_member_reports = 0 any_member_reports = 0 if not self.request.user.is_anonymous: published_member_reports = self.object_list.filter( member=self.request.user.openhumansmember).count() any_member_reports = RetrospectiveEvent.objects.filter( member=self.request.user.openhumansmember).count() context.update({ "published_member_reports": published_member_reports, "any_member_reports": any_member_reports, "openhumans_login_url": OpenHumansMember.get_auth_url(), }) return context
def index(request): """ Starting page for app. """ try: auth_url = OpenHumansMember.get_auth_url() except ImproperlyConfigured: auth_url = None if not auth_url: messages.info( request, mark_safe('<b>You need to set up your ".env"' ' file!</b>')) context = {'auth_url': auth_url} return render(request, 'main/index.html', context=context)
def setUp(self): """ Set up the app for following tests """ settings.DEBUG = True self.factory = RequestFactory() data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id='12345678', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save()
def setUp(self): # set up project settings.DEBUG = True # settings.OPENHUMANS_APP_BASE_URL = "http://127.0.0.1" # set up user data = { "access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000 } self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save()
def index(request): """ Starting page for app. """ context = {} try: auth_url = OpenHumansMember.get_auth_url() context['auth_url'] = auth_url except ImproperlyConfigured as e: messages.info(request, mark_safe(f'<b>Received an error {e}. You might to set up your ".env" file?</b>')) if request.user.is_authenticated and hasattr(request.user.openhumansmember, 'garmin_member') and request.user.openhumansmember.garmin_member.userid: context['is_garmin_member'] = True retrieved_data = RetrievedData.objects.filter(member=request.user.openhumansmember) context['retrieved_data'] = retrieved_data context['has_data'] = len(retrieved_data) > 0 return render(request, 'main/index.html', context=context)
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) if self.request.user.is_authenticated: openhumansmember = self.request.user.openhumansmember context.update({ "openhumansmember": openhumansmember, "files": self.files }) # Not logged in. else: context.update( {"openhumans_login_url": OpenHumansMember.get_auth_url()}) return context
def test_delete_single(self): data = { "access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000 } self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save() c = Client() c.login(username=self.user.username, password='******') response = c.get("/delete/1337", follow=True) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'main/list.html')
def test_log_out(self): """ Tests logout function """ data = { "access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000 } self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save() c = Client() c.login(username=self.user.username, password='******') response = c.post('/logout') self.assertEqual(response.wsgi_request.user.username, '') self.assertRedirects(response, "/")
def index(request): """ Starting page for app. """ try: auth_url = OpenHumansMember.get_auth_url() except ImproperlyConfigured: auth_url = None if not auth_url: messages.info( request, mark_safe('<b>You need to set up your ".env"' ' file!</b>')) context = {'auth_url': auth_url} if request.user.is_authenticated: context['overland_file'] = get_overland_file( request.user.openhumansmember) context['overland_endpoint'] = urllib.parse.urljoin( settings.OPENHUMANS_APP_BASE_URL, request.user.openhumansmember.overlanduser.endpoint_token + "/") return render(request, 'main/index.html', context=context)
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) if self.request.user.is_authenticated: openhumansmember = self.request.user.openhumansmember # checkin_form try: schedule = CheckinSchedule.objects.get(member=openhumansmember) checkin_form = CheckinScheduleForm(instance=schedule) schedule_exists = True except CheckinSchedule.DoesNotExist: checkin_form = CheckinScheduleForm() schedule_exists = False # fitbit_auth_url fitbit_auth_url = ( "https://www.fitbit.com/oauth2/authorize?response_type=code&client_id=" + settings.FITBIT_CLIENT_ID + "&scope=activity%20nutrition%20heartrate%20location%20nutrition%20profile%20settings%20sleep%20social%20weight" ) context.update({ "checkin_form": checkin_form, "fitbit_auth_url": fitbit_auth_url, "missing_sources": self.missing_sources, "openhumansmember": openhumansmember, "schedule_exists": schedule_exists, }) # Not logged in. else: context.update( {"openhumans_login_url": OpenHumansMember.get_auth_url()}) return context
def about(request): context = {"openhumans_login_url": OpenHumansMember.get_auth_url()} return render(request, "quantified_flu/about.html", context)
def __call__(self, request): request.openhumans_login_url = OpenHumansMember.get_auth_url() response = self.get_response(request) return response