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