Ejemplo n.º 1
0
def event_update(request, event_id):
    event_obj = get_object_or_404(Event, pk=event_id)
    if not (request.user.role == 'ADMIN' or request.user.is_superuser
            or event_obj.created_by == request.user
            or request.user in event_obj.assigned_to.all()):
        raise PermissionDenied

    if request.method == 'GET':
        context = {}
        context["event_obj"] = event_obj
        context["form"] = EventForm(instance=event_obj,
                                    request_user=request.user)
        selected_recurring_days = Event.objects.filter(
            name=event_obj.name).values_list('date_of_meeting', flat=True)
        selected_recurring_days = [
            day.strftime('%A') for day in selected_recurring_days
        ]
        context['selected_recurring_days'] = selected_recurring_days
        return render(request, 'event_create.html', context)

    if request.method == 'POST':
        form = EventForm(request.POST,
                         instance=event_obj,
                         request_user=request.user)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')
            # recurring_days
            # recurring_days = request.POST.getlist('days')

            if form.cleaned_data.get('event_type') == 'Non-Recurring':
                event = form.save(commit=False)
                event.date_of_meeting = start_date
                # event.created_by = request.user
                event.save()
                form.save_m2m()
                send_email.delay(event.id,
                                 domain=request.get_host(),
                                 protocol=request.scheme)

            if form.cleaned_data.get('event_type') == 'Recurring':
                event = form.save(commit=False)
                event.save()
                form.save_m2m()
                send_email.delay(event.id,
                                 domain=request.get_host(),
                                 protocol=request.scheme)

                # event.contacts.add(*request.POST.getlist('contacts'))
                # event.assigned_to.add(*request.POST.getlist('assigned_to'))

            return JsonResponse({
                'error': False,
                'success_url': reverse('events:events_list')
            })
        else:
            return JsonResponse({
                'error': True,
                'errors': form.errors,
            })
Ejemplo n.º 2
0
def event_create(request):
    if request.method == 'GET':
        context = {}
        context["form"] = EventForm(request_user=request.user)
        context["users"] = User.objects.filter(is_active=True)
        if request.user.role == 'ADMIN' or request.user.is_superuser:
            context['teams'] = Teams.objects.all()
        return render(request, 'event_create.html', context)

    if request.method == 'POST':
        form = EventForm(request.POST, request_user=request.user)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')
            # recurring_days
            recurring_days = request.POST.getlist('recurring_days')
            if form.cleaned_data.get('event_type') == 'Non-Recurring':
                event = form.save(commit=False)
                event.date_of_meeting = start_date
                event.created_by = request.user
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all().values_list('id', flat=True)
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)

                if request.POST.getlist('teams', []):
                    event.teams.add(*request.POST.getlist('teams'))
                assigned_to_list = list(
                    event.assigned_to.all().values_list('id', flat=True))
                send_email.delay(
                    event.id, assigned_to_list, domain=request.get_host(), protocol=request.scheme)

            if form.cleaned_data.get('event_type') == 'Recurring':
                delta = end_date - start_date
                all_dates = []
                required_dates = []

                for day in range(delta.days + 1):
                    each_date = (start_date + timedelta(days=day))
                    if each_date.strftime("%A") in recurring_days:
                        required_dates.append(each_date)

                for each in required_dates:
                    each = datetime.strptime(str(each), '%Y-%m-%d').date()
                    data = form.cleaned_data

                    event = Event.objects.create(
                        created_by=request.user, start_date=start_date, end_date=end_date,
                        name=data['name'], event_type=data['event_type'],
                        description=data['description'], start_time=data['start_time'],
                        end_time=data['end_time'], date_of_meeting=each
                    )
                    event.contacts.add(*request.POST.getlist('contacts'))
                    event.assigned_to.add(*request.POST.getlist('assigned_to'))
                    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 = event.assigned_to.all().values_list('id', flat=True)
                        for user_id in user_ids:
                            if user_id not in assinged_to_users_ids:
                                event.assigned_to.add(user_id)

                    if request.POST.getlist('teams', []):
                        event.teams.add(*request.POST.getlist('teams'))
                    assigned_to_list = list(
                        event.assigned_to.all().values_list('id', flat=True))
                    send_email.delay(
                        event.id, assigned_to_list, domain=request.get_host(), protocol=request.scheme)

            return JsonResponse({'error': False, 'success_url': reverse('events:events_list')})
        else:
            return JsonResponse({'error': True, 'errors': form.errors, })
Ejemplo n.º 3
0
def event_update(request, event_id):
    event_obj = get_object_or_404(Event, pk=event_id)
    if (
        not (
            request.user.role == "ADMIN"
            or request.user.is_superuser
            or event_obj.created_by == request.user
            or request.user in event_obj.assigned_to.all()
        )
        or request.company != event_obj.company
    ):
        raise PermissionDenied

    if request.method == "GET":
        context = {}
        context["event_obj"] = event_obj
        context["users"] = User.objects.filter(is_active=True)
        context["form"] = EventForm(
            instance=event_obj, request_user=request.user, request_obj=request
        )
        selected_recurring_days = Event.objects.filter(name=event_obj.name).values_list(
            "date_of_meeting", flat=True
        )
        selected_recurring_days = [
            day.strftime("%A") for day in selected_recurring_days
        ]
        context["selected_recurring_days"] = selected_recurring_days
        if request.user.role == "ADMIN" or request.user.is_superuser:
            context["teams"] = Teams.objects.filter(company=request.company)
        return render(request, "event_create.html", context)

    if request.method == "POST":
        form = EventForm(
            request.POST,
            instance=event_obj,
            request_user=request.user,
            request_obj=request,
        )
        if form.is_valid():
            start_date = form.cleaned_data.get("start_date")
            end_date = form.cleaned_data.get("end_date")
            previous_assigned_to_users = list(
                event_obj.assigned_to.all().values_list("id", flat=True)
            )

            # recurring_days
            # recurring_days = request.POST.getlist('days')
            if form.data.get("event_type") == "Non-Recurring":
                event = form.save(commit=False)
                event.date_of_meeting = start_date
                # event.created_by = request.user
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all().values_list(
                        "id", flat=True
                    )
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)
                if request.POST.getlist("teams", []):
                    event.teams.clear()
                    event.teams.add(*request.POST.getlist("teams"))
                else:
                    event.teams.clear()
                assigned_to_list = list(
                    event.assigned_to.all().values_list("id", flat=True)
                )
                recipients = list(
                    set(assigned_to_list) - set(previous_assigned_to_users)
                )
                send_email.delay(
                    event.id,
                    recipients,
                    domain=request.get_host(),
                    protocol=request.scheme,
                )

            if form.data.get("event_type") == "Recurring":
                event = form.save(commit=False)
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all().values_list(
                        "id", flat=True
                    )
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)
                if request.POST.getlist("teams", []):
                    event.teams.clear()
                    event.teams.add(*request.POST.getlist("teams"))
                else:
                    event.teams.clear()
                assigned_to_list = list(
                    event.assigned_to.all().values_list("id", flat=True)
                )
                recipients = list(
                    set(assigned_to_list) - set(previous_assigned_to_users)
                )
                send_email.delay(
                    event.id,
                    recipients,
                    domain=request.get_host(),
                    protocol=request.scheme,
                )

                # event.contacts.add(*request.POST.getlist('contacts'))
                # event.assigned_to.add(*request.POST.getlist('assigned_to'))

            return JsonResponse(
                {"error": False, "success_url": reverse("events:events_list")}
            )
        else:
            return JsonResponse({"error": True, "errors": form.errors,})
Ejemplo n.º 4
0
def event_create(request):
    if request.method == "GET":
        context = {}
        context["form"] = EventForm(request_user=request.user, request_obj=request)
        context["users"] = User.objects.filter(is_active=True, company=request.company)
        if request.user.role == "ADMIN" or request.user.is_superuser:
            context["teams"] = Teams.objects.filter(company=request.company)
        return render(request, "event_create.html", context)

    if request.method == "POST":
        form = EventForm(request.POST, request_user=request.user, request_obj=request)
        if form.is_valid():
            start_date = form.cleaned_data.get("start_date")
            end_date = form.cleaned_data.get("end_date")
            # recurring_days
            recurring_days = request.POST.getlist("recurring_days")
            if form.cleaned_data.get("event_type") == "Non-Recurring":
                event = form.save(commit=False)
                event.date_of_meeting = start_date
                event.created_by = request.user
                event.company = request.company
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all().values_list(
                        "id", flat=True
                    )
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)

                if request.POST.getlist("teams", []):
                    event.teams.add(*request.POST.getlist("teams"))
                assigned_to_list = list(
                    event.assigned_to.all().values_list("id", flat=True)
                )
                send_email.delay(
                    event.id,
                    assigned_to_list,
                    domain=request.get_host(),
                    protocol=request.scheme,
                )

            if form.cleaned_data.get("event_type") == "Recurring":
                delta = end_date - start_date
                all_dates = []
                required_dates = []

                for day in range(delta.days + 1):
                    each_date = start_date + timedelta(days=day)
                    if each_date.strftime("%A") in recurring_days:
                        required_dates.append(each_date)

                for each in required_dates:
                    each = datetime.strptime(str(each), "%Y-%m-%d").date()
                    data = form.cleaned_data

                    event = Event.objects.create(
                        created_by=request.user,
                        start_date=start_date,
                        end_date=end_date,
                        name=data["name"],
                        event_type=data["event_type"],
                        description=data["description"],
                        start_time=data["start_time"],
                        end_time=data["end_time"],
                        date_of_meeting=each,
                    )
                    event.contacts.add(*request.POST.getlist("contacts"))
                    event.assigned_to.add(*request.POST.getlist("assigned_to"))
                    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 = event.assigned_to.all().values_list(
                            "id", flat=True
                        )
                        for user_id in user_ids:
                            if user_id not in assinged_to_users_ids:
                                event.assigned_to.add(user_id)

                    if request.POST.getlist("teams", []):
                        event.teams.add(*request.POST.getlist("teams"))
                    assigned_to_list = list(
                        event.assigned_to.all().values_list("id", flat=True)
                    )
                    send_email.delay(
                        event.id,
                        assigned_to_list,
                        domain=request.get_host(),
                        protocol=request.scheme,
                    )

            return JsonResponse(
                {"error": False, "success_url": reverse("events:events_list")}
            )
        else:
            return JsonResponse({"error": True, "errors": form.errors,})
Ejemplo n.º 5
0
    def post(self, request, *args, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        data = {}
        serializer = EventCreateSerializer(data=params, request_obj=request)
        if serializer.is_valid():
            start_date = params.get("start_date")
            end_date = params.get("end_date")
            recurring_days = json.dumps(params.get("recurring_days"))
            if params.get("event_type") == "Non-Recurring":
                event_obj = serializer.save(
                    created_by=request.profile,
                    date_of_meeting=params.get("start_date"),
                    is_active=True,
                    disabled=False,
                    org=request.org)

                if params.get("contacts"):
                    obj_contact = Contact.objects.filter(
                        id=params.get("contacts"), org=request.org)
                    event_obj.contacts.add(obj_contact)

                if params.get("teams"):
                    teams_list = json.loads(params.get("teams"))
                    teams = Teams.objects.filter(id__in=teams_list,
                                                 org=request.org)
                    event_obj.teams.add(*teams)

                if params.get("assigned_to"):
                    assinged_to_list = json.loads(params.get("assigned_to"))
                    profiles = Profile.objects.filter(id__in=assinged_to_list,
                                                      org=request.org)
                    event_obj.assigned_to.add(*profiles)

                assigned_to_list = list(
                    event_obj.assigned_to.all().values_list("id", flat=True))
                send_email.delay(
                    event_obj.id,
                    assigned_to_list,
                )
            if params.get("event_type") == "Recurring":
                recurring_days = params.get("recurring_days")
                if not recurring_days:
                    return Response(
                        {
                            "error": True,
                            "errors": "Choose atleast one recurring day"
                        },
                        status=status.HTTP_400_BAD_REQUEST,
                    )
                end_date = datetime.strptime(end_date, "%Y-%m-%d").date()
                start_date = datetime.strptime(start_date, "%Y-%m-%d").date()

                delta = end_date - start_date
                required_dates = []

                for day in range(delta.days + 1):
                    each_date = start_date + timedelta(days=day)
                    if each_date.strftime("%A") in recurring_days:
                        required_dates.append(each_date)

                for each in required_dates:
                    each = datetime.strptime(str(each), "%Y-%m-%d").date()
                    data = serializer.validated_data

                    event = Event.objects.create(
                        created_by=request.profile,
                        start_date=start_date,
                        end_date=end_date,
                        name=data["name"],
                        event_type=data["event_type"],
                        description=data["description"],
                        start_time=data["start_time"],
                        end_time=data["end_time"],
                        date_of_meeting=each,
                        org=request.org)

                    if params.get("contacts"):
                        obj_contact = Contact.objects.filter(
                            id=params.get("contacts"), org=request.org)
                        event.contacts.add(obj_contact)

                    if params.get("teams"):
                        teams_list = json.loads(params.get("teams"))
                        teams = Teams.objects.filter(id__in=teams_list,
                                                     org=request.org)
                        event.teams.add(*teams)

                    if params.get("assigned_to"):
                        assinged_to_list = json.loads(
                            params.get("assigned_to"))
                        profiles = Profile.objects.filter(
                            id__in=assinged_to_list, org=request.org)
                        event.assigned_to.add(*profiles)

                    assigned_to_list = list(
                        event.assigned_to.all().values_list("id", flat=True))
                    send_email.delay(
                        event.id,
                        assigned_to_list,
                    )
            return Response(
                {
                    "error": False,
                    "message": "Event Created Successfully"
                },
                status=status.HTTP_200_OK,
            )
        return Response(
            {
                "error": True,
                "errors": serializer.errors
            },
            status=status.HTTP_400_BAD_REQUEST,
        )
Ejemplo n.º 6
0
    def put(self, request, pk, **kwargs):
        params = (self.request.query_params
                  if len(self.request.data) == 0 else self.request.data)
        data = {}
        self.event_obj = self.get_object(pk)
        if self.event_obj.org != request.org:
            return Response(
                {
                    "error": True,
                    "errors": "User company doesnot match with header...."
                },
                status=status.HTTP_403_FORBIDDEN)
        serializer = EventCreateSerializer(
            data=params,
            instance=self.event_obj,
            request_obj=request,
        )
        if serializer.is_valid():
            event_obj = serializer.save()
            previous_assigned_to_users = list(
                event_obj.assigned_to.all().values_list("id", flat=True))
            if params.get("event_type") == "Non-Recurring":
                event_obj.date_of_meeting = event_obj.start_date

            event_obj.contacts.clear()
            if params.get("contacts"):
                obj_contact = Contact.objects.filter(id=params.get("contacts"),
                                                     org=request.org)
                event_obj.contacts.add(obj_contact)

            event_obj.teams.clear()
            if params.get("teams"):
                teams_list = json.loads(params.get("teams"))
                teams = Teams.objects.filter(id__in=teams_list,
                                             org=request.org)
                event_obj.teams.add(*teams)

            event_obj.assigned_to.clear()
            if params.get("assigned_to"):
                assinged_to_list = json.loads(params.get("assigned_to"))
                profiles = Profile.objects.filter(id__in=assinged_to_list,
                                                  org=request.org)
                event_obj.assigned_to.add(*profiles)

            assigned_to_list = list(event_obj.assigned_to.all().values_list(
                "id", flat=True))
            recipients = list(
                set(assigned_to_list) - set(previous_assigned_to_users))
            send_email.delay(
                event_obj.id,
                recipients,
            )
            return Response(
                {
                    "error": False,
                    "message": "Event updated Successfully"
                },
                status=status.HTTP_200_OK,
            )
        return Response(
            {
                "error": True,
                "errors": serializer.errors
            },
            status=status.HTTP_400_BAD_REQUEST,
        )
Ejemplo n.º 7
0
def event_update(request, event_id):
    event_obj = get_object_or_404(Event, pk=event_id)
    if not (request.user.role == 'ADMIN' or request.user.is_superuser
            or event_obj.created_by == request.user
            or request.user in event_obj.assigned_to.all()):
        raise PermissionDenied

    if request.method == 'GET':
        context = {}
        context["TITLE"] = settings.TITLE  ## Added for easilt Changeable Title
        context["event_obj"] = event_obj
        context["form"] = EventForm(instance=event_obj,
                                    request_user=request.user)
        selected_recurring_days = Event.objects.filter(
            name=event_obj.name).values_list('date_of_meeting', flat=True)
        selected_recurring_days = [
            day.strftime('%A') for day in selected_recurring_days
        ]
        context['selected_recurring_days'] = selected_recurring_days
        if request.user.role == 'ADMIN' or request.user.is_superuser:
            context['teams'] = Teams.objects.all()
        return render(request, 'event_create.html', context)

    if request.method == 'POST':
        form = EventForm(request.POST,
                         instance=event_obj,
                         request_user=request.user)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')
            previous_assigned_to_users = list(
                event_obj.assigned_to.all().values_list('id', flat=True))

            # recurring_days
            # recurring_days = request.POST.getlist('days')
            if form.data.get('event_type') == 'Non-Recurring':
                event = form.save(commit=False)
                event.date_of_meeting = start_date
                # event.created_by = request.user
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all(
                    ).values_list('id', flat=True)
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)
                if request.POST.getlist('teams', []):
                    event.teams.clear()
                    event.teams.add(*request.POST.getlist('teams'))
                else:
                    event.teams.clear()
                assigned_to_list = list(event.assigned_to.all().values_list(
                    'id', flat=True))
                recipients = list(
                    set(assigned_to_list) - set(previous_assigned_to_users))
                send_email.delay(event.id,
                                 recipients,
                                 domain=request.get_host(),
                                 protocol=request.scheme)

            if form.data.get('event_type') == 'Recurring':
                event = form.save(commit=False)
                event.save()
                form.save_m2m()
                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 = event.assigned_to.all(
                    ).values_list('id', flat=True)
                    for user_id in user_ids:
                        if user_id not in assinged_to_users_ids:
                            event.assigned_to.add(user_id)
                if request.POST.getlist('teams', []):
                    event.teams.clear()
                    event.teams.add(*request.POST.getlist('teams'))
                else:
                    event.teams.clear()
                assigned_to_list = list(event.assigned_to.all().values_list(
                    'id', flat=True))
                recipients = list(
                    set(assigned_to_list) - set(previous_assigned_to_users))
                send_email.delay(event.id,
                                 recipients,
                                 domain=request.get_host(),
                                 protocol=request.scheme)

                # event.contacts.add(*request.POST.getlist('contacts'))
                # event.assigned_to.add(*request.POST.getlist('assigned_to'))

            return JsonResponse({
                'error': False,
                'success_url': reverse('events:events_list')
            })
        else:
            return JsonResponse({
                'error': True,
                'errors': form.errors,
            })
Ejemplo n.º 8
0
    def put(self, request, pk, **kwargs):
        params = (
            self.request.query_params
            if len(self.request.data) == 0
            else self.request.data
        )
        data = {}
        self.event_obj = self.get_object(pk)
        serializer = EventCreateSerializer(
            data=params,
            instance=self.event_obj,
            request_obj=request,
        )
        if serializer.is_valid():
            event_obj = serializer.save()
            previous_assigned_to_users = list(
                event_obj.assigned_to.all().values_list("id", flat=True)
            )
            if params.get("event_type") == "Non-Recurring":
                event_obj.date_of_meeting = event_obj.start_date

            event_obj.contacts.clear()
            if params.get("contacts"):
                contacts = json.loads(params.get("contacts"))
                for contact in contacts:
                    obj_contact = Contact.objects.filter(id=contact)
                    if obj_contact.exists():
                        event_obj.contacts.add(contact)
                    else:
                        data["contacts"] = "Please enter valid Contact"
                        return Response(
                            {"error": True, "errors": data},
                            status=status.HTTP_400_BAD_REQUEST,
                        )
            if self.request.user.role == "ADMIN":
                event_obj.teams.clear()
                if params.get("teams"):
                    teams = json.loads(params.get("teams"))
                    for team in teams:
                        teams_ids = Teams.objects.filter(id=team)
                        if teams_ids.exists():
                            event_obj.teams.add(team)
                        else:
                            event_obj.delete()
                            data["team"] = "Please enter valid Team"
                            return Response(
                                {"error": True, "errors": data},
                                status=status.HTTP_400_BAD_REQUEST,
                            )
                else:
                    event_obj.teams.clear()

                event_obj.assigned_to.clear()
                if params.get("assigned_to"):
                    assinged_to_users_ids = json.loads(params.get("assigned_to"))
                    for user_id in assinged_to_users_ids:
                        user = User.objects.filter(id=user_id)
                        if user.exists():
                            event_obj.assigned_to.add(user_id)
                        else:
                            event_obj.delete()
                            data["assigned_to"] = "Please enter valid User"
                            return Response(
                                {"error": True, "errors": data},
                                status=status.HTTP_400_BAD_REQUEST,
                            )

                else:
                    event_obj.assigned_to.clear()
            assigned_to_list = list(
                event_obj.assigned_to.all().values_list("id", flat=True)
            )
            recipients = list(set(assigned_to_list) - set(previous_assigned_to_users))
            send_email.delay(
                event_obj.id,
                recipients,
                domain=request.get_host(),
                protocol=request.scheme,
            )
            return Response(
                {"error": False, "message": "Event updated Successfully"},
                status=status.HTTP_200_OK,
            )
        return Response(
            {"error": True, "errors": serializer.errors},
            status=status.HTTP_400_BAD_REQUEST,
        )
Ejemplo n.º 9
0
    def post(self, request, *args, **kwargs):
        params = (
            self.request.query_params
            if len(self.request.data) == 0
            else self.request.data
        )
        data = {}
        serializer = EventCreateSerializer(data=params, request_obj=request)
        if serializer.is_valid():
            start_date = params.get("start_date")
            end_date = params.get("end_date")
            recurring_days = json.dumps(params.get("recurring_days"))
            if params.get("event_type") == "Non-Recurring":
                event_obj = serializer.save(
                    created_by=request.user,
                    date_of_meeting=params.get("start_date"),
                    is_active=True,
                    disabled=False,
                )
                if params.get("contacts"):
                    contacts = json.loads(params.get("contacts"))
                    for contact in contacts:
                        obj_contact = Contact.objects.filter(id=contact)
                        if obj_contact.exists():
                            event_obj.contacts.add(contact)
                        else:
                            event_obj.delete()
                            data["contacts"] = "Please enter valid contact"
                            return Response(
                                {"error": True, "errors": data},
                                status=status.HTTP_400_BAD_REQUEST,
                            )
                if self.request.user.role == "ADMIN":
                    if params.get("teams"):
                        teams = json.loads(params.get("teams"))
                        for team in teams:
                            teams_ids = Teams.objects.filter(id=team)
                            if teams_ids.exists():
                                event_obj.teams.add(team)
                            else:
                                event_obj.delete()
                                data["team"] = "Please enter valid Team"
                                return Response(
                                    {"error": True, "errors": data},
                                    status=status.HTTP_400_BAD_REQUEST,
                                )
                    if params.get("assigned_to"):
                        assinged_to_users_ids = json.loads(params.get("assigned_to"))
                        for user_id in assinged_to_users_ids:
                            user = User.objects.filter(id=user_id)
                            if user.exists():
                                event_obj.assigned_to.add(user_id)
                            else:
                                event_obj.delete()
                                data["assigned_to"] = "Please enter valid User"
                                return Response(
                                    {"error": True, "errors": data},
                                    status=status.HTTP_400_BAD_REQUEST,
                                )
                assigned_to_list = list(
                    event_obj.assigned_to.all().values_list("id", flat=True)
                )
                send_email.delay(
                    event_obj.id,
                    assigned_to_list,
                    domain=request.get_host(),
                    protocol=request.scheme,
                )
            if params.get("event_type") == "Recurring":
                recurring_days = params.get("recurring_days")
                if not recurring_days:
                    return Response(
                        {"error": True, "errors": "Choose atleast one recurring day"},
                        status=status.HTTP_400_BAD_REQUEST,
                    )
                end_date = datetime.strptime(end_date, "%Y-%m-%d").date()
                start_date = datetime.strptime(start_date, "%Y-%m-%d").date()

                delta = end_date - start_date
                required_dates = []

                for day in range(delta.days + 1):
                    each_date = start_date + timedelta(days=day)
                    if each_date.strftime("%A") in recurring_days:
                        required_dates.append(each_date)

                for each in required_dates:
                    each = datetime.strptime(str(each), "%Y-%m-%d").date()
                    data = serializer.validated_data

                    event = Event.objects.create(
                        created_by=request.user,
                        start_date=start_date,
                        end_date=end_date,
                        name=data["name"],
                        event_type=data["event_type"],
                        description=data["description"],
                        start_time=data["start_time"],
                        end_time=data["end_time"],
                        date_of_meeting=each,
                    )

                    if params.get("contacts"):
                        contacts = json.loads(params.get("contacts"))
                        for contact in contacts:
                            obj_contact = Contact.objects.filter(id=contact)
                            if obj_contact.exists():
                                event.contacts.add(contact)
                            else:
                                event.delete()
                                data["contacts"] = "Please enter valid contact"
                                return Response(
                                    {"error": True, "errors": data},
                                    status=status.HTTP_400_BAD_REQUEST,
                                )
                    if self.request.user.role == "ADMIN":
                        if params.get("teams"):
                            teams = json.loads(params.get("teams"))
                            for team in teams:
                                teams_ids = Teams.objects.filter(id=team)
                                if teams_ids.exists():
                                    event.teams.add(team)
                                else:
                                    event.delete()
                                    data["team"] = "Please enter valid Team"
                                    return Response(
                                        {"error": True, "errors": data},
                                        status=status.HTTP_400_BAD_REQUEST,
                                    )
                        if params.get("assigned_to"):
                            assinged_to_users_ids = json.loads(
                                params.get("assigned_to")
                            )
                            for user_id in assinged_to_users_ids:
                                user = User.objects.filter(id=user_id)
                                if user.exists():
                                    event.assigned_to.add(user_id)
                                else:
                                    event.delete()
                                    data["assigned_to"] = "Please enter valid User"
                                    return Response(
                                        {"error": True, "errors": data},
                                        status=status.HTTP_400_BAD_REQUEST,
                                    )
                    assigned_to_list = list(
                        event.assigned_to.all().values_list("id", flat=True)
                    )
                    send_email.delay(
                        event.id,
                        assigned_to_list,
                        domain=request.get_host(),
                        protocol=request.scheme,
                    )
            return Response(
                {"error": False, "message": "Event Created Successfully"},
                status=status.HTTP_200_OK,
            )
        return Response(
            {"error": True, "errors": serializer.errors},
            status=status.HTTP_400_BAD_REQUEST,
        )