def get_current_userprofile(self, request): user = self.request.user create_userprofile(user) return Response( UserProfileSerializer(user.userprofiles, context={ 'request': request }).data)
def get_queryset(self): user = self.request.user create_userprofile(user) if user.userprofiles.is_admin: userprofiles = UserProfile.objects.all() query = setup_query( self.request.query_params, ['first_name', 'last_name', 'email', 'is_tutor']) if query is not None: userprofiles = userprofiles.filter(query) return userprofiles else: return UserProfile.objects.filter(user=user)
def current_position(self, request): user = self.request.user create_userprofile(user) position = [] if (user.userprofiles.is_tutee): position.append('tutee') if (user.userprofiles.is_tutor): position.append('tutor') if (user.userprofiles.is_headtutor): position.append('headtutor') if (user.userprofiles.is_admin): position.append('admin') return Response(position)
def get_queryset(self): user = self.request.user create_userprofile(user) if user.userprofiles.is_admin: #get the params from url and filter it with #the users objects users = self.queryset query = setup_query(self.request.query_params, ['first_name', 'last_name', 'email']) if query is not None: users = users.filter(query) return users else: return User.objects.filter(username=user.username)
def get_queryset(self): user = self.request.user create_userprofile(user) userprofile = user.userprofiles if userprofile.is_admin: contracts = self.queryset elif userprofile.is_tutor or userprofile.is_headtutor: position = self.request.query_params.get('position', None) #query the contracts based on the user loging in #show the contracts belong to tutor if 'position' is None or is 'tutor' #show all contracts if position is 'headtutor' if (userprofile.is_tutor and (position is None or position == 'tutor')): contracts = userprofile.tutor_contracts.all() elif userprofile.is_headtutor and position == 'headtutor': #only get the contracts from department of the headtutor contracts = self.queryset subjects = userprofile.subjects.all() query = Q(subject=-1) for subject in subjects: query |= Q(subject=subject) contracts = contracts.filter(query) #get all the params from the url subject = self.request.query_params.get('subject', None) tutee_email = self.request.query_params.get('tutee_email', None) #if the params is not Null, query it if subject is not None: subject = Subject.objects.get(subject_name=subject) contracts = contracts.filter(subject=subject) if tutee_email is not None: tutee = UserProfile.objects.get(email=tutee_email) contracts = contracts.filter(tutee=tutee) query = setup_query(self.request.query_params, ['class_name', 'professor_name']) if query is not None: contracts = contracts.filter(query) return contracts
def get_queryset(self): user = self.request.user create_userprofile(user) userprofile = user.userprofiles if userprofile.is_admin: contracts = Contract.objects.all() elif userprofile.is_tutor or userprofile.is_headtutor: position = self.request.query_params.get('position', None) if (userprofile.is_tutor and (position is None or position == 'tutor')): contracts = userprofile.tutor_contracts.all() elif userprofile.is_headtutor and position == 'headtutor': #only get the contracts from department of the headtutor contracts = Contract.objects.all() subjects = userprofile.subjects.all() query = Q(subject=-1) for subject in subjects: query |= Q(subject=subject) contracts = contracts.filter(query) query = Q(id=-1) for contract in contracts: for session in contract.sessions.all(): query |= Q(id=session.id) sessions = Session.objects.filter(query) #filter date by lte: less than or equal, gte: greater than or equal #lt: less than, gt: greater than operators = ['lte', 'lt', 'gte', 'gt'] for operator in operators: date = self.request.query_params.get('date[{}]'.format(operator), None) if date is not None: sessions = sessions.filter( **{'date__{}'.format(operator): date}) return sessions
def get_queryset(self): user = self.request.user create_userprofile(user) userprofile = user.userprofiles if userprofile.is_admin: contracts = Contract.objects.all() elif userprofile.is_tutor or userprofile.is_headtutor: position = self.request.query_params.get('position', None) if (userprofile.is_tutor and (position is None or position == 'tutor')): contracts = userprofile.tutor_contracts.all() elif (userprofile.is_headtutor and position == 'headtutor'): #only get the contracts from department of the headtutor contracts = Contract.objects.all() subjects = userprofile.subjects.all() query = Q(subject=-1) for subject in subjects: query |= Q(subject=subject) contracts = contracts.filter(query) #get all contracts if the user request as a headtutor # otherwise get only the owned contracts if the user request as a tutor contract_meetings = [ cmeeting for contract in contracts for cmeeting in contract.contract_meetings.all() ] location = self.request.query_params.get('location', None) query = Q(id=-1) for cmeeting in contract_meetings: query |= Q(id=cmeeting.id) if location is not None: query |= Q(location=location) return ContractMeeting.objects.filter(query)