Ejemplo n.º 1
0
 def get_current_userprofile(self, request):
     user = self.request.user
     create_userprofile(user)
     return Response(
         UserProfileSerializer(user.userprofiles,
                               context={
                                   'request': request
                               }).data)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
    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)