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
Example #3
0
    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()