class EnterpriseCustomerReportingConfigurationViewSet(EnterpriseReadWriteModelViewSet): """ API views for the ``enterprise-customer-reporting`` API endpoint. """ queryset = models.EnterpriseCustomerReportingConfiguration.objects.all() serializer_class = serializers.EnterpriseCustomerReportingConfigurationSerializer lookup_field = 'uuid' permission_classes = [permissions.IsAuthenticated] USER_ID_FILTER = 'enterprise_customer__enterprise_customer_users__user_id' FIELDS = ( 'enterprise_customer', ) filter_fields = FIELDS ordering_fields = FIELDS @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_ent_cust_from_report_config_uuid(kwargs['uuid'])) def retrieve(self, request, *args, **kwargs): return super(EnterpriseCustomerReportingConfigurationViewSet, self).retrieve(request, *args, **kwargs) @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_enterprise_customer_from_user_id(request.user.id)) def list(self, request, *args, **kwargs): return super(EnterpriseCustomerReportingConfigurationViewSet, self).list(request, *args, **kwargs) @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_enterprise_customer_from_user_id(request.user.id)) def create(self, request, *args, **kwargs): config_data = request.data.copy() config_data['enterprise_customer_id'] = get_enterprise_customer_from_user_id(request.user.id) serializer = self.get_serializer(data=config_data) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_ent_cust_from_report_config_uuid(kwargs['uuid'])) def update(self, request, *args, **kwargs): return super(EnterpriseCustomerReportingConfigurationViewSet, self).update(request, *args, **kwargs) @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_ent_cust_from_report_config_uuid(kwargs['uuid'])) def partial_update(self, request, *args, **kwargs): return super(EnterpriseCustomerReportingConfigurationViewSet, self).partial_update(request, *args, **kwargs) @permission_required( 'enterprise.can_manage_reporting_config', fn=lambda request, *args, **kwargs: get_ent_cust_from_report_config_uuid(kwargs['uuid'])) def destroy(self, request, *args, **kwargs): return super(EnterpriseCustomerReportingConfigurationViewSet, self).destroy(request, *args, **kwargs)
def create(self, request, *args, **kwargs): config_data = request.data.copy() config_data['enterprise_customer_id'] = get_enterprise_customer_from_user_id(request.user.id) serializer = self.get_serializer(data=config_data) serializer.is_valid(raise_exception=True) serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED)
def get(self, request): """ Get the auth token against logged in user from tableau """ url = settings.TABLEAU_URL + '/trusted' enterprise_customer_uuid = get_enterprise_customer_from_user_id(request.user.id) # Enterprise customer uuid is being store without hyphens in tableau tableau_username = enterprise_customer_uuid.replace('-', '') payload = {'username': tableau_username} files = [] headers = { 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload, files=files) return Response(data=response.text)