def show(self, information_message=None): ViewPartition().border_logo() print("Gostaria de adicionar uma imagem à Postagem? Digite: \n" , "S - Para sim \n" , "N - Para não " ) image_add_choice = InputField().show('>>') if image_add_choice and image_add_choice.upper() == "S": image_path = Dialog().browsing_image() else: image_path = None if not image_path or image_path.isspace() or not image_add_choice.upper() == "S": image_message_text = "Nenhuma imagem escolhida" else: image_message_text = image_path ViewPartition().border_logo() print("Imagem da Postagem>>", image_message_text) text = InputField().show('Texto da Postagem>>', show_divisory=False) if not image_add_choice and not text: return None post = Post.create_instance(text, image_path, self.logged_user)
def outside_account(self): Menus().show_start_menu() while True: user_input = InputField().show(">> ").lower() if user_input in ['login', '1']: try: self.current_logged_user = Login().show() return 'home_logged_perfil' except EmptyFieldException: Menus().show_start_menu() continue elif user_input in ['registrar', '2']: try: self.current_logged_user = Register().show() return 'home_logged_perfil' except EmptyFieldException: Menus().show_start_menu() continue elif user_input in ['sair', '3']: ViewPartition().clear_console() return 'exit' else: Menus().show_start_menu( information_message="Escolha inválida, tente novamente")
def _show_commentary_list(self, commentary_list, information_message=None): ViewPartition().border_logo() print(self.displayed_post) ViewPartition().border_divisory() if_list_is_empty_message = 'Este Post não possui Comentários' if commentary_list: print("Todos os Comentários:\n") List(commentary_list, if_list_is_empty_message=if_list_is_empty_message, separator='\n', index_left_list_element=False, word_before_index='Comentário ').run() ViewPartition().border_divisory() print( 'Caso deseje visualizar algum comentário, selecione ele pelo número ao acima dele' ) print( 'Caso deseje escrever um novo comentário digite \'C\' e pressione Enter' ) print("(Caso deseje retornar, deixe o campo em branco)") ViewPartition().border_information_message(information_message) return self._filter_selected_value(InputField().show('>>'))
def _show_notifications_list(self, notifications_list, information_message=None): ViewPartition().border_logo() print("Central de Notificações") ViewPartition().border_divisory() if_list_is_empty_message = 'Você não possui Notificações' List(notifications_list, if_list_is_empty_message=if_list_is_empty_message, separator='\n', index_left_list_element=False, word_before_index='Notificação ').run() ViewPartition().border_divisory() if notifications_list: print( 'Caso deseje acessar alguma Notificação, selecione ela pelo número acima dela' ) print("(Caso deseje retornar, deixe o campo em branco)") ViewPartition().border_information_message(information_message) return self._filter_selected_value(InputField().show('>>'))
def _show_selected_post(self, post, information_message=None): ViewPartition().border_logo() print('@' + str(post.author_id) + ' - ' + str(post.date)) ViewPartition().border_divisory() if post.image: Dialog().show_image(post.image) if not self._is_empty_field(post.text): print(str(post.text)) ViewPartition().border_divisory() print("O que gostaria de fazer? Digite uma das opcoes abaixo:") print(" 1 - Ver Comentários") if self._post_belongs_to_logged_user(): print(" 2 - Deletar esse Post") print(" R - Retornar para Lista de Posts") ViewPartition().border_information_message(information_message) return self._filter_selected_value(InputField().show('>>'))
def show(self): ViewPartition().border_dialog( "Preencha os campos de Registro (deixe-os vazio caso queira retornar ao menu)" ) while True: try: complete_name = InputField().show("Nome Completo> ") complete_name = Validator().validate_empty_field( complete_name, "Nome Completo") user_name = InputField().show("Nome de Usuário> ", show_divisory=False) user_name = Validator().validate_empty_field( user_name, "Nome de Usuário") user_name = Validator().validate_user_name_characters( user_name) password = InputField().show("Senha> ", show_divisory=False) password = Validator().validate_empty_field(password, "Senha") user = Accounts().register_user(user_name, complete_name, password) return user except EmptyFieldException as exception: raise EmptyFieldException(exception.field_name) except RepeatedPrimaryKeyException: ViewPartition().border_dialog("Nome de Usuário já existe") except InvalidUsernameException as e: ViewPartition().border_dialog( "O nome de usuário apenas pode conter letras, números e o underline" ) except ValueError: ViewPartition().border_dialog( "Alguns dos caracteres não são permitidos") except Exception: ViewPartition().border_dialog( "Algo deu errado, tente novamente")
def show(self, information_message=None): ViewPartition().border_logo() if self.displayed_post: print(self.displayed_post) ViewPartition().border_divisory() text = InputField().show('Texto do Comentário>>', show_divisory=False) if self._is_empty_field(text): return None else: Commentary.create_instance(self.displayed_post, text, self.logged_user)
def show(self): ViewPartition().border_dialog( "Preencha os campos de Login (deixe-os vazio caso queira retornar ao menu)" ) while True: try: user_name = InputField().show("Nome de Usuário> ") user_name = Validator().validate_empty_field( user_name, "Nome de Usuário") password = InputField().show("Senha> ", show_divisory=False) password = Validator().validate_empty_field(password, "Senha") user = Accounts().login_user(user_name, password) if not user: ViewPartition().border_dialog( "Está conta não existe, tente novamente") continue else: return user except WrongPasswordException: ViewPartition().border_dialog( "Senha incorreta, por favor, tente novamente") except EmptyFieldException as exception: raise EmptyFieldException(exception.field_name) except ValueError: ViewPartition().border_dialog( "Alguns dos caracteres não são permitidos") except Exception: ViewPartition().border_dialog( "Algo deu errado, tente novamente")
def _show_post_list(self, post_list, information_message=None): ViewPartition().border_logo() if_list_is_empty_message = 'Você não possui Posts' if self._displayed_user_is_logged_user else 'Este usuário não possui Posts' List(post_list, if_list_is_empty_message=if_list_is_empty_message).run() ViewPartition().border_divisory() print('Caso deseje visualizar algum post, selecione ele pelo número ao lado') print("(Caso deseje retornar, deixe o campo em branco)") ViewPartition().border_information_message(information_message) return self._filter_selected_value(InputField().show('>>'))
def _show_selected_commentary(self, commentary, information_message=None): ViewPartition().border_logo() print(self.displayed_post) ViewPartition().border_divisory() print(commentary) ViewPartition().border_divisory() print("O que gostaria de fazer? Digite uma das opcoes abaixo:") if self._post_belongs_to_logged_user(): print(" 1 - Deletar esse Comentário") print(" R - Retornar para Lista de Comentários") ViewPartition().border_information_message(information_message) return self._filter_selected_value(InputField().show('>>'))
def _show_follow_list(self, follow_list, follow_type='followers'): ViewPartition().border_logo() emtpy_message_subject = 'Seguidores' if follow_type == 'followers' else 'Usuários que está Seguindo' List(follow_list, if_list_is_empty_message='Não há ' + emtpy_message_subject + ' para serem exibidos').run() ViewPartition().border_divisory() print( 'Caso deseje visualizar algum usuário, selecione ele pelo número ao lado' ) print('Para retornar basta manter o campo vazio e pressionar Enter') return InputField().show('>>')
def show(self, users_list=[], information_message=None): ViewPartition().border_logo() if not users_list: print( "Para pesquisar determinado usuário, basta digitar seu nome abaixo" ) else: print("Sua pesquisa resultou em", len(users_list), "usuários:") List(users_list).run() ViewPartition().border_divisory() print( "Selecione o usuário que você deseja visualizar pelo número ao lado" ) print("(Caso deseje retornar, deixe o campo em branco)") ViewPartition().border_information_message(information_message) return InputField().show('>>')
def show(self, topic_list=[], information_message=None): ViewPartition().border_logo() if not topic_list: print( "Para pesquisar determinado tópico, basta digitar uma palavra abaixo" ) else: print("Sua pesquisa resultou em", len(topic_list), "tópicos:") List(topic_list, separator='\n').run() ViewPartition().border_divisory() print( "Selecione o tópico que você deseja visualizar pelo número ao lado" ) print("(Caso deseje retornar, deixe o campo em branco)") ViewPartition().border_information_message(information_message) return InputField().show('>>')
def show(self, perfil_user, information_message=None): ViewPartition().border_logo() if not perfil_user: return {'command': 'home_logged_perfil', 'object': None} perfil_belongs_to_logged_user = True if self.logged_user.user_name == perfil_user.user_name else False permission_to_access_privacy = perfil_belongs_to_logged_user or not perfil_user.privacy or ( Follow.follow_exist(self.logged_user, perfil_user) and (Follow.get_follow_instance(self.logged_user.user_name, perfil_user.user_name).confirmation)) if perfil_belongs_to_logged_user: print("Bem-vindo,", perfil_user.user_name) ViewPartition().border_divisory() elif Follow.follow_exist( perfil_user, self.logged_user) and (Follow.get_follow_instance( perfil_user.user_name, self.logged_user.user_name).confirmation == True): print("@" + perfil_user.user_name + " segue você") ViewPartition().border_divisory() privacy_status = 'Privado' if perfil_user.privacy else 'Público' print("Informações do Perfil " + privacy_status) print("Nome de Usuário: " + str(perfil_user.user_name) + "\n" \ "Nome Real: " + str(perfil_user.complete_name) + "\n" \ "Biografia: " + str(perfil_user.biography) + " " ) ViewPartition().border_divisory() print("O que gostaria de fazer? Digite uma das opcoes abaixo:") if permission_to_access_privacy: print(" 1 - Ver Linha do Tempo \n" \ " 2 - Ver Seguidores \n" \ " 3 - Ver Aqueles que Segue " ) print(" 4 - Buscar Perfil \n" \ " 5 - Buscar Tópico " ) if perfil_belongs_to_logged_user: option_nova_postagem = " C - Para Criar uma Nova Postagem \n" option_notificacoes = " N - Para Notificações \n" option_privacidade = " P - Para tornar seu Perfil Privado\n" if not self.logged_user.privacy else " P - Para tornar seu Perfil Público\n" option_deslogar = " D - Para sair da Conta " extra_options = option_nova_postagem + option_notificacoes + option_privacidade + option_deslogar else: if Follow.follow_exist(self.logged_user, perfil_user): follow = Follow.get_follow_instance(self.logged_user.user_name, perfil_user.user_name) option_seguir = '' if follow.confirmation == False else ' S - Para deixar de Seguir\n' else: option_seguir = ' S - Para Seguir\n' option_bloquear = ' B - Para Bloquear\n' option_retornar = ' R - Para retornar para seu Perfil' extra_options = option_seguir + option_bloquear + option_retornar print(extra_options) ViewPartition().border_information_message(information_message) return InputField().show('>>')
def _show_selected_notification(self, notification, information_message=None): ViewPartition().border_logo() print(notification) ViewPartition().border_divisory() if notification.notification_type == 'follow': if self.logged_user.privacy: print("Você aceitará o pedido dele?: \n", "S - Para sim \n", "N - Para não ") choice = self._filter_selected_value(InputField().show('>>')) if choice not in ['S', 'N']: return None follow_relationship = Follow.get_follow_instance( notification.id_follow_follower, notification.id_follow_followed) follow_relationship.set_confirmation(True if choice == 'S' else False) Notification.delete_instance(notification.notification_id) return { 'command': 'access_user', 'object': User.get_user_instance(notification.id_follow_follower) } else: return { 'command': 'access_user', 'object': User.get_user_instance(notification.id_follow_follower) } elif notification.notification_type == 'follow confirmation': Follow.delete_instance( User.get_user_instance(notification.id_follow_follower), User.get_user_instance(notification.id_follow_followed)) Notification.delete_instance(notification.notification_id) elif notification.notification_type == 'post markup': return { 'command': 'access_post', 'object': Post.get_post_instance(notification.id_postmarkup_post) } elif notification.notification_type == 'commentary markup': commentary = Commentary.get_commentary_instance( notification.id_commentarymarkup_commentary) post = Post.get_post_instance(commentary.post_id) return {'command': 'access_post', 'object': post} else: return None