From 19037a9a81a5be9b202d9c0d48cff0a71fdd1e58 Mon Sep 17 00:00:00 2001
From: Sander Roosendaal
Date: Mon, 13 Feb 2017 16:20:11 +0100
Subject: [PATCH] repaired celery, c2 error, finish merge
---
rowers/c2stuff.py | 33 +++++++++++++++++++--------------
rowers/celery.py | 4 +++-
rowers/forms.py | 8 ++++++--
rowers/templates/teams.html | 18 ++++++++++++++++++
rowers/views.py | 19 ++++++++++++++++++-
rowsandall_app/settings_dev.py | 4 +++-
6 files changed, 67 insertions(+), 19 deletions(-)
diff --git a/rowers/c2stuff.py b/rowers/c2stuff.py
index 0e27bad9..d455f67a 100644
--- a/rowers/c2stuff.py
+++ b/rowers/c2stuff.py
@@ -447,7 +447,6 @@ def get_username(access_token):
me_json = response.json()
-
return me_json['data']['username']
# Get user id, having access token
@@ -463,9 +462,12 @@ def get_userid(access_token):
me_json = response.json()
-
-
- return me_json['data']['id']
+ try:
+ res = me_json['data']['id']
+ except KeyError:
+ res = 0
+
+ return res
# For debugging purposes
def process_callback(request):
@@ -515,16 +517,19 @@ def workout_c2_upload(user,w):
def rower_c2_token_refresh(user):
r = Rower.objects.get(user=user)
res = do_refresh_token(r.c2refreshtoken)
- access_token = res[0]
- expires_in = res[1]
- refresh_token = res[2]
- expirydatetime = timezone.now()+timedelta(seconds=expires_in)
+ if res[0]:
+ access_token = res[0]
+ expires_in = res[1]
+ refresh_token = res[2]
+ expirydatetime = timezone.now()+timedelta(seconds=expires_in)
- r = Rower.objects.get(user=user)
- r.c2token = access_token
- r.tokenexpirydate = expirydatetime
- r.c2refreshtoken = refresh_token
+ r = Rower.objects.get(user=user)
+ r.c2token = access_token
+ r.tokenexpirydate = expirydatetime
+ r.c2refreshtoken = refresh_token
- r.save()
- return r.c2token
+ r.save()
+ return r.c2token
+ else:
+ return None
diff --git a/rowers/celery.py b/rowers/celery.py
index 7eb1d00e..8e41c855 100644
--- a/rowers/celery.py
+++ b/rowers/celery.py
@@ -8,7 +8,7 @@ from celery import Celery
# on Windows, so I use Celery on my notebook.
# set the default Django settings module for the 'celery' program.
-os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rowsandall_app.settings')
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rowsandall_app.settings_dev')
from django.conf import settings # noqa
@@ -25,6 +25,8 @@ app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
+database_url = 'sqlite:///db.sqlite3'
+
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
diff --git a/rowers/forms.py b/rowers/forms.py
index 8111b1bb..0644ff5b 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -32,10 +32,14 @@ class CNsummaryForm(forms.Form):
class SummaryStringForm(forms.Form):
intervalstring = forms.CharField(max_length=255,label='Workout Description')
+# little window to type a Team invitation code
+class TeamInviteCodeForm(forms.Form):
+ code = forms.CharField(max_length=10,label='Team Code',
+ )
+
# Used for testing the POST API for StrokeData
class StrokeDataForm(forms.Form):
- strokedata = forms.CharField(label='payload',
- widget=forms.Textarea)
+ strokedata = forms.CharField(label='payload',widget=forms.Textarea)
# The form used for uploading files
class DocumentsForm(forms.Form):
diff --git a/rowers/templates/teams.html b/rowers/templates/teams.html
index 5d23245c..cf798b52 100644
--- a/rowers/templates/teams.html
+++ b/rowers/templates/teams.html
@@ -100,7 +100,25 @@
{% endfor %}
+
+ Manual code redeem
+
+
+
+
+
+
{% else %}
diff --git a/rowers/views.py b/rowers/views.py
index 112cd2ce..8beb0f07 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -647,7 +647,7 @@ def c2_open(user):
if res[0] != None:
thetoken = res[0]
else:
- thetoken = r.c2token
+ raise C2NoTokenError("User has no token")
else:
thetoken = r.c2token
@@ -5081,8 +5081,22 @@ def team_leave_view(request,id=0):
response = HttpResponseRedirect(url)
return response
+from rowers.forms import TeamInviteCodeForm
+
@login_required()
def rower_teams_view(request,message='',successmessage=''):
+ if request.method == 'POST':
+ form = TeamInviteCodeForm(request.POST)
+ if form.is_valid():
+ code = form.cleaned_data['code']
+ res,text = teams.process_invite_code(request.user,code)
+ if res:
+ successmessage = text
+ else:
+ message = text
+ else:
+ form = TeamInviteCodeForm()
+
r = Rower.objects.get(user=request.user)
ts = Team.objects.filter(rower=r)
myteams = Team.objects.filter(manager=request.user)
@@ -5093,6 +5107,8 @@ def rower_teams_view(request,message='',successmessage=''):
requests = TeamRequest.objects.filter(user=request.user)
myrequests = TeamRequest.objects.filter(team__in=myteams)
myinvites = TeamInvite.objects.filter(team__in=myteams)
+
+ print form
return render(request, 'teams.html',
{
@@ -5102,6 +5118,7 @@ def rower_teams_view(request,message='',successmessage=''):
'otherteams':otherteams,
'requests':requests,
'myrequests':myrequests,
+ 'form':form,
'message':message,
'successmessage':successmessage,
'myinvites':myinvites,
diff --git a/rowsandall_app/settings_dev.py b/rowsandall_app/settings_dev.py
index 602d958e..8ebb5caf 100644
--- a/rowsandall_app/settings_dev.py
+++ b/rowsandall_app/settings_dev.py
@@ -14,7 +14,9 @@ from settings import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),},
+ 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+ 'HOST': 'localhost'
+ },
# 'TEST': {
# 'CHARSET': 'utf8',
# 'COLLATION': 'utf8_general_ci',