Exemplo n.º 1
0
 def passage(self, request):
     data = json.loads(request.body)
     filter_user = Users.objects.filter(username=data['user_id'])
     user = UserSerializer(filter_user, many=True).data[0]
     data['user_id'] = user.get('id')
     # print(data)
     Passage.objects.create(**data)
     res = {"success": True, "data": True}
     return Response(res)
Exemplo n.º 2
0
 def update(self, request, *args, **kwargs):
     # one = get_user_model().objects.all().filter(username__exact=kwargs['pk'])
     if request.user.username != get_user_model().objects.all().filter(username__exact=kwargs['pk']):
         raise PermissionError
     else:
         data = UserSerializer(JSONParser().parse(request.DATA))
         if data.is_valid():
             data.save()
         else:
             raise Http404
Exemplo n.º 3
0
 def update(self, request, *args, **kwargs):
     # one = get_user_model().objects.all().filter(username__exact=kwargs['pk'])
     if request.user.username != get_user_model().objects.all().filter(
             username__exact=kwargs['pk']):
         raise PermissionError
     else:
         data = UserSerializer(JSONParser().parse(request.DATA))
         if data.is_valid():
             data.save()
         else:
             raise Http404
Exemplo n.º 4
0
    def put(self, request, format = None): 
        contractor = Contractor.objects.get(user_id = request.user.id)
        requestData = request.data.copy() # Make a mutable copy of the request
        requestData['user'] = contractor.user_id # Set the user field to requesting user
        #Check if user has a new device id. Update it if there is 
        device_id = request.data.get('registration_id')
        if device_id != None:
            device = contractor.device 
            device.registration_id = device_id;
            device.save();
         
       #Check if user's email is the same as the one in the database, don't update it if it is
        oldEmail = request.user.username
        if (oldEmail == requestData.get('username') ):
            del requestData['username']

        serializer = UserSerializer(request.user, data = requestData, partial = True)
        if serializer.is_valid():
            serializer.save()
        else:
            return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
        
        serializer = ContractorSerializer(contractor, data = requestData, partial = True)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
Exemplo n.º 5
0
def make_init_state(request, workflow=None, modules=None):
    """Build a dict to embed as JSON in `window.initState` in HTML."""
    ret = {}

    if workflow:
        ret['workflowId'] = workflow.id
        ret['workflow'] = WorkflowSerializer(workflow,
                                             context={'request': request}).data
        wf_modules = workflow.wf_modules \
            .prefetch_related('parameter_vals__parameter_spec',
                              'module_version')
        wf_module_data_list = WfModuleSerializer(wf_modules, many=True).data
        ret['wfModules'] = dict([(str(wfm['id']), wfm)
                                 for wfm in wf_module_data_list])
        ret['selected_wf_module'] = workflow.selected_wf_module
        del ret['workflow']['selected_wf_module']

    if modules:
        modules_data_list = ModuleSerializer(modules, many=True).data
        ret['modules'] = dict([(str(m['id']), m) for m in modules_data_list])

    if request.user.is_authenticated():
        ret['loggedInUser'] = UserSerializer(request.user).data

    if workflow and not workflow.request_read_only(request):
        ret['updateTableModuleIds'] = load_update_table_module_ids()

    return ret
Exemplo n.º 6
0
    def homeList(self, request):
        topic = TopicSerializer(Topic.objects.all()[:5], many=True).data
        topicList = []
        for item in topic:
            topicList.append({
                "id": item.get('id'),
                "title": item.get('title'),
                "imgUrl": item.get('img')
            })

        article = PassageSerializer(Passage.objects.all()[:5], many=True).data
        articleList = []
        for item in article:
            articleList.append({
                "id": item.get('id'),
                "title": item.get('title'),
                "desc": item.get('content')[:75] + "...",
                "imgUrl": item.get('pic')
            })

        recommend = HomeSerializer(Home.objects.filter(types='r'),
                                   many=True).data
        recommendList = []
        for item in recommend:
            recommendList.append({
                "id": item.get('id'),
                "imgUrl": item.get('pic')
            })

        carouse = HomeSerializer(Home.objects.filter(types='c'),
                                 many=True).data
        carouseList = []
        for item in carouse:
            carouseList.append({
                "id": item.get('id'),
                "imgUrl": item.get('pic')
            })

        writter = UserSerializer(Users.objects.all(), many=True).data
        writterList = []
        for item in writter:
            desc = "写了%.1fk字 · %.1fk喜欢" % (item.get('total') / 1000,
                                           item.get("like") / 1000)
            writterList.append({
                "id": item.get('id'),
                "name": item.get('name'),
                "desc": desc,
                "imgUrl": item.get('imgUrl')
            })
        res = {
            "success": True,
            "data": {
                "topicList": topicList,
                "articleList": articleList,
                "recommendList": recommendList,
                "carouselList": carouseList,
                "writterList": writterList
            }
        }
        return Response(res)
Exemplo n.º 7
0
    def get(self, request: HttpRequest):
        """Render workflow-list page."""
        # Separate out workflows by type
        workflows = {}
        workflows['owned'] = Workflow.objects \
            .filter(owner=request.user) \
            .filter(Q(lesson_slug__isnull=True) | Q(lesson_slug=''))

        workflows['shared'] = Workflow.objects \
            .filter(acl__email=request.user.email) \
            .filter(Q(lesson_slug__isnull=True) | Q(lesson_slug=''))

        workflows['templates'] = Workflow.objects \
            .filter(in_all_users_workflow_lists=True) \
            .filter(Q(lesson_slug__isnull=True) | Q(lesson_slug=''))

        init_state = {
            'loggedInUser': UserSerializer(request.user).data,
            'workflows': {}
        }
        # turn queryset into list so we can sort it ourselves by reverse chron
        # (this is because 'last update' is a property of the delta, not the
        # Workflow. [2018-06-18, adamhooper] TODO make workflow.last_update a
        # column.
        for key, value in workflows.items():
            value = list(value)
            value.sort(key=lambda wf: wf.last_update(), reverse=True)
            serializer = WorkflowSerializerLite(value,
                                                many=True,
                                                context={'request': request})
            init_state['workflows'][key] = serializer.data

        return TemplateResponse(request, 'workflows.html',
                                {'initState': init_state})
Exemplo n.º 8
0
def make_init_state(request, workflow=None, modules=None):
    """Build a dict to embed as JSON in `window.initState` in HTML."""
    ret = {}

    if workflow:
        ret['workflowId'] = workflow.id
        ret['workflow'] = WorkflowSerializer(workflow,
                                             context={'request': request}).data
        wf_modules = workflow.wf_modules \
            .prefetch_related('parameter_vals__parameter_spec',
                              'module_version')
        wf_module_data_list = WfModuleSerializer(wf_modules, many=True).data
        ret['wfModules'] = dict([(str(wfm['id']), wfm)
                                 for wfm in wf_module_data_list])
        ret['selected_wf_module'] = workflow.selected_wf_module
        ret['uploadConfig'] = {
            'bucket': minio.UserFilesBucket,
            'accessKey': settings.MINIO_ACCESS_KEY,  # never _SECRET_KEY
            'server': settings.MINIO_EXTERNAL_URL
        }
        ret['user_files_bucket'] = minio.UserFilesBucket
        del ret['workflow']['selected_wf_module']

    if modules:
        modules_data_list = ModuleSerializer(modules, many=True).data
        ret['modules'] = dict([(str(m['id']), m) for m in modules_data_list])

    if request.user.is_authenticated():
        ret['loggedInUser'] = UserSerializer(request.user).data

    if workflow and not workflow.request_read_only(request):
        ret['updateTableModuleIds'] = load_update_table_module_ids()

    return ret
Exemplo n.º 9
0
def render_lesson_list(request):
    lessons = Lesson.objects.all()
    return TemplateResponse(request, 'lessons.html', {
        'initState': json.dumps({
            'loggedInUser': UserSerializer(request.user).data,
        }),
        'lessons': lessons,
    })
Exemplo n.º 10
0
def my_jwt_response_handler(token, user=None, request=None):
    return {
        'token': token,
        'user': UserSerializer(user, context={
            'request': request
        }).data
    }
    return
Exemplo n.º 11
0
	def post(self, request, format=None):
		user_serializer = UserSerializer(data=request.DATA)
		errors = dict()
		if user_serializer.is_valid():
			user =user_serializer.save()
			data = request.DATA.copy()
			data['user'] = User.objects.latest('id').id
			user_profile_serializer = UserProfileSerializer(data=data)

			if user_profile_serializer.is_valid():
				user_profile_serializer.save()
				return Response(user_profile_serializer.data, status=status.HTTP_201_CREATED)

			errors.update(user_profile_serializer.errors)
			return Response(errors, status=status.HTTP_400_BAD_REQUEST)


		errors.update(user_serializer.errors)
		return Response(errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 12
0
 def login(self, request):
     data = json.loads(request.body)
     filter_user = Users.objects.filter(username=data['username'])
     if not len(filter_user):
         res = {"success": True, "data": False}
         return Response(res)
     user = UserSerializer(filter_user, many=True).data[0]
     check_pass_result = check_password(data['password'], user['password'])
     if not check_pass_result:
         res = {"success": True, "data": False}
         return Response(res)
     # print(user.get('username'))
     # print(user.get('imgUrl'))
     res = {
         "success": True,
         "data": True,
         "username": user.get('name'),
         "imgUrl": user.get('imgUrl'),
         "userId": user.get('username')
     }
     return Response(res)
Exemplo n.º 13
0
def render_lesson_list(request):
    lessons = Lesson.objects.all()
    logged_in_user = None
    if request.user and request.user.is_authenticated:
        logged_in_user = UserSerializer(request.user).data

    return TemplateResponse(
        request, 'lessons.html', {
            'initState': json.dumps({
                'loggedInUser': logged_in_user,
            }),
            'lessons': lessons,
        })
Exemplo n.º 14
0
def _render_course(request, course, lesson_url_prefix):
    logged_in_user = None
    if request.user and request.user.is_authenticated:
        logged_in_user = UserSerializer(request.user).data

    # We render using HTML, not React, to make this page SEO-friendly.
    return TemplateResponse(request, 'course.html', {
        'initState': json.dumps({
            'loggedInUser': logged_in_user,
        }),
        'course': course,
        'courses': AllCourses,
        'lessons': list(course.lessons.values()),
        'lesson_url_prefix': lesson_url_prefix,

    })
Exemplo n.º 15
0
    def post(self, request, *args, **kwargs):
        serializer = UserSerializer(data = request.data)
        if serializer.is_valid():
            serializer.save()
        else:
            return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

        device = GCMDevice.objects.create(registration_id=request.data.get('registration_id')) # create new GCMDevice with the given registration_id
        user = User.objects.get(username = request.data.get('username'))
        requestData = request.data.copy() # Make a mutable copy of the request
        requestData['user'] = user.id # Set the user field to requesting user
        requestData['device'] = device.id
        
        serializer = LabourerSerializer(data = requestData)
        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)
Exemplo n.º 16
0
def _render_course(request, course, lesson_url_prefix):
    logged_in_user = None
    if request.user and request.user.is_authenticated:
        logged_in_user = UserSerializer(request.user).data

    # We render using HTML, not React, to make this page SEO-friendly.
    return TemplateResponse(
        request,
        "course.html",
        {
            "initState": json.dumps({"loggedInUser": logged_in_user}),
            "course": course,
            "courses": AllCourses,
            "lessons": list(course.lessons.values()),
            "lesson_url_prefix": lesson_url_prefix,
        },
    )
Exemplo n.º 17
0
def make_init_state(request, workflow=None, modules=None):
    """
    Build a dict to embed as JSON in `window.initState` in HTML.

    Raise Http404 if the workflow disappeared.
    """
    ret = {}

    if workflow:
        try:
            with workflow.cooperative_lock():  # raise DoesNotExist on race
                ret['workflowId'] = workflow.id
                ret['workflow'] = WorkflowSerializer(workflow,
                                                     context={
                                                         'request': request
                                                     }).data

                tabs = list(workflow.live_tabs)
                ret['tabs'] = dict(
                    (str(tab.slug), TabSerializer(tab).data) for tab in tabs)

                wf_modules = list(WfModule.live_in_workflow(workflow))

                ret['wfModules'] = {
                    str(wfm.id): WfModuleSerializer(wfm).data
                    for wfm in wf_modules
                }
        except Workflow.DoesNotExist:
            raise Http404('Workflow was recently deleted')

        ret['uploadConfig'] = {
            'bucket': minio.UserFilesBucket,
            'accessKey': settings.MINIO_ACCESS_KEY,  # never _SECRET_KEY
            'server': settings.MINIO_EXTERNAL_URL
        }
        ret['user_files_bucket'] = minio.UserFilesBucket

    if modules:
        modules_data_list = ModuleSerializer(modules, many=True).data
        ret['modules'] = dict([(str(m['id_name']), m)
                               for m in modules_data_list])

    if request.user.is_authenticated:
        ret['loggedInUser'] = UserSerializer(request.user).data

    return ret
Exemplo n.º 18
0
 def post(self, request, *args, **kwargs):
     serializer = UserSerializer(data = request.data)
     if serializer.is_valid():
         serializer.save()
     else:
         return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
     device = GCMDevice.objects.create(registration_id=request.data.get('registration_id')) # create new GCMDevice with the given registration_id
     user = User.objects.get(username = request.data.get('username'))
     requestData = request.data.copy() # Make a mutable copy of the request
     requestData['user'] = user.id # Set the user field to requesting user
     requestData['device'] = device.id 
     token = request.data.get('stripe_token')
     customer = stripe.Customer.create(source=token, description="customer id " + str(user.id))
     requestData['customer_id'] = customer
     serializer = ContractorSerializer(data = requestData)
     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)
Exemplo n.º 19
0
def make_init_state(request, workflow=None, modules=None):
    ret = {}

    if workflow:
        ret['workflowId'] = workflow.id
        ret['workflow'] = WorkflowSerializer(workflow, context={'user' : request.user}).data
        ret['selected_wf_module'] = workflow.selected_wf_module

    if modules:
        ret['modules'] = ModuleSerializer(modules, many=True).data

    if request.user.is_authenticated():
        ret['loggedInUser'] = UserSerializer(request.user).data
        ret['editCellsModuleId'] = edit_cells_module_id()
        ret['sortModuleId'] = sort_module_id()
        ret['reorderModuleId'] = reorder_module_id()

    return ret
Exemplo n.º 20
0
def make_init_state(request, workflow=None, modules=None):
    """
    Build a dict to embed as JSON in `window.initState` in HTML.

    Raise Http404 if the workflow disappeared.

    Side-effect: update workflow.last_viewed_at.
    """
    ret = {}

    if workflow:
        try:
            with workflow.cooperative_lock():  # raise DoesNotExist on race
                ret['workflowId'] = workflow.id
                ret['workflow'] = WorkflowSerializer(workflow,
                                                     context={
                                                         'request': request
                                                     }).data

                tabs = list(workflow.live_tabs)
                ret['tabs'] = dict(
                    (str(tab.slug), TabSerializer(tab).data) for tab in tabs)

                wf_modules = list(WfModule.live_in_workflow(workflow))

                ret['wfModules'] = {
                    str(wfm.id): WfModuleSerializer(wfm).data
                    for wfm in wf_modules
                }
                workflow.last_viewed_at = timezone.now()
                workflow.save(update_fields=['last_viewed_at'])
        except Workflow.DoesNotExist:
            raise Http404('Workflow was recently deleted')

    if modules:
        modules_data_list = ModuleSerializer(modules, many=True).data
        ret['modules'] = dict([(str(m['id_name']), m)
                               for m in modules_data_list])

    if request.user.is_authenticated:
        ret['loggedInUser'] = UserSerializer(request.user).data

    return ret
Exemplo n.º 21
0
    def put(self, request, format = None):
        print request.body
        if request.data.get('worker_id') != None:
            labourer = Labourer.objects.get(id = request.data.get('worker_id'))
            worker_rating = float(labourer.rating[:-1])
            num = int(labourer.rating[-1:])
            worker_rating = "%0.2f" % (worker_rating + float(request.data.get('rating')))
            num = num + 1
            labourer.rating = str(worker_rating) + str(num)
            labourer.save()
            return Response(status = status.HTTP_200_OK)

        labourer = Labourer.objects.get(user_id = request.user.id) 
        requestData = request.data.copy() # Make a mutable copy of the request
        requestData['user'] = labourer.user_id # Set the user field to requesting user
        
        # Check if user has a new registration id. Update it if there is 
        device_id = request.data.get('registration_id')
        if device_id != None:
            device = labourer.device 
            device.registration_id = device_id;
            device.save();
         
       # Check if user's username(email) is the same as the one in the database, don't update it if it is
        oldEmail = request.user.username
        if (oldEmail == requestData.get('username')):
            del requestData['username']

        serializer = UserSerializer(request.user, data = requestData, partial = True)
        if serializer.is_valid():
            serializer.save()
        else:
            return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

        serializer = LabourerSerializer(labourer, data = requestData, partial = True)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)
Exemplo n.º 22
0
    def login(self, request, *args):
        """
        Login endpoint
        ---
        # YAML (must be separated by `---`)

        omit_serializer: false
        serializer: server.serializers.UserSerializer

        parameters:
           - name: Authorization
             description: Basic HTTP authentication
             required: true
             type: string
             paramType: header

        responseMessages:
            - code: 200
              message: Correctly logged in
            - code: 401
              message: Invalid Authtentication
        """
        return Response(UserSerializer(request.user).data)
Exemplo n.º 23
0
 def list(self, request):
     queryset = get_user_model().objects.all()
     serializer = UserSerializer(queryset, many=True)
     return Response(serializer.data)
Exemplo n.º 24
0
def current_user(request, format=None):
    user_data = UserSerializer(request.user)
    return Response(user_data.data)
Exemplo n.º 25
0
def render_workflow(request, pk=None):
    user = UserSerializer(request.user)
    initState = {'user': user.data}
    return TemplateResponse(request, 'workflow.html',
                            {'initState': json.dumps(initState)})
Exemplo n.º 26
0
 def get(self, request):
     users = User.objects.filter()
     serializer_class = UserSerializer(users, many=True)
     return Response(serializer_class.data)
Exemplo n.º 27
0
 def post(self, request):
     user = UserSerializer(data=request.data)
     if user.is_valid():
         user.save()
     return Response({"success": "User created successfully"})