Esempio n. 1
0
    def post(self, request, format=None):
        """
        Creates a new service
        """
        if request.user.is_admin:
            serializer = self.serializer_class(data=request.data)
            if serializer.is_valid():
                # Getting serialized data
                request_data = serializer.data
                if not Service.objects.filter(name=request_data['name']):
                    try:
                        with transaction.atomic():

                            # Creating service
                            service = Service()
                            service.name = request_data['name']
                            service.category = Category.objects.get(
                                pk=request_data['category'])
                            service.cost_price = request_data['cost_price']
                            service.sale_price = request_data['sale_price']

                            if 'description' in request_data and request_data[
                                    'description']:
                                service.description = request_data[
                                    'description']

                            service.save()
                            return Response({"id": service.id},
                                            status=status.HTTP_201_CREATED)

                    except Exception as e:
                        return Response(
                            {
                                "type": "internal_server_error",
                                "detail": str(e)
                            },
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
                else:
                    return Response({"type": "service_already_exist"},
                                    status=status.HTTP_409_CONFLICT)
            else:
                return Response(
                    {
                        "type": "validation_error",
                        "errors": serializer.errors
                    },
                    status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response({"type": "unauthorized"},
                            status=status.HTTP_401_UNAUTHORIZED)
Esempio n. 2
0
def save(request):
    # Update service fields
    try:
        service_id = request.POST.get("id")
        if service_id != '0':
            service = Service.objects.get(id=service_id)
        else:
            service = Service()
    except Service.DoesNotExist:
        service = Service()

    service.name = request.POST['name']
    service.escalate_after = request.POST['escalate_after']
    service.retry = request.POST['retry']
    service.notifications_disabled = request.POST.get("disable_notification",
                                                      "off") == "on"
    service.send_resolve_enabled = request.POST.get(
        "send_resolve_notification", "off") == "on"
    if (request.POST['policy']):
        pol = SchedulePolicy.objects.get(id=request.POST['policy'])
    else:
        pol = None
    service.policy = pol
    # Save service
    try:
        service.save()
    except IntegrityError:
        messages.error(request, 'Service validation failed')
        if len(request.POST['id']) > 0:
            return HttpResponseRedirect(
                reverse('openduty.services.edit', None,
                        [str(request.POST['id'])]))
        else:
            return HttpResponseRedirect(reverse('openduty.services.new'))

    return HttpResponseRedirect('/services/')