Beispiel #1
0
    def toggle_data(self, user, source, public):
        if (source not in get_source_labels() and
                not source.startswith('direct-sharing-')):
            error_msg = ('Public sharing toggle attempted for '
                         'unexpected source "{}"'.format(source))
            django_messages.error(self.request, error_msg)

            if not settings.TESTING:
                raven_client.captureMessage(error_msg)

        participant = user.member.public_data_participant
        access, _ = PublicDataAccess.objects.get_or_create(
            participant=participant, data_source=source)
        access.is_public = True if public == 'True' else False
        access.save()

        if source.startswith('direct-sharing-'):
            match = re.match(r'direct-sharing-(?P<id>\d+)', source)
            if match:
                project = DataRequestProject.objects.get(
                    id=int(match.group('id')))
                if project.approved and not ActivityFeed.objects.filter(
                        member=user.member, project=project,
                        action='publicly-shared').exists():
                    event = ActivityFeed(
                        member=user.member,
                        project=project,
                        action='publicly-shared')
                    event.save()
Beispiel #2
0
    def authorize_member(self):
        project = self.get_object()

        self.request.user.log(
            'direct-sharing:{0}:authorize'.format(project.type),
            {'project-id': project.id})

        django_messages.success(
            self.request,
            ('You have successfully joined the project "{}".'.format(
                project.name)))
        if project.approved and not ActivityFeed.objects.filter(
                member=self.project_member.member,
                project=project,
                action='joined-project').exists():
            event = ActivityFeed(member=self.project_member.member,
                                 project=project,
                                 action='joined-project')
            event.save()

        project_member = self.project_member

        # The OAuth2 projects have join and authorize in the same step
        if project.type == 'oauth2':
            project_member.joined = True

        project_member.authorized = True
        project_member.revoked = False
        project_member.message_permission = project.request_message_permission
        project_member.username_shared = project.request_username_access
        project_member.sources_shared = project.request_sources_access
        project_member.all_sources_shared = project.all_sources_access

        project_member.save()
Beispiel #3
0
def member_post_save_activityfeed_event(sender, instance, created, raw,
                                        update_fields, **kwargs):
    """
    Record an 'account-created' ActivityFeed event when a Member signs up.
    """
    if raw or not created:
        return

    event = ActivityFeed(member=instance, action="created-account")
    event.save()
def member_post_save_activityfeed_event(
    sender, instance, created, raw, update_fields, **kwargs
):
    """
    Record an 'account-created' ActivityFeed event when a Member signs up.
    """
    if raw or not created:
        return

    event = ActivityFeed(member=instance, action="created-account")
    event.save()
Beispiel #5
0
    def toggle_data(self, user, source, public):
        if source not in get_source_labels() and not source.startswith(
            "direct-sharing-"
        ):
            error_msg = (
                "Public sharing toggle attempted for "
                'unexpected source "{}"'.format(source)
            )
            django_messages.error(self.request, error_msg)

            if not settings.TESTING:
                raven_client.captureMessage(error_msg)
            return
        project = id_label_to_project(source)
        project_membership = DataRequestProjectMember.objects.get(
            member=user.member, project=project
        )

        participant = user.member.public_data_participant
        access, _ = PublicDataAccess.objects.get_or_create(
            participant=participant, project_membership=project_membership
        )
        access.is_public = False
        if public == "True":
            if not project.no_public_data:
                access.is_public = True
        access.save()

        if (
            project.approved
            and not ActivityFeed.objects.filter(
                member=user.member, project=project, action="publicly-shared"
            ).exists()
        ):
            event = ActivityFeed(
                member=user.member, project=project, action="publicly-shared"
            )
            event.save()