diff --git a/neuropy/neuropy/client_secret.json b/neuropy/neuropy/client_secret.json index 7df441c..957f99b 100644 --- a/neuropy/neuropy/client_secret.json +++ b/neuropy/neuropy/client_secret.json @@ -1,11 +1,15 @@ { "web":{ - "client_id":"666-bobdole.apps.googleusercontent.com", - "project_id":"bobdoel", + "client_id":"662194819445-oc6c5e7uk8025mffbv035g876l6amk5q.apps.googleusercontent.com", + "project_id":"homemon-go-1478832356580", "auth_uri":"https://accounts.google.com/o/oauth2/auth", "token_uri":"https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs", - "client_secret":"bobdole", - "redirect_uris": "http://localhost:8080/oauth2callback/" + "client_secret":"ArEd-PCRqt1JmxzFtWzepNzl", + "redirect_uris":[ + "http://localhost:8000/oauth2callback", + "http://127.0.0.1:8000/oauth2callback", + "http://localhost:8080/" + ] } -} +} \ No newline at end of file diff --git a/neuropy/todo/views.py b/neuropy/todo/views.py index 78c5eb5..21daee7 100644 --- a/neuropy/todo/views.py +++ b/neuropy/todo/views.py @@ -109,10 +109,10 @@ def calendar_get(http, date): return events_result.get('items', []) -def calender_insert(http, event): +def calender_insert(http, event, email): """Insert entries and calender.""" service = discovery.build('calendar', 'v3', http=http) - event = service.events().insert(calendarId='prmary', body=event).execute() + event = service.events().insert(calendarId=email, body=event).execute() return event @@ -172,9 +172,11 @@ def td(time): elif idx == 3 and priority_dict['start'] < easy_start: priority_dict['ease'] = 'medium' + elif idx == 3: + priority_dict['ease'] = 'easy' - priority_dict['start'] = start_time.strftime("%H:%M") - priority_dict['end'] = end_time.strftime("%H:%M") + priority_dict['start'] = start_time + priority_dict['end'] = end_time events_list.append(dict(priority_dict)) start_time = start_time + datetime.timedelta(hours=event.duration) diff --git a/neuropy/userprofile/views.py b/neuropy/userprofile/views.py index 3e862c4..67e0118 100644 --- a/neuropy/userprofile/views.py +++ b/neuropy/userprofile/views.py @@ -1,14 +1,29 @@ """Views for profile.""" +import os +import httplib2 from django.contrib.auth.mixins import LoginRequiredMixin from django.http import HttpResponseRedirect from django.urls import reverse_lazy from django.views.generic import DetailView, UpdateView, FormView from userprofile.forms import ProfileForm, MedicationForm from userprofile.models import Profile -from todo.views import create_event_list +from todo.views import create_event_list, calender_insert +from userprofile.models import CredentialsModel +from oauth2client.contrib.django_util.storage import DjangoORMStorage +from oauth2client.contrib import xsrfutil +from neuropy import settings +from oauth2client.client import flow_from_clientsecrets +CLIENT_SECRETS = os.path.join(os.path.dirname(__file__), '..', 'neuropy', 'client_secret.json') + +FLOW = flow_from_clientsecrets( + CLIENT_SECRETS, + scope='https://www.googleapis.com/auth/calendar', + redirect_uri='http://localhost:8000/oauth2callback' +) + class ProfileView(LoginRequiredMixin, DetailView): """View for profile.""" @@ -38,8 +53,44 @@ def form_valid(self, form): """Return HttpResponse when valid data is posted.""" medication = form.cleaned_data['medication'] priority_list = create_event_list(medication.name, self.request.user.profile) - self.request.session['some_list'] = priority_list + storage = DjangoORMStorage(CredentialsModel, 'user_id', self.request.user, 'credential') + credential = storage.get() + if credential is None or credential.invalid: + FLOW.params['state'] = xsrfutil.generate_token(settings.SECRET_KEY, + self.request.user) + authorize_url = FLOW.step1_get_authorize_url() + return HttpResponseRedirect(authorize_url) + else: + http = httplib2.Http() + http = credential.authorize(http) + + for event in priority_list: + google_event = {} + if event['ease'] == 'easy': + google_event['colorId'] = 3 + elif event['ease'] == 'medium': + google_event['colorId'] = 2 + else: + google_event['colorId'] = 11 + + google_event['description'] = event['description'] + google_event['summary'] = event['title'] + google_event['start'] = {'dateTime': event['start'].isoformat() + '-08:00'} + google_event['end'] = {'dateTime': event['end'].isoformat() + '-08:00'} + google_event['reminders'] = { + 'useDefault': False, + 'overrides': [ + {'method': 'email', 'minutes': 24 * 60}, + {'method': 'popup', 'minutes': 10}, + ] + } + calender_insert(http, google_event, self.request.user.email) + event['start'] = event['start'].strftime("%H:%M") + event['end'] = event['end'].strftime("%H:%M") + return HttpResponseRedirect(reverse_lazy('schedule')) + + self.request.session['some_list'] = priority_list return HttpResponseRedirect(self.get_success_url())