Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Commit 137b066

Browse files
authored
Merge pull request #8 from jasonjoh/refactor
Refactor
2 parents bd146d2 + a6d95e4 commit 137b066

7 files changed

Lines changed: 17 additions & 20 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ Here's what the details of your app registration should look like when you are d
3333
1. Open the `.\tutorial\authhelper.py` file.
3434
1. Replace `YOUR APP ID HERE` with the **Application Id** from the registration you just created.
3535
1. Replace `YOUR APP PASSWORD HERE` with the password you copied earlier.
36+
1. Install dependencies by entering `pip install -r requirements.txt` at the command prompt.
37+
1. Run migrations by entering `python manage.py migrate` from the command prompt.
3638
1. Run the project by entering `python manage.py runserver` from the command prompt.
3739

3840
## Copyright ##

python_tutorial/settings.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,11 @@
4141
'tutorial',
4242
)
4343

44-
MIDDLEWARE_CLASSES = (
44+
MIDDLEWARE = (
4545
'django.contrib.sessions.middleware.SessionMiddleware',
4646
'django.middleware.common.CommonMiddleware',
4747
'django.middleware.csrf.CsrfViewMiddleware',
4848
'django.contrib.auth.middleware.AuthenticationMiddleware',
49-
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
5049
'django.contrib.messages.middleware.MessageMiddleware',
5150
'django.middleware.clickjacking.XFrameOptionsMiddleware',
5251
)

python_tutorial/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
url(r'^$', views.home, name='home'),
88
# Defer any URLS to the /tutorial directory to the tutorial app
99
url(r'^tutorial/', include('tutorial.urls', namespace='tutorial')),
10-
url(r'^admin/', include(admin.site.urls)),
10+
url(r'^admin/', admin.site.urls),
1111
]

requirements.txt

220 Bytes
Binary file not shown.

tutorial/outlookservice.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
graph_endpoint = 'https://graph.microsoft.com/v1.0{0}'
77

88
# Generic API Sending
9-
def make_api_call(method, url, token, user_email, payload = None, parameters = None):
9+
def make_api_call(method, url, token, payload = None, parameters = None):
1010
# Send these headers with all API calls
1111
headers = { 'User-Agent' : 'python_tutorial/1.0',
1212
'Authorization' : 'Bearer {0}'.format(token),
13-
'Accept' : 'application/json',
14-
'X-AnchorMailbox' : user_email }
13+
'Accept' : 'application/json' }
1514

1615
# Use these headers to instrument calls. Makes it easier
1716
# to correlate requests and responses in case of problems
@@ -51,7 +50,7 @@ def get_me(access_token):
5150
else:
5251
return "{0}: {1}".format(r.status_code, r.text)
5352

54-
def get_my_messages(access_token, user_email):
53+
def get_my_messages(access_token):
5554
get_messages_url = graph_endpoint.format('/me/mailfolders/inbox/messages')
5655

5756
# Use OData query parameters to control the results
@@ -62,14 +61,14 @@ def get_my_messages(access_token, user_email):
6261
'$select': 'receivedDateTime,subject,from',
6362
'$orderby': 'receivedDateTime DESC'}
6463

65-
r = make_api_call('GET', get_messages_url, access_token, user_email, parameters = query_parameters)
64+
r = make_api_call('GET', get_messages_url, access_token, parameters = query_parameters)
6665

6766
if (r.status_code == requests.codes.ok):
6867
return r.json()
6968
else:
7069
return "{0}: {1}".format(r.status_code, r.text)
7170

72-
def get_my_events(access_token, user_email):
71+
def get_my_events(access_token):
7372
get_events_url = graph_endpoint.format('/me/events')
7473

7574
# Use OData query parameters to control the results
@@ -80,14 +79,14 @@ def get_my_events(access_token, user_email):
8079
'$select': 'subject,start,end',
8180
'$orderby': 'start/dateTime ASC'}
8281

83-
r = make_api_call('GET', get_events_url, access_token, user_email, parameters = query_parameters)
82+
r = make_api_call('GET', get_events_url, access_token, parameters = query_parameters)
8483

8584
if (r.status_code == requests.codes.ok):
8685
return r.json()
8786
else:
8887
return "{0}: {1}".format(r.status_code, r.text)
8988

90-
def get_my_contacts(access_token, user_email):
89+
def get_my_contacts(access_token):
9190
get_contacts_url = graph_endpoint.format('/me/contacts')
9291

9392
# Use OData query parameters to control the results
@@ -98,7 +97,7 @@ def get_my_contacts(access_token, user_email):
9897
'$select': 'givenName,surname,emailAddresses',
9998
'$orderby': 'givenName ASC'}
10099

101-
r = make_api_call('GET', get_contacts_url, access_token, user_email, parameters = query_parameters)
100+
r = make_api_call('GET', get_contacts_url, access_token, parameters = query_parameters)
102101

103102
if (r.status_code == requests.codes.ok):
104103
return r.json()

tutorial/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from django.conf.urls import url
33
from tutorial import views
44

5+
app_name = 'tutorial'
56
urlpatterns = [
67
# The home view ('/tutorial/')
78
url(r'^$', views.home, name='home'),

tutorial/views.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE.txt in the project root for license information.
22
from django.shortcuts import render
33
from django.http import HttpResponse, HttpResponseRedirect
4-
from django.core.urlresolvers import reverse
4+
from django.urls import reverse
55
from tutorial.authhelper import get_signin_url, get_token_from_code, get_access_token
66
from tutorial.outlookservice import get_me, get_my_messages, get_my_events, get_my_contacts
77
import time
@@ -33,39 +33,35 @@ def gettoken(request):
3333
request.session['access_token'] = access_token
3434
request.session['refresh_token'] = refresh_token
3535
request.session['token_expires'] = expiration
36-
request.session['user_email'] = user['mail']
3736

3837
return HttpResponseRedirect(reverse('tutorial:mail'))
3938

4039
def mail(request):
4140
access_token = get_access_token(request, request.build_absolute_uri(reverse('tutorial:gettoken')))
42-
user_email = request.session['user_email']
4341
# If there is no token in the session, redirect to home
4442
if not access_token:
4543
return HttpResponseRedirect(reverse('tutorial:home'))
4644
else:
47-
messages = get_my_messages(access_token, user_email)
45+
messages = get_my_messages(access_token)
4846
context = { 'messages': messages['value'] }
4947
return render(request, 'tutorial/mail.html', context)
5048

5149
def events(request):
5250
access_token = get_access_token(request, request.build_absolute_uri(reverse('tutorial:gettoken')))
53-
user_email = request.session['user_email']
5451
# If there is no token in the session, redirect to home
5552
if not access_token:
5653
return HttpResponseRedirect(reverse('tutorial:home'))
5754
else:
58-
events = get_my_events(access_token, user_email)
55+
events = get_my_events(access_token)
5956
context = { 'events': events['value'] }
6057
return render(request, 'tutorial/events.html', context)
6158

6259
def contacts(request):
6360
access_token = get_access_token(request, request.build_absolute_uri(reverse('tutorial:gettoken')))
64-
user_email = request.session['user_email']
6561
# If there is no token in the session, redirect to home
6662
if not access_token:
6763
return HttpResponseRedirect(reverse('tutorial:home'))
6864
else:
69-
contacts = get_my_contacts(access_token, user_email)
65+
contacts = get_my_contacts(access_token)
7066
context = { 'contacts': contacts['value'] }
7167
return render(request, 'tutorial/contacts.html', context)

0 commit comments

Comments
 (0)