Skip to content

Commit fa11075

Browse files
committed
Merge branch '246-change-orm-get-return-values' into dev
2 parents 3a9b9f5 + 13ecde7 commit fa11075

File tree

4 files changed

+33
-69
lines changed

4 files changed

+33
-69
lines changed

backend/PyMatcha/models/user.py

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -85,20 +85,11 @@ def create(
8585
confirmed_on: datetime.datetime = None,
8686
) -> User:
8787
# Check email availability
88-
try:
89-
User.get(email=email)
90-
except ValueError:
91-
pass
92-
else:
88+
if User.get(email=email):
9389
logging.warning("Email {} taken".format(email))
9490
raise ConflictError("Email {} taken.".format(email), "Use another email.")
9591

96-
# Check username availability
97-
try:
98-
User.get(username=username)
99-
except ValueError:
100-
pass
101-
else:
92+
if User.get(username=username):
10293
logging.warning("Username {} taken".format(username))
10394
raise ConflictError("Username {} taken.".format(username), "Try another username.")
10495

@@ -153,20 +144,12 @@ def create(
153144
@staticmethod
154145
def register(email: str, username: str, password: str, first_name: str, last_name: str) -> User:
155146
# Check email availability
156-
try:
157-
User.get(email=email)
158-
except ValueError:
159-
pass
160-
else:
147+
if User.get(email=email):
161148
logging.debug("Email {} taken".format(email))
162149
raise ConflictError("Email {} taken.".format(email), "Use another email.")
163150

164151
# Check username availability
165-
try:
166-
User.get(username=username)
167-
except ValueError:
168-
pass
169-
else:
152+
if User.get(username=username):
170153
logging.warning("Username {} taken".format(username))
171154
raise ConflictError("Username {} taken.".format(username), "Try another username.")
172155

@@ -430,26 +413,17 @@ def get_user(uid: Any[int, str]) -> Optional[User]:
430413
try:
431414
uid = int(uid)
432415
except ValueError:
433-
try:
434-
user = User.get(username=uid)
435-
except ValueError:
436-
pass
437-
else:
416+
user = User.get(username=uid)
417+
if user:
438418
logging.debug("Found user {} from {}".format(user.id, uid))
439419
return user
440-
try:
441-
user = User.get(email=uid)
442-
except ValueError:
443-
pass
444-
else:
420+
user = User.get(email=uid)
421+
if user:
445422
logging.debug("Found user {} from {}".format(user.id, uid))
446423
return user
447424
else:
448-
try:
449-
user = User.get(id=uid)
450-
except ValueError:
451-
pass
452-
else:
425+
user = User.get(id=uid)
426+
if user:
453427
logging.debug("Found user {} from {}".format(user.id, uid))
454428
return user
455429
# If none of those worked, throw an error

backend/PyMatcha/routes/api/messages.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -98,20 +98,18 @@ def see_conversation_messages(with_uid):
9898
except NotFoundError:
9999
raise NotFoundError(f"With user {with_uid} not found.")
100100
unseen_messages = Message.get_multis(from_id=with_user.id, to_id=current_user.id, is_seen=False)
101-
if unseen_messages:
102-
for message in unseen_messages:
103-
message.is_seen = True
104-
message.seen_timestamp = datetime.datetime.utcnow()
105-
message.save()
101+
for message in unseen_messages:
102+
message.is_seen = True
103+
message.seen_timestamp = datetime.datetime.utcnow()
104+
message.save()
106105
return Success("Messages marked as seen.")
107106

108107

109108
@messages_bp.route("/messages/like/<message_id>", methods=["POST"])
110109
@jwt_required
111110
def like_message(message_id):
112-
try:
113-
message = Message.get(id=message_id)
114-
except ValueError:
111+
message = Message.get(id=message_id)
112+
if not message:
115113
raise NotFoundError(f"Message {message_id} not found.")
116114
if message.from_id == current_user.id:
117115
raise BadRequestError("Cannot like your own message.")
@@ -127,9 +125,8 @@ def like_message(message_id):
127125
@messages_bp.route("/messages/unlike/<message_id>", methods=["POST"])
128126
@jwt_required
129127
def unlike_message(message_id):
130-
try:
131-
message = Message.get(id=message_id)
132-
except ValueError:
128+
message = Message.get(id=message_id)
129+
if not message:
133130
raise NotFoundError(f"Message {message_id} not found.")
134131
if message.from_id == current_user.id:
135132
raise BadRequestError("Cannot unlike your own message.")
@@ -146,8 +143,5 @@ def unlike_message(message_id):
146143
@jwt_required
147144
def get_new_messages():
148145
message_list = Message.get_multis(to_id=current_user.id, is_seen=False)
149-
if not message_list:
150-
new_messages = []
151-
else:
152-
new_messages = [m.to_dict() for m in message_list]
146+
new_messages = [m.to_dict() for m in message_list]
153147
return SuccessOutput("new_messages", new_messages)

backend/PyMatcha/utils/orm/_model.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,11 @@ def get(cls, **kwargs):
221221
"""
222222
Get a model from the database, using a single keyword argument as a filter.
223223
224-
Class method allows you to use without instanciation eg.
224+
Class method allows you to use without instantiation eg.
225225
226226
model = Model.get(username="test")
227227
228-
Returns a populated user instance on success and raises an error if the row count was 0
228+
Returns a populated user instance on success and returns none if nothing was found
229229
230230
"""
231231

@@ -259,7 +259,7 @@ def get(cls, **kwargs):
259259
if data:
260260
return cls(data)
261261
else:
262-
raise ValueError("Not found.")
262+
return None
263263

264264
@classmethod
265265
def get_multi(cls, **kwargs):
@@ -305,7 +305,7 @@ def get_multi(cls, **kwargs):
305305
if data:
306306
return cls(data)
307307
else:
308-
raise ValueError("Not found.")
308+
return None
309309

310310
@classmethod
311311
def get_multis(cls, **kwargs) -> List:
@@ -359,7 +359,7 @@ def get_multis(cls, **kwargs) -> List:
359359
ret_list.append(cls(i))
360360
return ret_list
361361
else:
362-
return None
362+
return []
363363

364364
@classmethod
365365
def select_all(cls):

backend/PyMatcha/utils/tasks.py

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@ def update_heat_scores():
3737
reports_received = len(user.get_reports_received())
3838
views = len(user.get_views())
3939
matches = len(user.get_matches())
40-
try:
41-
messages = len(Message.get_multi(to_id=user.id))
42-
except ValueError:
40+
messages = Message.get_multi(to_id=user.id)
41+
if not messages:
4342
messages = 0
43+
else:
44+
messages = len(messages)
4445

4546
score = BASE_HEAT_SCORE
46-
if user.username == "seluj78" or user.username == "tet":
47+
if user.username == "seluj78" or user.username == "lauris":
4748
score += 100
4849
score += likes_received * LIKES_MULTIPLIER
4950
score += superlikes_received * SUPERLIKES_MULTIPLIER
@@ -71,12 +72,8 @@ def update_offline_users():
7172
date_lastseen = float(redis.get(key))
7273
# If the user has passed the deadline
7374
if date_lastseen < login_deadline_timestamp:
74-
try:
75-
u = User.get(id=user_id)
76-
except ValueError:
77-
# Edge case where the user has been deleted from DB while he was still online
78-
pass
79-
else:
75+
u = User.get(id=user_id)
76+
if u:
8077
u.date_lastseen = datetime.datetime.fromtimestamp(date_lastseen)
8178
u.is_online = False
8279
u.save()
@@ -85,9 +82,8 @@ def update_offline_users():
8582
redis.delete(key)
8683
count += 1
8784
else:
88-
try:
89-
u = User.get(id=user_id)
90-
except ValueError:
85+
u = User.get(id=user_id)
86+
if not u:
9187
# Edge case where the user has been deleted from DB while he was still online
9288
redis.delete(key)
9389
else:

0 commit comments

Comments
 (0)