def get_exist_records(user_id: int) -> list: results = set() query_set = Meeting.select().where((Meeting.initiator_id == user_id) | (Meeting.companion_id == user_id)) for i in query_set: results.add(i.initiator_id.id) results.add(i.companion_id.id) return list(results)
def set_status(_id: int, status: MeetingStatus) -> Optional[Meeting]: meeting = Meeting.select().where(Meeting.id == _id) if meeting.exists(): meeting = meeting.get() meeting.status = status meeting.save() return meeting return None
def get_info(_id: int) -> str: user = User.get(User.id == _id) meetings_as_initiator = Meeting.select().where( user.id == Meeting.initiator_id) ratings_as_initiator = [] for meeting in meetings_as_initiator: ratings_as_initiator.append(meeting.companion_rate) try: rating_as_initiator = round( sum(ratings_as_initiator) / len(ratings_as_initiator), 0) except ZeroDivisionError: rating_as_initiator = 0 meetings_as_companion = Meeting.select().where( user.id == Meeting.companion_id) ratings_as_companion = [] for meeting in meetings_as_companion: if meeting.initiator_rate is not None: ratings_as_companion.append(meeting.initiator_rate) try: rating_as_companion = round( sum(ratings_as_companion) / len(ratings_as_companion), 0) except ZeroDivisionError: rating_as_companion = 0 if rating_as_initiator == 0: rating = rating_as_companion elif rating_as_companion == 0: rating = rating_as_initiator else: rating = (rating_as_initiator + rating_as_companion) / 2 rating_str = "⭐" * int(rating) return f"Имя: \n{user.name}\n\nО себе: \n{user.bio}\n\nРейтинг: \n{rating_str if rating_str != '' else 'нет рейтинга'}"
def get_history(_id: int) -> str: query = ((Meeting.initiator_id == _id) | (Meeting.companion_id == _id)) meetings = Meeting.select().where(query).order_by(Meeting.id.desc()).limit(5) history_entries = [] meeting: Meeting for meeting in meetings: if _id == meeting.initiator_id.id: companion = meeting.companion_id else: companion = meeting.initiator_id history_entries.append(f"Дата: {meeting.meeting_time.strftime('%H:%M %d.%m.%Y')}\nС кем: {companion.name}") return "\n\n".join(history_entries)
def get_by_id(meeting_id) -> Optional[Meeting]: query_set = Meeting.select().where(Meeting.id == meeting_id) if query_set.exists(): return query_set.get() return None
def get_in_progress(initiator_id: int) -> Meeting: return Meeting.select().where((Meeting.initiator_id == initiator_id) & (Meeting.is_ready == False)).get()