def GetUser(self, request, context): with session_scope(self._Session) as session: user = get_user_by_field(session, request.user) if not user: context.abort(grpc.StatusCode.NOT_FOUND, "No such user.") return api_pb2.User( username=user.username, name=user.name, city=user.city, verification=user.verification, community_standing=user.community_standing, num_references=0, gender=user.gender, age=user.age, color=user.color, joined=Timestamp_from_datetime(user.display_joined), last_active=Timestamp_from_datetime(user.display_last_active), occupation=user.occupation, about_me=user.about_me, about_place=user.about_place, languages=user.languages.split("|") if user.languages else [], countries_visited=user.countries_visited.split("|") if user.countries_visited else [], countries_lived=user.countries_lived.split("|") if user.countries_lived else [], friends=get_friends_status(session, context.user_id, user.id), )
def Search(self, request, context): with session_scope(self._Session) as session: return api_pb2.SearchRes( users=[ api_pb2.User( username=user.username, name=user.name, city=user.city, verification=user.verification, community_standing=user.community_standing, num_references=0, gender=user.gender, age=user.age, color=user.color, joined=Timestamp_from_datetime(user.display_joined), last_active=Timestamp_from_datetime(user.display_last_active), occupation=user.occupation, about_me=user.about_me, about_place=user.about_place, languages=user.languages.split("|") if user.languages else [], countries_visited=user.countries_visited.split("|") if user.countries_visited else [], countries_lived=user.countries_lived.split("|") if user.countries_lived else [] ) for user in session.query(User) \ .filter( or_( User.name.ilike(f"%{request.query}%"), User.username.ilike(f"%{request.query}%"), ) ) \ .all() ] )
def user_model_to_pb(db_user, session, context): num_references = session.query(Reference.from_user_id).filter(Reference.to_user_id == db_user.id).count() # returns (lat, lng) # we put people without coords on null island # https://en.wikipedia.org/wiki/Null_Island lat, lng = db_user.coordinates or (0, 0) user = api_pb2.User( user_id=db_user.id, username=db_user.username, name=db_user.name, city=db_user.city, hometown=db_user.hometown, lat=lat, lng=lng, radius=db_user.geom_radius, verification=db_user.verification, community_standing=db_user.community_standing, num_references=num_references, gender=db_user.gender, pronouns=db_user.pronouns, age=db_user.age, joined=Timestamp_from_datetime(db_user.display_joined), last_active=Timestamp_from_datetime(db_user.display_last_active), hosting_status=hostingstatus2api[db_user.hosting_status], meetup_status=meetupstatus2api[db_user.meetup_status], occupation=db_user.occupation, education=db_user.education, about_me=db_user.about_me, my_travels=db_user.my_travels, things_i_like=db_user.things_i_like, about_place=db_user.about_place, languages=db_user.languages.split("|") if db_user.languages else [], countries_visited=db_user.countries_visited.split("|") if db_user.countries_visited else [], countries_lived=db_user.countries_lived.split("|") if db_user.countries_lived else [], additional_information=db_user.additional_information, friends=get_friends_status(session, context.user_id, db_user.id), mutual_friends=[ api_pb2.MutualFriend(user_id=mutual_friend.id, username=mutual_friend.username, name=mutual_friend.name) for mutual_friend in db_user.mutual_friends(context.user_id) ], smoking_allowed=smokinglocation2api[db_user.smoking_allowed], sleeping_arrangement=sleepingarrangement2api[db_user.sleeping_arrangement], parking_details=parkingdetails2api[db_user.parking_details], avatar_url=db_user.avatar.thumbnail_url if db_user.avatar else None, ) if db_user.max_guests is not None: user.max_guests.value = db_user.max_guests if db_user.last_minute is not None: user.last_minute.value = db_user.last_minute if db_user.has_pets is not None: user.has_pets.value = db_user.has_pets if db_user.accepts_pets is not None: user.accepts_pets.value = db_user.accepts_pets if db_user.pet_details is not None: user.pet_details.value = db_user.pet_details if db_user.has_kids is not None: user.has_kids.value = db_user.has_kids if db_user.accepts_kids is not None: user.accepts_kids.value = db_user.accepts_kids if db_user.kid_details is not None: user.kid_details.value = db_user.kid_details if db_user.has_housemates is not None: user.has_housemates.value = db_user.has_housemates if db_user.housemate_details is not None: user.housemate_details.value = db_user.housemate_details if db_user.wheelchair_accessible is not None: user.wheelchair_accessible.value = db_user.wheelchair_accessible if db_user.smokes_at_home is not None: user.smokes_at_home.value = db_user.smokes_at_home if db_user.drinking_allowed is not None: user.drinking_allowed.value = db_user.drinking_allowed if db_user.drinks_at_home is not None: user.drinks_at_home.value = db_user.drinks_at_home if db_user.other_host_info is not None: user.other_host_info.value = db_user.other_host_info if db_user.sleeping_details is not None: user.sleeping_details.value = db_user.sleeping_details if db_user.area is not None: user.area.value = db_user.area if db_user.house_rules is not None: user.house_rules.value = db_user.house_rules if db_user.parking is not None: user.parking.value = db_user.parking if db_user.camping_ok is not None: user.camping_ok.value = db_user.camping_ok return user
def user_model_to_pb(db_user, session, context): num_references = session.query(Reference.from_user_id).filter( Reference.to_user_id == db_user.id).count() # returns (lat, lng) # we put people without coords on null island # https://en.wikipedia.org/wiki/Null_Island lat, lng = db_user.coordinates or (0, 0) pending_friend_request = None if db_user.id == context.user_id: friends_status = api_pb2.User.FriendshipStatus.NA else: friend_relationship = (session.query(FriendRelationship).filter( or_( and_(FriendRelationship.from_user_id == context.user_id, FriendRelationship.to_user_id == db_user.id), and_(FriendRelationship.from_user_id == db_user.id, FriendRelationship.to_user_id == context.user_id), )).filter( or_( FriendRelationship.status == FriendStatus.accepted, FriendRelationship.status == FriendStatus.pending, )).one_or_none()) if friend_relationship: if friend_relationship.status == FriendStatus.accepted: friends_status = api_pb2.User.FriendshipStatus.FRIENDS else: friends_status = api_pb2.User.FriendshipStatus.PENDING if friend_relationship.from_user_id == context.user_id: # we sent it pending_friend_request = api_pb2.FriendRequest( friend_request_id=friend_relationship.id, state=api_pb2.FriendRequest.FriendRequestStatus. PENDING, user_id=friend_relationship.to_user.id, sent=True, ) else: # we received it pending_friend_request = api_pb2.FriendRequest( friend_request_id=friend_relationship.id, state=api_pb2.FriendRequest.FriendRequestStatus. PENDING, user_id=friend_relationship.from_user.id, sent=False, ) else: friends_status = api_pb2.User.FriendshipStatus.NOT_FRIENDS user = api_pb2.User( user_id=db_user.id, username=db_user.username, name=db_user.name, city=db_user.city, hometown=db_user.hometown, lat=lat, lng=lng, radius=db_user.geom_radius, verification=db_user.verification, community_standing=db_user.community_standing, num_references=num_references, gender=db_user.gender, pronouns=db_user.pronouns, age=db_user.age, joined=Timestamp_from_datetime(db_user.display_joined), last_active=Timestamp_from_datetime(db_user.display_last_active), hosting_status=hostingstatus2api[db_user.hosting_status], meetup_status=meetupstatus2api[db_user.meetup_status], occupation=db_user.occupation, education=db_user.education, about_me=db_user.about_me, my_travels=db_user.my_travels, things_i_like=db_user.things_i_like, about_place=db_user.about_place, languages=db_user.languages.split("|") if db_user.languages else [], countries_visited=db_user.countries_visited.split("|") if db_user.countries_visited else [], countries_lived=db_user.countries_lived.split("|") if db_user.countries_lived else [], additional_information=db_user.additional_information, friends=friends_status, pending_friend_request=pending_friend_request, smoking_allowed=smokinglocation2api[db_user.smoking_allowed], sleeping_arrangement=sleepingarrangement2api[ db_user.sleeping_arrangement], parking_details=parkingdetails2api[db_user.parking_details], avatar_url=db_user.avatar.full_url if db_user.avatar else None, ) if db_user.max_guests is not None: user.max_guests.value = db_user.max_guests if db_user.last_minute is not None: user.last_minute.value = db_user.last_minute if db_user.has_pets is not None: user.has_pets.value = db_user.has_pets if db_user.accepts_pets is not None: user.accepts_pets.value = db_user.accepts_pets if db_user.pet_details is not None: user.pet_details.value = db_user.pet_details if db_user.has_kids is not None: user.has_kids.value = db_user.has_kids if db_user.accepts_kids is not None: user.accepts_kids.value = db_user.accepts_kids if db_user.kid_details is not None: user.kid_details.value = db_user.kid_details if db_user.has_housemates is not None: user.has_housemates.value = db_user.has_housemates if db_user.housemate_details is not None: user.housemate_details.value = db_user.housemate_details if db_user.wheelchair_accessible is not None: user.wheelchair_accessible.value = db_user.wheelchair_accessible if db_user.smokes_at_home is not None: user.smokes_at_home.value = db_user.smokes_at_home if db_user.drinking_allowed is not None: user.drinking_allowed.value = db_user.drinking_allowed if db_user.drinks_at_home is not None: user.drinks_at_home.value = db_user.drinks_at_home if db_user.other_host_info is not None: user.other_host_info.value = db_user.other_host_info if db_user.sleeping_details is not None: user.sleeping_details.value = db_user.sleeping_details if db_user.area is not None: user.area.value = db_user.area if db_user.house_rules is not None: user.house_rules.value = db_user.house_rules if db_user.parking is not None: user.parking.value = db_user.parking if db_user.camping_ok is not None: user.camping_ok.value = db_user.camping_ok return user
def user_model_to_pb(db_user, session, context): num_references = session.query(Reference.from_user_id).filter( Reference.to_user_id == db_user.id).count() user = api_pb2.User( user_id=db_user.id, username=db_user.username, name=db_user.name, city=db_user.city, verification=db_user.verification, community_standing=db_user.community_standing, num_references=num_references, gender=db_user.gender, age=db_user.age, color=db_user.color, joined=Timestamp_from_datetime(db_user.display_joined), last_active=Timestamp_from_datetime(db_user.display_last_active), hosting_status=hostingstatus2api[db_user.hosting_status], occupation=db_user.occupation, about_me=db_user.about_me, about_place=db_user.about_place, languages=db_user.languages.split("|") if db_user.languages else [], countries_visited=db_user.countries_visited.split("|") if db_user.countries_visited else [], countries_lived=db_user.countries_lived.split("|") if db_user.countries_lived else [], friends=get_friends_status(session, context.user_id, db_user.id), mutual_friends=[ api_pb2.MutualFriend(user_id=mutual_friend.id, username=mutual_friend.username, name=mutual_friend.name) for mutual_friend in db_user.mutual_friends(context.user_id) ], smoking_allowed=smokinglocation2api[db_user.smoking_allowed], avatar_url=db_user.avatar_url, ) if db_user.max_guests is not None: user.max_guests.value = db_user.max_guests if db_user.multiple_groups is not None: user.multiple_groups.value = db_user.multiple_groups if db_user.last_minute is not None: user.last_minute.value = db_user.last_minute if db_user.accepts_pets is not None: user.accepts_pets.value = db_user.accepts_pets if db_user.accepts_kids is not None: user.accepts_kids.value = db_user.accepts_kids if db_user.wheelchair_accessible is not None: user.wheelchair_accessible.value = db_user.wheelchair_accessible if db_user.sleeping_arrangement is not None: user.sleeping_arrangement.value = db_user.sleeping_arrangement if db_user.area is not None: user.area.value = db_user.area if db_user.house_rules is not None: user.house_rules.value = db_user.house_rules return user