Ejemplo n.º 1
0
def task_edit(request, task_id):
    task_obj = get_object_or_404(Task, pk=task_id)
    accounts = Account.objects.filter(status="open")

    if not (request.user.role == 'ADMIN' or request.user.is_superuser or task_obj.created_by == request.user or request.user in task_obj.assigned_to.all()):
        raise PermissionDenied

    if request.method == 'GET':
        if request.user.role == 'ADMIN' or request.user.is_superuser:
            users = User.objects.filter(is_active=True).order_by('email')
        elif request.user.google.all():
            users = []
        else:
            users = User.objects.filter(role='ADMIN').order_by('email')
        # form = TaskForm(request_user=request.user)
        form = TaskForm(instance=task_obj, request_user=request.user)
        return render(request, 'task_create.html', {'form': form, 'task_obj': task_obj,
                                                    'users': users, 'accounts': accounts, "teams": Teams.objects.all(), })

    if request.method == 'POST':
        form = TaskForm(request.POST, instance=task_obj,
                        request_user=request.user)
        if form.is_valid():
            task = form.save(commit=False)
            task.updated_by = request.user
            previous_assigned_to_users = list(
                task_obj.assigned_to.all().values_list('id', flat=True))
            task.save()
            form.save_m2m()
            # task.assigned_to.clear()
            # task.contacts.clear()
            # task.assigned_to.add(*request.POST.getlist('assigned_to'))
            # task.contacts.add(*request.POST.getlist('contacts'))
            if request.POST.getlist('teams', []):
                user_ids = Teams.objects.filter(id__in=request.POST.getlist(
                    'teams')).values_list('users', flat=True)
                assinged_to_users_ids = task.assigned_to.all().values_list('id', flat=True)
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        task.assigned_to.add(user_id)

            if request.POST.getlist('teams', []):
                task.teams.clear()
                task.teams.add(*request.POST.getlist('teams'))
            else:
                task.teams.clear()

            kwargs = {'domain': request.get_host(), 'protocol': request.scheme}
            assigned_to_list = list(
                task.assigned_to.all().values_list('id', flat=True))
            recipients = list(set(assigned_to_list) -
                              set(previous_assigned_to_users))
            send_email.delay(task.id, recipients, **kwargs)
            success_url = reverse('tasks:tasks_list')
            if request.POST.get('from_account'):
                success_url = reverse('accounts:view_account', args=(
                    request.POST.get('from_account'),))
            return JsonResponse({'error': False, 'success_url': success_url})
        else:
            return JsonResponse({'error': True, 'errors': form.errors})
Ejemplo n.º 2
0
def task_create(request, template_name='tasks/task_form.html'):
    form = TaskForm(request.POST or None)

    if form.is_valid():
        task = form.save(commit=False)
        task.user = request.user
        task.save()
        form.save_m2m()
        return redirect('tasks:task_list')

    return render(request, template_name, {'form': form})
Ejemplo n.º 3
0
def task_edit(request, task_id):
    task_obj = get_object_or_404(Task, pk=task_id)

    if not (request.user.role == 'ADMIN' or request.user.is_superuser
            or task_obj.created_by == request.user):
        raise PermissionDenied

    if request.method == 'GET':
        if request.user.role == 'ADMIN' or request.user.is_superuser:
            users = User.objects.filter(is_active=True).order_by('email')
        elif request.user.google.all():
            users = []
        else:
            users = User.objects.filter(role='ADMIN').order_by('email')
        # form = TaskForm(request_user=request.user)
        form = TaskForm(instance=task_obj, request_user=request.user)
        return render(request, 'task_create.html', {
            'form': form,
            'task_obj': task_obj,
            'users': users
        })

    if request.method == 'POST':
        form = TaskForm(request.POST,
                        instance=task_obj,
                        request_user=request.user)
        if form.is_valid():
            task = form.save(commit=False)
            form.save_m2m()
            # task.assigned_to.clear()
            # task.contacts.clear()
            # task.assigned_to.add(*request.POST.getlist('assigned_to'))
            # task.contacts.add(*request.POST.getlist('contacts'))
            if request.POST.getlist('teams', []):
                user_ids = Teams.objects.filter(
                    id__in=request.POST.getlist('teams')).values_list(
                        'users', flat=True)
                assinged_to_users_ids = task.assigned_to.all().values_list(
                    'id', flat=True)
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        task.assigned_to.add(user_id)
            kwargs = {'domain': request.get_host(), 'protocol': request.scheme}
            send_email.delay(task.id, **kwargs)
            return JsonResponse({
                'error': False,
                'success_url': reverse('tasks:tasks_list')
            })
        else:
            return JsonResponse({'error': True, 'errors': form.errors})
Ejemplo n.º 4
0
def task_edit(request, task_id):
    task_obj = get_object_or_404(Task, pk=task_id)
    if task_obj.company != request.company:
        raise PermissionDenied
    accounts = Account.objects.filter(status="open")

    if not (request.user.role == "ADMIN" or request.user.is_superuser
            or task_obj.created_by == request.user
            or request.user in task_obj.assigned_to.all()):
        raise PermissionDenied

    if request.method == "GET":
        if request.user.role == "ADMIN" or request.user.is_superuser:
            users = User.objects.filter(is_active=True).order_by("email")
        elif request.user.google.all():
            users = []
        else:
            users = User.objects.filter(role="ADMIN").order_by("email")
        # form = TaskForm(request_user=request.user)
        form = TaskForm(instance=task_obj,
                        request_user=request.user,
                        request_obj=request)
        return render(
            request,
            "task_create.html",
            {
                "form": form,
                "task_obj": task_obj,
                "users": users.filter(company=request.company),
                "accounts": accounts.filter(company=request.company),
                "teams": Teams.objects.filter(company=request.company),
            },
        )

    if request.method == "POST":
        form = TaskForm(
            request.POST,
            instance=task_obj,
            request_user=request.user,
            request_obj=request,
        )
        if form.is_valid():
            task = form.save(commit=False)
            previous_assigned_to_users = list(
                task_obj.assigned_to.all().values_list("id", flat=True))
            task.save()
            form.save_m2m()
            # task.assigned_to.clear()
            # task.contacts.clear()
            # task.assigned_to.add(*request.POST.getlist('assigned_to'))
            # task.contacts.add(*request.POST.getlist('contacts'))
            if request.POST.getlist("teams", []):
                user_ids = Teams.objects.filter(
                    id__in=request.POST.getlist("teams")).values_list(
                        "users", flat=True)
                assinged_to_users_ids = task.assigned_to.all().values_list(
                    "id", flat=True)
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        task.assigned_to.add(user_id)

            if request.POST.getlist("teams", []):
                task.teams.clear()
                task.teams.add(*request.POST.getlist("teams"))
            else:
                task.teams.clear()

            kwargs = {"domain": request.get_host(), "protocol": request.scheme}
            assigned_to_list = list(task.assigned_to.all().values_list(
                "id", flat=True))
            recipients = list(
                set(assigned_to_list) - set(previous_assigned_to_users))
            send_email.delay(task.id, recipients, **kwargs)
            success_url = reverse("tasks:tasks_list")
            if request.POST.get("from_account"):
                success_url = reverse(
                    "accounts:view_account",
                    args=(request.POST.get("from_account"), ))
            return JsonResponse({"error": False, "success_url": success_url})
        else:
            return JsonResponse({"error": True, "errors": form.errors})