def patch(self, request, format=None): if request.user.is_authenticated() and is_manager(request): employee_id = request.data.get('employee_id') profile = Profile.objects.get(user_id=employee_id) new_position = {'position_id': request.data.get('position_id')} serializer = ProfileSerializer(profile, data=new_position, partial=True) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None): date_selected = request.GET.get('start_date') start_date = parse(date_selected) end_date = start_date + timedelta(hours=23, minutes=59, seconds=59) user_id = request.user.id user_manager = is_manager(request) if user_manager: events = Event.objects.filter(start_date__range=(start_date, end_date), manager_id=user_id) else: events = Event.objects.filter(start_date__range=(start_date, end_date), employee_id=user_id) serializer = EventSerializer(events, many=True) employees = events.values('employee_id') employee_profiles = Profile.objects.filter(user_id__in=employees) for event in serializer.data: event_employee = next((e for e in employee_profiles if e.user_id == event.get('employee_id')), None) event_employee = ProfileSerializer(event_employee) event.update({'employee_profile': event_employee.data}) return Response(serializer.data)
def get(self, request, format=None): user_id = request.user.id employees = Employees.objects.filter( manager_id=user_id).values('employee_id') employee_profiles = Profile.objects.filter( user_id__in=employees).order_by('user_id') serializer = ProfileSerializer(employee_profiles, many=True) return Response(serializer.data)
def get(self, request, format=None): if request.user.is_authenticated(): current_user_id = request.user.id profile_exists = exists_or_not(Profile, user_id=current_user_id) if profile_exists: user_profile = Profile.objects.get(user_id=current_user_id) serializer = ProfileSerializer(user_profile) return Response(serializer.data) else: return Response(status=status.HTTP_200_OK) return Response(status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): user_id = request.user.id profile_exists = exists_or_not(Profile, user_id=user_id) #checks if the user has a profile page in the database if profile_exists: current_profile = Profile.objects.get(user_id=user_id) serializer = ProfileSerializer(current_profile, data=request.data) else: serializer = ProfileSerializer(data=request.data, context={'user': request.user}) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, format=None): serializer = EventSerializer(data=request.data, context={'request': request}) employee_id = request.data.get('employee_id') employee_profile = Profile.objects.get(user_id=employee_id) profile_serializer = ProfileSerializer(employee_profile) if serializer.is_valid(): serializer.save() add_event_data = serializer.data add_event_data.update({'employee_profile': profile_serializer.data}) return Response(add_event_data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None): date_selected = request.GET.get('month_date') date_selected = parse(date_selected) if date_selected.hour != 0: offset = timedelta(hours=date_selected.hour) else: offset = timedelta(hours=0) month_selected = date_selected.month year_selected = date_selected.year [month_start, month_end] = calendar.monthrange(year_selected, month_selected) start_date = datetime(year_selected, month_selected, 1) + offset end_date = (datetime(year_selected, month_selected, month_end) + timedelta(hours=24) + offset) user_id = request.user.id user_manager = is_manager(request) if user_manager: events = Event.objects.filter(start_date__range=(start_date, end_date), manager_id=user_id) else: events = Event.objects.filter(start_date__range=(start_date, end_date), employee_id=user_id) serializer = EventSerializer(events, many=True) employees = events.values('employee_id') employee_profiles = Profile.objects.filter(user_id__in=employees) events_list = [[] for x in range(month_end + 1)] for event in serializer.data: if parse(event.get('start_date')).month != month_selected: day = month_end else: day = (parse(event.get('start_date')) - offset).day event_employee = next((e for e in employee_profiles if e.user_id == event.get('employee_id')), None) event_employee = ProfileSerializer(event_employee) event.update({'employee_profile': event_employee.data}) events_list[day].append(event) return Response(events_list)
def get(self, request, format=None): week_monday = request.GET.get('week_monday') week_monday = parse(week_monday) if week_monday.hour != 0: offset = timedelta(hours=week_monday.hour, seconds=1) else: offset = timedelta(hours=0) start_date = datetime(week_monday.year, week_monday.month, week_monday.day) end_date = start_date + timedelta(days=7) user_id = request.user.id user_manager = is_manager(request) if user_manager: events = Event.objects.filter(start_date__range=(start_date, end_date), manager_id=user_id).order_by('start_date') else: events = Event.objects.filter(start_date__range=(start_date, end_date), employee_id=user_id).order_by('start_date') serializer = EventSerializer(events, many=True) employees = events.values('employee_id') employee_profiles = Profile.objects.filter(user_id__in=employees) events_list = [[] for x in range(7)] for event in serializer.data: weekday = (parse(event.get('start_date')) - offset).weekday() event_employee = next((e for e in employee_profiles if e.user_id == event.get('employee_id')), None) event_employee = ProfileSerializer(event_employee) event.update({'employee_profile': event_employee.data}) events_list[weekday].append(event) return Response(events_list)
def post(self, request, format=None): first_name = request.POST['firstname'] last_name = request.POST['lastname'] email = request.POST['email'] password = request.POST['password'] organization_name = request.POST['organization'] create_org = False ismanager = False if organization_name is None: return Response(status=status.HTTP_400_BAD_REQUEST) if type(organization_name) is unicode: organization_name = organization_name.encode('utf-8') try: user = User.objects.create_user(email, email, password) except: res = {'code': 400, 'message': 'User name already taken!'} return Response(data=json.dumps(res), status=status.HTTP_400_BAD_REQUEST) user.first_name = first_name user.last_name = last_name if user is not None: print "USER CREATED SUCCESSFULLY" organization_name = str.lower(organization_name) org_db = Organization.objects.filter( organization_name=organization_name) #if organization already exists if org_db: org_id = org_db[0].id manager = Profile.objects.get(ismanager=True, organization_id=org_id) Employees.objects.create(manager_id=manager.user_id, employee_id=user.id) #if the organization does not exist else: org_data = {'organization_name': organization_name} org_serializer = OrganizationSerializer(data=org_data) if org_serializer.is_valid(): org_serializer.save() org_id = org_serializer.data.get('id') ismanager = True else: return Response(status=status.HTTP_400_BAD_REQUEST) if ismanager is False: stat_serializer = StatSerializer(data={}, context={'user': user}) stat_serializer.is_valid(raise_exception=True) prof_data = { 'first_name': first_name, 'last_name': last_name, 'email': email, 'organization_id': org_id, 'ismanager': ismanager } prof_serializer = ProfileSerializer(data=prof_data, context={'user': user}) if prof_serializer.is_valid(): user.save() prof_serializer.save() if not ismanager: stat_serializer.save() print "PROFILE CREATED SUCCESSFULLY" print "STAT PROFILE SUCCESS" return Response(status=status.HTTP_201_CREATED) else: return Response(status=status.HTTP_400_BAD_REQUEST) else: print "UNSUCCESSFUL CREATION" return Response(status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None): today = datetime.today() user_id = request.user.id profile = Profile.objects.get(user_id=user_id) organization_id = profile.organization_id profile_serializer = ProfileSerializer(profile) shifts = Shift.objects.filter(organization_id=organization_id, manager_approved=False) shifts_serializers = ShiftSerializer(shifts, many=True) events_ids = shifts.values('event') shifts_details = Event.objects.filter(id__in=events_ids) shifts_details_serializer = EventSerializer(shifts_details, many=True) current_emp_ids = shifts_details.values('employee') interested_emp_ids = shifts.values('interested_emp_id') current_profiles = Profile.objects.filter(user_id__in=current_emp_ids) interested_profiles = Profile.objects.filter( user_id__in=interested_emp_ids) profiles = (current_profiles | interested_profiles).distinct() profiles_serializer = ProfileSerializer(profiles, many=True) current_shifts = Event.objects.filter(start_date__gte=today, employee_id=user_id) current_shifts = current_shifts.exclude(id__in=events_ids) current_shifts = EventSerializer(current_shifts, many=True) shifts = { 'current_shifts': [], 'searching': [], 'waiting_approval': [], 'user_profile': profile_serializer.data } shifts['current_shifts'] = current_shifts.data for shift in shifts_serializers.data: shift_detail = next((sd for sd in shifts_details_serializer.data if sd.get('id') == shift.get('event_id')), None) current_profile = next( (p for p in profiles_serializer.data if p.get('user_id') == shift_detail.get('employee_id')), None) if shift.get('searching'): is_current_user = (shift_detail.get('employee_id') == user_id) shifts['searching'].append({ 'shift': shift, 'shift_detail': shift_detail, 'current_profile': current_profile, 'is_current_user': is_current_user }) elif not shift.get('manager_approved'): interested_profile = next( (p for p in profiles_serializer.data if p.get('user_id') == shift.get('interested_emp_id')), None) shifts['waiting_approval'].append({ 'shift': shift, 'shift_detail': shift_detail, 'current_profile': current_profile, 'interested_profile': interested_profile }) return Response(shifts)