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})
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})
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})
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})