diff --git a/rowers/braintreestuff.py b/rowers/braintreestuff.py index 4af5920f..bfe978bc 100644 --- a/rowers/braintreestuff.py +++ b/rowers/braintreestuff.py @@ -274,6 +274,7 @@ def cancel_subscription(rower,id): themessages.append("Subscription canceled") except: errormessages.append("We could not find the subscription record in our customer database. We have notified the site owner, who will contact you.") + name = '{f} {l}'.format(f = rower.user.first_name, l = rower.user.last_name) @@ -358,37 +359,40 @@ def get_transactions(start_date,end_date): statuses = [] ids = [] usernames = [] + customerids = [] + transactionids = [] + subscriptionids = [] + ownids = [] + + countlines = [1 for transaction in results] for transaction in results: - try: - rs = Rower.objects.filter( - customer_id=transaction.customer['id'], - paymentprocessor='braintree') - if rs: - r = rs[0] + r = None + rs = Rower.objects.filter( + customer_id=transaction.customer['id'], + paymentprocessor='braintree') + if rs: + r = rs[0] countries.append(r.country) - names.append('{f} {l}'.format( - f = r.user.first_name, - l = r.user.last_name, - ) - ) - emails.append(r.user.email) - ids.append(r.id) + ownids.append(r.id) usernames.append(r.user.username) - except (KeyError,IndexError): + else: countries.append( transaction.credit_card_details.country_of_issuance) - names.append('{f} {l}'.format( - f = transaction.customer['first_name'], - l = transaction.customer['last_name'] - ) - ) - emails.append(transaction.customer.email) - ids.append(transaction.customer['id']) + ownids.append('unknown') usernames.append('unknown') - + + emails.append(transaction.customer_details.email) + names.append('{f} {l}'.format( + f = transaction.customer['first_name'], + l = transaction.customer['last_name'] + ) + ) + customerids.append(transaction.customer['id']) + transactionids.append(transaction.id) + subscriptionids.append(transaction.subscription_id) amounts.append(transaction.amount) dates.append(transaction.created_at) currencies.append(transaction.currency_iso_code) @@ -396,7 +400,7 @@ def get_transactions(start_date,end_date): transaction.credit_card_details.country_of_issuance) statuses.append(transaction.status) - + df = pd.DataFrame({ 'name':names, 'email':emails, @@ -407,7 +411,10 @@ def get_transactions(start_date,end_date): 'card_country':card_countries, 'status':statuses, 'username':usernames, - 'user_id':ids, + 'user_id':ownids, + 'customer_id':customerids, + 'transaction_id':transactionids, + 'subscription_id':subscriptionids } ) diff --git a/rowers/tests/testdata/testdata.csv.gz b/rowers/tests/testdata/testdata.csv.gz index 52cc784b..39f073c9 100644 Binary files a/rowers/tests/testdata/testdata.csv.gz and b/rowers/tests/testdata/testdata.csv.gz differ diff --git a/rowers/tests/testdata/testdata.tcx b/rowers/tests/testdata/testdata.tcx index 7b097fff..f690c3b0 100644 --- a/rowers/tests/testdata/testdata.tcx +++ b/rowers/tests/testdata/testdata.tcx @@ -2502,7 +2502,7 @@ - <Element 'Notes' at 0x147c0f60> + <Element 'Notes' at 0x138c9ef0> diff --git a/rowers/views.py b/rowers/views.py index 74673bf7..f02f8bb4 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -13081,6 +13081,10 @@ def rower_prefs_view(request,userid=0,message=""): } ] + form = RowerForm(instance=r) + powerform = RowerPowerForm(instance=r) + powerzonesform = RowerPowerZonesForm(instance=r) + if request.method == 'POST' and "ut2" in request.POST: form = RowerForm(request.POST) if form.is_valid(): @@ -13093,58 +13097,17 @@ def rower_prefs_view(request,userid=0,message=""): tr = cd['tr'] an = cd['an'] rest = cd['rest'] - try: - r.max = max(min(hrmax,250),10) - r.ut2 = max(min(ut2,250),10) - r.ut1 = max(min(ut1,250),10) - r.at = max(min(at,250),10) - r.tr = max(min(tr,250),10) - r.an = max(min(an,250),10) - r.rest = max(min(rest,250),10) - r.save() - successmessage = "Your Heart Rate data were changed" - messages.info(request,successmessage) - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - accountform = AccountRowerForm(instance=r) - userform = UserForm(instance=r.user) - return render(request, 'rower_preferences.html', - {'form':form, - 'powerzonesform':powerzonesform, - 'teams':get_my_teams(request.user), - 'breadcrumbs':breadcrumbs, - 'powerform':powerform, - 'rower':r, - 'accountform':accountform, - 'userform':userform, - }) - except Rower.DoesNotExist: - message = "Funny. This user doesn't exist." - messages.error(request,message) - url = reverse(workouts_view) - response = HttpResponseRedirect(url) - else: - message = HttpResponse("invalid form") - #form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - userform = UserForm(instance=r.user) - accountform = AccountRowerForm(instance=r) - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'powerzonesform':powerzonesform, - 'breadcrumbs':breadcrumbs, - 'userform':userform, - 'accountform':accountform, - 'powerform':powerform, - 'rower':r, - }) - - - return response + r.max = max(min(hrmax,250),10) + r.ut2 = max(min(ut2,250),10) + r.ut1 = max(min(ut1,250),10) + r.at = max(min(at,250),10) + r.tr = max(min(tr,250),10) + r.an = max(min(an,250),10) + r.rest = max(min(rest,250),10) + r.save() + successmessage = "Your Heart Rate data were changed" + messages.info(request,successmessage) elif request.method == 'POST' and "ftp" in request.POST: powerform = RowerPowerForm(request.POST) if powerform.is_valid(): @@ -13154,52 +13117,24 @@ def rower_prefs_view(request,userid=0,message=""): hrftp = int((r.an+r.tr)/2.) ftp = cd['ftp'] otwslack = cd['otwslack'] - try: - powerfrac = 100*np.array([r.pw_ut2, - r.pw_ut1, - r.pw_at, - r.pw_tr,r.pw_an])/r.ftp - r.ftp = max(min(ftp,650),50) - r.otwslack = max(min(otwslack,50),0) - ut2,ut1,at,tr,an = (r.ftp*powerfrac/100.).astype(int) - r.pw_ut2 = ut2 - r.pw_ut1 = ut1 - r.pw_at = at - r.pw_tr = tr - r.pw_an = an - r.hrftp = hrftp - r.save() - message = "FTP and/or OTW slack values changed." - messages.info(request,message) - url = reverse(rower_prefs_view, - kwargs = { - 'userid':r.user.id, - }) - response = HttpResponseRedirect(url) - except Rower.DoesNotExist: - message = "Funny. This user doesn't exist." - messages.error(request,message) - url = reverse(rower_edit_view) - response = HttpResponseRedirect(url) - else: - message = HttpResponse("invalid form") - form = RowerForm(instance=r) - #powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - userform = UserForm(instance=r.user) - accountform = AccountRowerForm(instance=r) - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'breadcrumbs':breadcrumbs, - 'powerform':powerform, - 'rower':r, - 'userform':userform, - 'accountform':accountform, - }) - - - return response + + powerfrac = 100*np.array([r.pw_ut2, + r.pw_ut1, + r.pw_at, + r.pw_tr,r.pw_an])/r.ftp + r.ftp = max(min(ftp,650),50) + r.otwslack = max(min(otwslack,50),0) + ut2,ut1,at,tr,an = (r.ftp*powerfrac/100.).astype(int) + r.pw_ut2 = ut2 + r.pw_ut1 = ut1 + r.pw_at = at + r.pw_tr = tr + r.pw_an = an + r.hrftp = hrftp + r.save() + message = "FTP and/or OTW slack values changed." + messages.info(request,message) + elif request.method == 'POST' and "ut3name" in request.POST: powerzonesform = RowerPowerZonesForm(request.POST) if powerzonesform.is_valid(): @@ -13216,154 +13151,27 @@ def rower_prefs_view(request,userid=0,message=""): trname = cd['trname'] anname = cd['anname'] powerzones = [ut3name,ut2name,ut1name,atname,trname,anname] - try: - r.pw_ut2 = pw_ut2 - r.pw_ut1 = pw_ut1 - r.pw_at = pw_at - r.pw_tr = pw_tr - r.pw_an = pw_an - r.powerzones = powerzones - r.save() - successmessage = "Your Power Zone data were changed" - messages.info(request,successmessage) - form = RowerForm(instance=r) - accountform = AccountRowerForm(instance=r) - userform = UserForm(instance=r.user) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'powerzonesform':powerzonesform, - 'powerform':powerform, - 'userform':userform, - 'breadcrumbs':breadcrumbs, - 'accountform':accountform, - 'rower':r, - }) - except Rower.DoesNotExist: - message = "Funny. This user doesn't exist." - messages.error(request,message) - url = reverse(workouts_view) - response = HttpResponseRedirect(url) - return response - else: - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - accountform = AccountRowerForm(instance=r) - userform = UserForm(instance=r.user) - #powerzonesform = RowerPowerZonesForm(instance=r) - message = HttpResponse("invalid form") - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'powerform':powerform, - 'breadcrumbs':breadcrumbs, - 'powerzonesform':powerzonesform, - 'accountform':accountform, - 'userform':userform, - 'rower':r, - }) - elif request.method == 'POST' and "weightcategory" in request.POST: - accountform = AccountRowerForm(request.POST) - userform = UserForm(request.POST,instance=r.user) - if accountform.is_valid() and userform.is_valid(): - # process - cd = accountform.cleaned_data - ucd = userform.cleaned_data - first_name = ucd['first_name'] - last_name = ucd['last_name'] - email = ucd['email'] - sex = cd['sex'] - defaultlandingpage = cd['defaultlandingpage'] - weightcategory = cd['weightcategory'] - adaptiveclass = cd['adaptiveclass'] - birthdate = cd['birthdate'] - showfavoritechartnotes = cd['showfavoritechartnotes'] - getemailnotifications = cd['getemailnotifications'] - getimportantemails = cd['getimportantemails'] - defaulttimezone=cd['defaulttimezone'] - u = r.user - if u.email != email and len(email): - resetbounce = True - else: - resetbounce = False - if len(first_name): - u.first_name = first_name - u.last_name = last_name - if len(email): ## and check_email_freeforuse(u,email): - u.email = email - resetbounce = True - - u.save() - r.defaulttimezone=defaulttimezone - r.weightcategory = weightcategory - r.adaptiveclass = adaptiveclass - r.getemailnotifications = getemailnotifications - r.getimportantemails = getimportantemails - r.defaultlandingpage = defaultlandingpage - r.showfavoritechartnotes = showfavoritechartnotes - r.sex = sex - r.birthdate = birthdate - if resetbounce and r.emailbounced: - r.emailbounced = False + r.pw_ut2 = pw_ut2 + r.pw_ut1 = pw_ut1 + r.pw_at = pw_at + r.pw_tr = pw_tr + r.pw_an = pw_an + r.powerzones = powerzones r.save() - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - accountform = AccountRowerForm(instance=r) - userform = UserForm(instance=u) - successmessage = 'Account Information changed' + successmessage = "Your Power Zone data were changed" messages.info(request,successmessage) - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'powerzonesform':powerzonesform, - 'breadcrumbs':breadcrumbs, - 'powerform':powerform, - 'accountform':accountform, - 'userform':userform, - 'rower':r, - }) - else: - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - return render(request, 'rower_preferences.html', - {'form':form, - 'teams':get_my_teams(request.user), - 'powerzonesform':powerzonesform, - 'powerform':powerform, - 'breadcrumbs':breadcrumbs, - 'accountform':accountform, - 'userform':userform, - 'rower':r, - }) - - - else: - try: - form = RowerForm(instance=r) - powerform = RowerPowerForm(instance=r) - powerzonesform = RowerPowerZonesForm(instance=r) - accountform = AccountRowerForm(instance=r) - userform = UserForm(instance=r.user) - grants = AccessToken.objects.filter(user=request.user) - return render(request, 'rower_preferences.html', - { - 'form':form, - 'teams':get_my_teams(request.user), - 'powerform':powerform, - 'powerzonesform':powerzonesform, - 'breadcrumbs':breadcrumbs, - 'userform':userform, - 'accountform':accountform, - 'grants':grants, - 'rower':r, - }) - except Rower.DoesNotExist: - raise Http404("This user doesn't exist") + + return render(request, 'rower_preferences.html', + { + 'form':form, + 'teams':get_my_teams(request.user), + 'powerform':powerform, + 'powerzonesform':powerzonesform, + 'breadcrumbs':breadcrumbs, + 'rower':r, + }) + # Revoke an app that you granted access through the API. # this views is called when you press a button on the User edit page