Skip to content

Commit

Permalink
Merge branch 'dev' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
jabelone committed Sep 1, 2023
2 parents d687235 + bf131fa commit b1c363e
Show file tree
Hide file tree
Showing 19 changed files with 654 additions and 668 deletions.
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [v3.4.1] - 2023-09-01

### Added

- allow dev tools in prod builds of electron

### Changed

- refactored user logging and email system

### Fixed

- electron build failing
- electron build to handle SameSite attribute on session cookie

## [v3.4.0] - 2023-08-31

### Removed
Expand Down
1 change: 0 additions & 1 deletion memberportal/access/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from django.db import models
from datetime import timedelta
from django.utils import timezone
from membermatters.helpers import log_event
import pytz
from django.conf import settings
from django.contrib import auth
Expand Down
38 changes: 13 additions & 25 deletions memberportal/api_billing/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from services import canvas, sms
from services.emails import send_email_to_admin
from constance import config
from membermatters.helpers import log_user_event
from django.db.utils import OperationalError
from sentry_sdk import capture_exception

Expand Down Expand Up @@ -65,8 +64,8 @@ def get(self, request):

if not customer_exists:
try:
log_user_event(
request.user, "Attempting to create stripe customer.", "stripe"
request.user.log_event(
"Attempting to create stripe customer.", "stripe"
)
customer = stripe.Customer.create(
email=request.user.email,
Expand All @@ -77,8 +76,7 @@ def get(self, request):
profile.stripe_customer_id = customer.id
profile.save()

log_user_event(
request.user,
request.user.log_event(
f"Created stripe customer {request.user.profile.get_full_name()} (Stripe ID: {customer.id}).",
"stripe",
)
Expand All @@ -88,8 +86,7 @@ def get(self, request):
return Response({"clientSecret": intent.client_secret})

except stripe.error.StripeError as e:
log_user_event(
request.user,
request.user.log_event(
"Unknown stripe while saving payment details.",
"stripe",
request,
Expand All @@ -105,8 +102,7 @@ def get(self, request):
)

except Exception as e:
log_user_event(
request.user,
request.user.log_event(
"Unknown other error while saving payment details.",
"stripe",
request,
Expand Down Expand Up @@ -219,8 +215,7 @@ def create_subscription(attempts=0):
attempts += 1

if attempts > 3:
log_user_event(
request.user,
request.user.log_event(
"Too many attempts while creating subscription.",
"stripe",
"",
Expand Down Expand Up @@ -249,8 +244,7 @@ def create_subscription(attempts=0):
error["code"] == "resource_missing"
and "default payment method" in error["message"]
):
log_user_event(
request.user,
request.user.log_event(
"InvalidRequestError (missing default payment method) from Stripe while creating subscription.",
"stripe",
error,
Expand All @@ -270,8 +264,7 @@ def create_subscription(attempts=0):
error["code"] == "resource_missing"
and "a similar object exists in live mode" in error["message"]
):
log_user_event(
request.user,
request.user.log_event(
"InvalidRequestError (used test key with production object) from Stripe while "
"creating subscription.",
"stripe",
Expand All @@ -287,8 +280,7 @@ def create_subscription(attempts=0):
)

else:
log_user_event(
request.user,
request.user.log_event(
"InvalidRequestError from Stripe while creating subscription.",
"stripe",
error,
Expand All @@ -302,8 +294,7 @@ def create_subscription(attempts=0):
)

except Exception as e:
log_user_event(
request.user,
request.user.log_event(
"InvalidRequestError from Stripe while creating subscription.",
"stripe",
e,
Expand All @@ -326,8 +317,7 @@ def create_subscription(attempts=0):
request.user.profile.subscription_status = "active"
request.user.profile.save()

log_user_event(
request.user,
request.user.log_event(
"Successfully created subscription in Stripe.",
"stripe",
"",
Expand All @@ -337,8 +327,7 @@ def create_subscription(attempts=0):

elif new_subscription.status == "incomplete":
# if we got here, that means the subscription wasn't successfully created
log_user_event(
request.user,
request.user.log_event(
f"Failed to create subscription in Stripe with status {new_subscription.status}.",
"stripe",
"",
Expand All @@ -349,8 +338,7 @@ def create_subscription(attempts=0):
)

else:
log_user_event(
request.user,
request.user.log_event(
f"Failed to create subscription in Stripe with status {new_subscription.status}.",
"stripe",
"",
Expand Down
12 changes: 8 additions & 4 deletions memberportal/api_general/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,16 +258,20 @@ def post(self, request):
return Response(status=status.HTTP_400_BAD_REQUEST)

try:
user = Profile.objects.get(rfid=body.get("cardId")).user
kiosk = Kiosk.objects.get(kiosk_id=body.get("kioskId"))

except Profile.DoesNotExist:
except Kiosk.DoesNotExist:
return Response(status=status.HTTP_401_UNAUTHORIZED)

kiosk = Kiosk.objects.get(kiosk_id=body.get("kioskId"))

if not kiosk.authorised:
return Response(status=status.HTTP_403_FORBIDDEN)

try:
user = Profile.objects.get(rfid=body.get("cardId")).user

except Profile.DoesNotExist:
return Response(status=status.HTTP_401_UNAUTHORIZED)

if not user.email_verified:
return Response(
{"message": "error.emailNotVerified"}, status=status.HTTP_403_FORBIDDEN
Expand Down
4 changes: 1 addition & 3 deletions memberportal/api_member_tools/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from profile.models import User, Profile
from api_meeting.models import Meeting
from constance import config
from membermatters.helpers import log_user_event
from services.emails import send_single_email
from random import shuffle
import requests
Expand Down Expand Up @@ -133,8 +132,7 @@ def post(self, request):
response = requests.request("POST", url, params=querystring)

if response.status_code == 200:
log_user_event(
request.user,
request.user.log_event(
"Submitted issue: " + title + " Content: " + description,
"generic",
)
Expand Down
7 changes: 2 additions & 5 deletions memberportal/memberbucks/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from django.core.exceptions import ObjectDoesNotExist
from django.utils import timezone
from membermatters.helpers import log_user_event
from .models import MemberBucks
from profile.models import Profile, User
from constance import config
Expand Down Expand Up @@ -70,8 +69,7 @@ def post(self, request, rfid=None, amount=None, description="No Description"):
subject, subject, subject, message
)

log_user_event(
profile.user,
profile.user.log_event(
f"Successfully debited ${amount} from {config.MEMBERBUCKS_NAME} account.",
"memberbucks",
)
Expand All @@ -81,8 +79,7 @@ def post(self, request, rfid=None, amount=None, description="No Description"):
)

else:
log_user_event(
profile.user,
profile.user.log_event(
f"Not enough funds to debit ${amount} from {config.MEMBERBUCKS_NAME} account.",
"memberbucks",
)
Expand Down
11 changes: 0 additions & 11 deletions memberportal/membermatters/helpers.py

This file was deleted.

67 changes: 16 additions & 51 deletions memberportal/profile/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
from api_admin_tools.models import MemberTier, PaymentPlan
import json
import uuid
from postmarker.core import PostmarkClient
import logging
from services.emails import send_single_email
from services import sms

logger = logging.getLogger("app")
Expand Down Expand Up @@ -57,8 +57,8 @@ class EventLog(Log):
pass


# this needs to be here because it relies on the models defined above
from membermatters.helpers import log_user_event
def log_event(description, event_type, data=""):
EventLog(description=description, logtype=event_type, data=data).save()


class UserManager(BaseUserManager):
Expand Down Expand Up @@ -140,32 +140,13 @@ def is_admin(self):
"Is the user a admin member?"
return self.admin

def __send_email(self, subject, body):
# TODO: move this to celery

if config.POSTMARK_API_KEY:
postmark = PostmarkClient(server_token=config.POSTMARK_API_KEY)
postmark.emails.send(
From=config.EMAIL_DEFAULT_FROM,
To=self.email,
Subject=subject,
HtmlBody=body,
)
log_user_event(
self,
"Sent email with subject: " + subject,
"email",
"Email content: " + body,
)
else:
log_user_event(
self,
"Email NOT sent due to configuration issue: " + subject,
"email",
"Email content: " + body,
)
def log_event(description, event_type, data=""):
UserEventLog(
description=description, logtype=event_type, user=user, data=data
).save()

return True
def __send_email(self, subject, body):
return send_single_email(self, self.email, subject, subject, body)

def email_notification(self, subject, title, preheader, message):
email_vars = {"preheader": preheader, "title": title, "message": message}
Expand Down Expand Up @@ -245,7 +226,7 @@ def email_enable_member(self):
return False

def reset_password(self):
log_user_event(self, "Password reset requested", "profile")
self.log_event("Password reset requested", "profile")
self.password_reset_key = uuid.uuid4()
self.password_reset_expire = timezone.now() + timedelta(hours=24)
self.save()
Expand Down Expand Up @@ -381,14 +362,12 @@ def sync_access(self):

def deactivate(self, request=None):
if request:
log_user_event(
self.user,
self.user.log_event(
request.user.profile.get_full_name() + " deactivated member",
"profile",
)
else:
log_user_event(
self.user,
self.user.log_event(
"system deactivated member",
"profile",
)
Expand All @@ -403,14 +382,12 @@ def deactivate(self, request=None):

def activate(self, request=None):
if request:
log_user_event(
self.user,
self.user.log_event(
request.user.profile.get_full_name() + " activated member",
"profile",
)
else:
log_user_event(
self.user,
self.user.log_event(
"system activated member",
"profile",
)
Expand Down Expand Up @@ -440,22 +417,10 @@ def email_profile_to(self, to_email):
)
subject = "A new member signed up! ({})".format(self.get_full_name())

postmark = PostmarkClient(server_token=config.POSTMARK_API_KEY)
postmark.emails.send(
From=config.EMAIL_DEFAULT_FROM,
To=to_email,
Subject=subject,
HtmlBody=email_string,
return send_single_email(
self.user, to_email, subject=subject, title=subject, message=email_string
)

log_user_event(
self.user,
"Sent email with subject: " + subject,
"email",
"Email content: " + email_string,
)
return True

def get_logs(self):
return UserEventLog.objects.filter(user=self.user)

Expand Down
Loading

0 comments on commit b1c363e

Please sign in to comment.