예제 #1
0
def request_access_view(request, dataset_uuid):
    dataset = find_dataset_or_visualisation(dataset_uuid, request.user)

    if request.method == 'POST':
        form = RequestAccessForm(request.POST)
        if form.is_valid():
            goal = form.cleaned_data['goal']
            contact_email = form.cleaned_data['email']

            user_edit_relative = reverse('admin:auth_user_change',
                                         args=[request.user.id])
            user_url = request.build_absolute_uri(user_edit_relative)

            dataset_url = request.build_absolute_uri(
                dataset.get_absolute_url())

            if (isinstance(dataset, VisualisationCatalogueItem)
                    and dataset.visualisation_template):
                ticket_reference = _notify_visualisation_access_request(
                    request, dataset, dataset_url, contact_email, goal)
            else:
                ticket_reference = create_zendesk_ticket(
                    contact_email,
                    request.user,
                    goal,
                    user_url,
                    dataset.name,
                    dataset_url,
                    dataset.information_asset_owner,
                    dataset.information_asset_manager,
                )

            log_event(
                request.user,
                EventLog.TYPE_DATASET_ACCESS_REQUEST,
                dataset,
                extra={
                    'contact_email': contact_email,
                    'goal': goal,
                    'ticket_reference': ticket_reference,
                },
            )

            url = reverse('datasets:request_access_success',
                          args=[dataset_uuid])
            return HttpResponseRedirect(f'{url}?ticket={ticket_reference}')

    return render(
        request,
        'request_access.html',
        {
            'dataset': dataset,
            'authenticated_user': request.user,
            'is_visualisation': isinstance(dataset,
                                           VisualisationCatalogueItem),
        },
    )
예제 #2
0
    def get(self, request, *args, **kwargs):
        access_request = self.get_object()
        if not access_request.zendesk_reference_number:
            catalogue_item = (find_dataset(access_request.catalogue_item_id,
                                           self.request.user)
                              if access_request.catalogue_item_id else None)

            if (isinstance(catalogue_item, VisualisationCatalogueItem)
                    and catalogue_item.visualisation_template is not None):
                access_request.zendesk_reference_number = (
                    zendesk.notify_visualisation_access_request(
                        request,
                        access_request,
                        catalogue_item,
                    ))
            else:
                access_request.zendesk_reference_number = zendesk.create_zendesk_ticket(
                    request,
                    access_request,
                    catalogue_item,
                )
            access_request.save()

            if catalogue_item:
                log_event(
                    request.user,
                    EventLog.TYPE_DATASET_ACCESS_REQUEST,
                    catalogue_item,
                    extra={
                        "ticket_reference":
                        access_request.zendesk_reference_number,
                    },
                )
            else:
                log_event(
                    request.user,
                    EventLog.TYPE_TOOLS_ACCESS_REQUEST,
                    extra={
                        "ticket_reference":
                        access_request.zendesk_reference_number,
                    },
                )
        return super().get(request, *args, **kwargs)
예제 #3
0
def request_access_view(request, dataset_uuid):
    dataset = find_dataset(dataset_uuid, request.user)

    if request.method == 'POST':
        form = RequestAccessForm(request.POST)
        if form.is_valid():
            goal = form.cleaned_data['goal']
            contact_email = form.cleaned_data['email']

            user_edit_relative = reverse('admin:auth_user_change',
                                         args=[request.user.id])
            user_url = request.build_absolute_uri(user_edit_relative)

            dataset_url = request.build_absolute_uri(
                dataset.get_absolute_url())

            ticket_reference = create_zendesk_ticket(
                contact_email,
                request.user,
                goal,
                user_url,
                dataset.name,
                dataset_url,
                dataset.information_asset_owner,
                dataset.information_asset_manager,
            )

            url = reverse('datasets:request_access_success',
                          args=[dataset_uuid])
            return HttpResponseRedirect(f'{url}?ticket={ticket_reference}')

    return render(
        request,
        'request_access.html',
        {
            'dataset': dataset,
            'authenticated_user': request.user
        },
    )