Exemple #1
0
    def get(self, author_username):
        """Handles GET requests."""
        user_settings = (
            user_services.get_user_settings_from_username(author_username))
        if user_settings is None:
            raise self.PageNotFoundException(
                Exception('User with given username does not exist'))
        if not any(role in user_settings.roles
                   for role in [BLOG_ADMIN, BLOG_POST_EDITOR]):
            raise self.PageNotFoundException(
                Exception('The given user is not a blog post author.'))
        blog_post_summaries = (
            blog_services.get_published_blog_post_summaries_by_user_id(
                user_settings.user_id,
                feconf.MAX_NUM_CARDS_TO_DISPLAY_ON_AUTHOR_SPECIFIC_BLOG_POST_PAGE))  #pylint: disable=line-too-long
        blog_post_summary_dicts = []
        if blog_post_summaries:
            blog_post_summary_dicts = (
                _get_blog_card_summary_dicts_for_homepage(blog_post_summaries))

        self.values.update({
            'author_name':
            author_username,
            'profile_picture_data_url':
            (user_settings.profile_picture_data_url),
            'author_bio':
            user_settings.user_bio,
            'summary_dicts':
            blog_post_summary_dicts
        })
        self.render_json(self.values)
Exemple #2
0
    def put(self):
        username = self.normalized_payload.get('username')
        action = self.normalized_payload.get('action')
        topic_id = self.normalized_payload.get('topic_id')

        user_settings = user_services.get_user_settings_from_username(username)

        if user_settings is None:
            raise self.InvalidInputException(
                'User with given username does not exist.')

        user_id = user_settings.user_id
        if action == 'assign':
            if not feconf.ROLE_ID_TOPIC_MANAGER in user_settings.roles:
                user_services.add_user_role(user_id,
                                            feconf.ROLE_ID_TOPIC_MANAGER)

            topic_manager = user_services.get_user_actions_info(user_id)
            topic_services.assign_role(user_services.get_system_user(),
                                       topic_manager,
                                       topic_domain.ROLE_MANAGER, topic_id)
        elif action == 'deassign':
            topic_services.deassign_manager_role_from_topic(
                user_services.get_system_user(), user_id, topic_id)

            if not topic_fetchers.get_topic_rights_with_user(user_id):
                user_services.remove_user_role(user_id,
                                               feconf.ROLE_ID_TOPIC_MANAGER)

        self.render_json({})
    def get(self, username: str) -> None:
        """Validates access to profile page."""

        user_settings = user_services.get_user_settings_from_username( # type: ignore[no-untyped-call]
            username)

        if not user_settings:
            raise self.PageNotFoundException
Exemple #4
0
    def get(self, username):
        """Handles GET requests for the publicly-viewable profile page."""

        user_settings = user_services.get_user_settings_from_username(username)

        if not user_settings:
            raise self.PageNotFoundException

        self.render_template('profile-page.mainpage.html')
Exemple #5
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        created_exp_summary_dicts = []
        edited_exp_summary_dicts = []

        subscriber_ids = subscription_services.get_all_subscribers_of_creator(
            user_settings.user_id)
        is_already_subscribed = (self.user_id in subscriber_ids)
        is_user_visiting_own_profile = (self.user_id == user_settings.user_id)

        user_contributions = user_services.get_user_contributions(
            user_settings.user_id)
        if user_contributions:
            created_exp_summary_dicts = (
                summary_services.
                get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.created_exploration_ids))
            edited_exp_summary_dicts = (
                summary_services.
                get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.edited_exploration_ids))
        profile_is_of_current_user = (self.username == username)

        self.values.update({
            'profile_is_of_current_user':
            profile_is_of_current_user,
            'profile_username':
            user_settings.username,
            'user_bio':
            user_settings.user_bio,
            'subject_interests':
            user_settings.subject_interests,
            'first_contribution_msec':
            (user_settings.first_contribution_msec
             if user_settings.first_contribution_msec else None),
            'profile_picture_data_url':
            user_settings.profile_picture_data_url,
            'user_impact_score':
            user_services.get_user_impact_score(user_settings.user_id),
            'created_exp_summary_dicts':
            created_exp_summary_dicts,
            'edited_exp_summary_dicts':
            edited_exp_summary_dicts,
            'is_already_subscribed':
            is_already_subscribed,
            'is_user_visiting_own_profile':
            is_user_visiting_own_profile
        })
        self.render_json(self.values)
Exemple #6
0
    def get(self, username):
        """Handles GET requests for the publicly-viewable profile page."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        self.values.update({"nav_mode": feconf.NAV_MODE_PROFILE, "PROFILE_USERNAME": username})
        self.render_template("profile/profile.html")
Exemple #7
0
    def get(self, username):
        """Handles GET requests for the publicly-viewable profile page."""

        user_settings = user_services.get_user_settings_from_username(username)

        if not user_settings:
            raise self.PageNotFoundException

        self.values.update({
            'PROFILE_USERNAME': user_settings.username,
        })
        self.render_template('pages/profile/profile.html')
Exemple #8
0
    def get(self, username):
        """Handles GET requests for the publicly-viewable profile page."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        self.values.update({
            'nav_mode': feconf.NAV_MODE_PROFILE,
            'user_bio': user_settings.user_bio,
        })
        self.render_template('profile/profile.html')
Exemple #9
0
    def get(self, username):
        """Handles GET requests for the publicly-viewable profile page."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        self.values.update({
            'nav_mode': feconf.NAV_MODE_PROFILE,
            'user_username': username,
            'user_bio': user_settings.user_bio,
            'user_pic_data_url': user_settings.profile_picture_data_url
        })
        self.render_template('profile/profile.html')
Exemple #10
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        self.values.update({
            'user_bio': user_settings.user_bio,
            'first_contribution_datetime': (
                utils.get_time_in_millisecs(user_settings.first_contribution_datetime)
                if user_settings.first_contribution_datetime else None),
            'profile_picture_data_url': user_settings.profile_picture_data_url,
        })
        self.render_json(self.values)
Exemple #11
0
    def delete(self):
        if self.email != feconf.ADMIN_EMAIL_ADDRESS:
            raise self.UnauthorizedUserException(
                'Only the default system admin can manage super admins')

        username = self.normalized_request.get('username')

        user_settings = user_services.get_user_settings_from_username(username)
        if user_settings is None:
            raise self.InvalidInputException('No such user exists')

        if user_settings.email == feconf.ADMIN_EMAIL_ADDRESS:
            raise self.InvalidInputException(
                'Cannot revoke privileges from the default super admin account')

        auth_services.revoke_super_admin_privileges(user_settings.user_id)
        self.render_json(self.values)
Exemple #12
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        created_exp_summary_dicts = []
        edited_exp_summary_dicts = []

        subscriber_ids = subscription_services.get_all_subscribers_of_creator(
            user_settings.user_id)
        is_already_subscribed = (self.user_id in subscriber_ids)
        is_user_visiting_own_profile = (self.user_id == user_settings.user_id)

        user_contributions = user_services.get_user_contributions(
            user_settings.user_id)
        if user_contributions:
            created_exp_summary_dicts = (
                summary_services.get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.created_exploration_ids))
            edited_exp_summary_dicts = (
                summary_services.get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.edited_exploration_ids))
        profile_is_of_current_user = (self.username == username)

        self.values.update({
            'profile_is_of_current_user': profile_is_of_current_user,
            'profile_username': user_settings.username,
            'user_bio': user_settings.user_bio,
            'subject_interests': user_settings.subject_interests,
            'first_contribution_msec': (
                user_settings.first_contribution_msec
                if user_settings.first_contribution_msec else None),
            'profile_picture_data_url': user_settings.profile_picture_data_url,
            'user_impact_score':user_services.get_user_impact_score(
                user_settings.user_id),
            'created_exp_summary_dicts': created_exp_summary_dicts,
            'edited_exp_summary_dicts': edited_exp_summary_dicts,
            'is_already_subscribed': is_already_subscribed,
            'is_user_visiting_own_profile': is_user_visiting_own_profile
        })
        self.render_json(self.values)
Exemple #13
0
    def put(self):
        username = self.payload.get('username')
        role = self.payload.get('role')
        user_settings = user_services.get_user_settings_from_username(username)

        if user_settings is None:
            raise self.InvalidInputException(
                'User with given username does not exist.')

        if role == feconf.ROLE_ID_TOPIC_MANAGER:
            # The Topic manager role assignment is handled via
            # TopicManagerRoleHandler.
            raise self.InvalidInputException(
                'Unsupported role for this handler.')

        user_services.add_user_role(user_settings.user_id, role)

        self.render_json({})
Exemple #14
0
    def test_searching_a_valid_user_to_invite(self):
        learner_group_services.create_learner_group('groupId', 'Group Title',
                                                    'Group Description',
                                                    [self.owner_id], [],
                                                    ['subtopic1'], [])
        params = {
            'username': self.NEW_USER_USERNAME,
            'learner_group_id': 'groupId'
        }
        response = self.get_json('/learner_group_search_student_handler',
                                 params=params)

        user_settings = user_services.get_user_settings_from_username(
            self.NEW_USER_USERNAME)
        self.assertEqual(response['username'], user_settings.username)
        self.assertEqual(response['profile_picture_data_url'],
                         user_settings.profile_picture_data_url)
        self.assertEqual(response['error'], '')
        self.logout()
Exemple #15
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        created_exploration_summary_dicts = []
        edited_exploration_summary_dicts = []

        user_contributions = user_services.get_user_contributions(
            user_settings.user_id)
        if user_contributions:
            created_exploration_summary_dicts = (
                summary_services.
                get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.created_exploration_ids))
            edited_exploration_summary_dicts = (
                summary_services.
                get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.edited_exploration_ids))

        self.values.update({
            'user_bio':
            user_settings.user_bio,
            'subject_interests':
            user_settings.subject_interests,
            'first_contribution_msec':
            (user_settings.first_contribution_msec
             if user_settings.first_contribution_msec else None),
            'profile_picture_data_url':
            user_settings.profile_picture_data_url,
            'user_impact_score':
            user_services.get_user_impact_score(user_settings.user_id),
            'created_exploration_summary_dicts':
            (created_exploration_summary_dicts),
            'edited_exploration_summary_dicts':
            (edited_exploration_summary_dicts)
        })
        self.render_json(self.values)
Exemple #16
0
    def get(self):
        """Handles GET requests."""

        username: str = self.normalized_request.get('username')
        learner_group_id: str = self.normalized_request.get('learner_group_id')

        user_settings = user_services.get_user_settings_from_username(username)

        if user_settings is None:
            self.render_json({
                'username': username,
                'profile_picture_data_url': '',
                'error': ('User with username %s does not exist.' % username)
            })
            return

        if self.username.lower() == username.lower():
            self.render_json({
                'username': user_settings.username,
                'profile_picture_data_url': '',
                'error': 'You cannot invite yourself to the group'
            })
            return

        (valid_invitation, error) = learner_group_services.can_user_be_invited(
            user_settings.user_id, user_settings.username, learner_group_id
        )

        if not valid_invitation:
            self.render_json({
                'username': user_settings.username,
                'profile_picture_data_url': '',
                'error': error
            })
            return

        self.render_json({
            'username': user_settings.username,
            'profile_picture_data_url': user_settings.profile_picture_data_url,
            'error': ''
        })
Exemple #17
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        self.values.update(
            {
                "user_bio": user_settings.user_bio,
                "first_contribution_datetime": (
                    utils.get_time_in_millisecs(user_settings.first_contribution_datetime)
                    if user_settings.first_contribution_datetime
                    else None
                ),
                "profile_picture_data_url": user_settings.profile_picture_data_url,
            }
        )
        self.render_json(self.values)
Exemple #18
0
    def get(self, username):
        """Handles GET requests."""
        if not username:
            raise self.PageNotFoundException

        user_settings = user_services.get_user_settings_from_username(username)
        if not user_settings:
            raise self.PageNotFoundException

        created_exploration_summary_dicts = []
        edited_exploration_summary_dicts = []

        user_contributions = user_services.get_user_contributions(
            user_settings.user_id)
        if user_contributions:
            created_exploration_summary_dicts = (
                exp_services.get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.created_exploration_ids,
                    user_settings.user_id))
            edited_exploration_summary_dicts = (
                exp_services.get_displayable_exp_summary_dicts_matching_ids(
                    user_contributions.edited_exploration_ids,
                    user_settings.user_id))

        self.values.update({
            'user_bio': user_settings.user_bio,
            'subject_interests': user_settings.subject_interests,
            'first_contribution_msec': (
                user_settings.first_contribution_msec
                if user_settings.first_contribution_msec else None),
            'profile_picture_data_url': user_settings.profile_picture_data_url,
            'user_impact_score':user_services.get_user_impact_score(
                user_settings.user_id),
            'created_exploration_summary_dicts': (
                created_exploration_summary_dicts),
            'edited_exploration_summary_dicts': (
                edited_exploration_summary_dicts)
        })
        self.render_json(self.values)