Example #1
0
def cancel_request(request, request_id):
    if request.method == 'DELETE':
        req = request.user.request_set.get(id=request_id)

        if req.status == Request.OPEN:
            req.delete()

            return JsonResponse({
                'status': 'success',
                'message': req.subject
            })

        else:
            response = JsonResponse({
                'status': 'error',
                'message': 'Cannot cancel once a bidder has been accepted.',
            })
            response.status_code = 404
            return response

    response = JsonResponse({
        'status': 'error',
        'message': 'Invalid request method.',
    })
    response.status_code = 404
    return response
Example #2
0
def edit(request):
    if request.POST.get('id'):
        company = Company.objects.get(id=request.POST.get('id'))
    else:
        company = None
    cf = CompanyForm(request.POST, request.FILES, instance=company)
    if not cf.is_valid():
        response = JsonResponse(cf.errors)
        response.status_code = 500
        return response
    company = cf.save()
    errors = dict()
    if request.POST.get('positions'):
        positions = literal_eval(request.POST.get('positions'))
        for position in positions:
            position['company'] = company.id
            if position.get('id'):
                position_obj = Position.objects.get(id=position['id'])
            else:
                position_obj = None
            pf = PositionForm(position, instance=position_obj)
            if not pf.is_valid():
                if position.get('name'):
                    errors[position['name']] = pf.errors
                else:
                    errors['Unknown'] = pf.errors
            else:
                if pf.instance.ongoing is None:
                    pf.instance.ongoing = pf.fields['ongoing'].initial
                pf.save()
    if len(errors) > 0:
        response = JsonResponse({'company': serializer(company=company), 'errors': errors})
        response.status_code = 500
        return response
    return JsonResponse({'company': serializer(company=company)})
Example #3
0
 def dispatch(self, request, *args, **kwargs):
     try:
         response = super(JsonView, self).dispatch(request, *args, **kwargs)
         if not isinstance(response, JsonResponse):
             response = JsonResponse(response, encoder=ModelJSONEncoder, safe=False)
     except ObjectDoesNotExist:
         logger.warning('Not Found: %s', request.path,
             extra={'status_code': 404, 'request': request})
         response = JsonResponse({'error': 'Not Found'})
         response.status_code = 404
     except PermissionDenied:
         logger.warning('Forbidden (Permission denied): %s', request.path,
             extra={'status_code': 403, 'request': request})
         response = JsonResponse({'error': 'Forbidden'})
         response.status_code = 403
     except SuspiciousOperation as e:
         logger.error(force_text(e),
             extra={'status_code': 400, 'request': request})
         response = JsonResponse({'error': 'Bad Request'})
         response.status_code = 400
     except SystemExit:
         # Allow sys.exit()
         raise
     except:
         logger.exception('Failed to handle request: %s', request.path,
             extra={'status_code': 500, 'request': request})
         response = JsonResponse({'error': 'Internal Server Error'})
         response.status_code = 500
     return response
Example #4
0
def status(request):  # pylint: disable=unused-argument
    """Status"""
    token = request.GET.get("token", "")
    if not token or token != settings.STATUS_TOKEN:
        raise Http404()

    info = {}
    check_mapping = {
        'REDIS': (get_redis_info, 'redis'),
        'ELASTIC_SEARCH': (get_elasticsearch_info, 'elasticsearch'),
        'POSTGRES': (get_pg_info, 'postgresql'),
        'CELERY': (get_celery_info, 'celery'),
    }

    for setting, (check_fn, key) in check_mapping.items():
        if setting in settings.HEALTH_CHECK:
            log.debug('getting: %s', key)
            info[key] = check_fn()
            log.debug('%s done', key)

    code = HTTP_OK
    status_all = UP
    for key in info:
        if info[key]["status"] == DOWN:
            code = SERVICE_UNAVAILABLE
            status_all = DOWN
            break

    info["status_all"] = status_all

    resp = JsonResponse(info)
    resp.status_code = code
    return resp
Example #5
0
def write_review(req, request_id):
    if req.method == 'POST':
        try:
            data = json.loads(req.body)
        except ValueError:
            data = req.POST

        request = Request.objects.get(id=request_id)

        worker_id = request.proposal_set.get(status=Request.ACCEPTED).worker_id

        request.status = Request.CLOSED
        request.save()

        user = req.user
        worker = Worker.objects.get(id=worker_id)
        rating = data['rating']
        type = Review.CUSTOMER_WORKER
        message = data['message']

        review = Review(user=user, worker=worker, rating=rating, type=type, message=message)

        review.save()
        return JsonResponse({
            'status': 'success',
            'message': review.user.username
        })

    response = JsonResponse({
        'status': 'error',
        'message': 'Invalid request method'
    })
    response.status_code = 405

    return response
Example #6
0
def login(request):
    form = LoginForm(request.POST)

    message = {}

    if request.method == 'POST':
        if form.is_valid():
            # Autentica o usuário
            usuario = authenticate(username=form.cleaned_data.get('username'),
                                   password=form.cleaned_data.get('password'))

            # Verifica se o usuário existe
            if usuario is not None:
                # Verifica se o usuário está ativo
                if usuario.is_active:
                    login_(request, usuario)
                    message = {'message': 'Login realizado com sucesso !', 'level': 'success'}
                else:
                    message = {'message': u'Seu usuário foi desativo !', 'level': 'danger'}
            else:
                message = {'message': u'Seu usuário ou senha estão incorretos !', 'level': 'danger'}
        else:
            response = JsonResponse(form.errors)
            response.status_code = 500
            return response

        return JsonResponse(message)
Example #7
0
def json_from_email(request):
    email = request.GET.get("email")
    
    #Check for an entry point with the given e-mail (or lack thereof), setting
    #entry_point to none if it wasn't found
    if email:
        domain = email.split("@")[-1]
        try:
            entry_point = EntryPoint.objects.get(domain=domain)
        except EntryPoint.DoesNotExist:
            entry_point = None
    else:
        entry_point = None
    
    #Try to get the default entry point if we don't have one already from the e-mail
    if not entry_point:
        try:
            entry_point = EntryPoint.objects.get(domain="")
        except EntryPoint.DoesNotExist:
            #Do nothing, entry_point is already None
            pass
    
    if entry_point:
        page = entry_point.page
        data = _json_for_page(request, page)
        
        response = JsonResponse(data)
        response["Access-Control-Allow-Origin"] = "*"
        return response
    
    #After all that, we still couldn't figure out what to serve.
    response = JsonResponse({})
    response.status_code = 404
    response["Access-Control-Allow-Origin"] = "*"
    return response
Example #8
0
    def post(self, request, *args, **kwargs):
        data = {}
        post_data = json.loads(request.body) if request.body else {}
        form = AuthenticationForm(request, post_data)
        if form.is_valid():
            user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password'])
        else:
            user = None

        status_code = 401
        if user is not None:
            if user.is_active:
                login(request, user)
                status_code = 200
                # Redirect to a success page.
            else:
                data['message'] = 'Disabled Account'
                # Return a 'disabled account' error message
                status_code = 401
        else:
            data['message'] = 'Invalid Credentials'
            # Return an 'invalid login' error message.
            status_code = 401

        response = JsonResponse(data)
        response.status_code = status_code
        return response
Example #9
0
def load_menu(request):
    try:
        fetch_menu()
    except:
        response = JsonResponse({
            'error': 'Unable to load menu'
        })
        response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
    else:
        response = JsonResponse({
            'success': 'Menu successfully loaded'
        })
        response.status_code = status.HTTP_200_OK

    # TODO verbose output
    return response
Example #10
0
def render_json_response(status_code, view_object_name, view_object, msg, url):
    r = JsonResponse({
        view_object_name: view_object,
        'msg': msg,
        'url': url
    })
    r.status_code = status_code
    return r
Example #11
0
 def post(self, request, *args, **kwargs):
     """Override post to first check if any users exist already."""
     if User.objects.count() > 0:
         response = JsonResponse({'status': 'denied'})
         response.status_code = 403
         return response
     else:
         return super().post(request, *args, **kwargs)
Example #12
0
def default(request):
    """
    in case the url doesn't match the existing
    """
    msg = {'message': 'Resource Not found'}
    re = JsonResponse(msg)
    re.status_code = 404
    return re
Example #13
0
    def post(self, request, *args, **kwargs):
        """Actually run the test."""

        if User.objects.count() > 0:
            response = JsonResponse({'status': 'denied'})
            response.status_code = 403
            return response

        try:
            self.run_test(request, *args, **kwargs)
            return JsonResponse({'status': 'success'})
        except Exception:
            tb = ''.join(traceback.format_exc())
            response = JsonResponse({'status': 'failed',
                                     'error': tb, })
            response.status_code = 400
            return response
Example #14
0
    def post(request):
        """Identifies a time series group by the name of an AssetSensor.

        If the AssetSensor does not yet exist, creates it.

        Args:
            recipe_instance: (Optional) POST argument with the
                recipe_instance pk. Used to retrieve the Brewhouse equipment
                associated with the request. Used for some cases when the
                equipment has more readily available access to the
                recipe_instance rather than the Brewhouse directly.
            brewhouse: (Optional): POST argument with the Brewhouse pk. Required
                if recipe_instance is not submitted.
            name: Name for the AssetSensor to be used in the time series data.
                See AssetSensor for more information on naming.
            variable_type: Type of AssetSensor to be used (e.g. "value" or
                "override"). Defaults to 'value'.

        Returns:
            JsonResponse with the pk to the sensor as the property "sensor".
            Response status is 200 if just returning object and 201 if needed to
            create a new AssetSensor.
        """
        name = request.data['name']
        variable_type = request.data.get('variable_type', 'value')

        if 'recipe_instance' in request.data:
            recipe_instance_id = request.data['recipe_instance']
            recipe_instance = models.RecipeInstance.objects.get(
                id=recipe_instance_id)
            brewhouse = recipe_instance.brewhouse
        else:
            brewhouse_id = request.data['brewhouse']
            brewhouse = models.Brewhouse.objects.get(id=brewhouse_id)

        if not permissions.is_member_of_brewing_company(
                request.user, brewhouse.brewery.company):
            return HttpResponseForbidden(
                'Access not permitted to brewing equipment.')

        # See if we can get an existing AssetSensor.
        try:
            sensor = models.AssetSensor.objects.get(name=name,
                                                    brewhouse=brewhouse,
                                                    variable_type=variable_type)
            status_code = status.HTTP_200_OK
        # Otherwise create one for recording data
        except ObjectDoesNotExist:
            LOGGER.debug('Creating new asset sensor %s for asset %s',
                         name, brewhouse)
            sensor = models.AssetSensor.objects.create(
                name=name, brewhouse=brewhouse, variable_type=variable_type)
            status_code = status.HTTP_201_CREATED

        response = JsonResponse({'sensor': sensor.pk})
        response.status_code = status_code
        return response
Example #15
0
def group_reject_request(request,group,player):
    group = get_object_or_404(Group, pk=group)
    player = get_object_or_404(Player, pk=player)
    request.user.player.reject_request_group(group,player)
    response = JsonResponse({
        "message" : "%s rejected into group %s" % (player,group.name)
    })
    response.status_code = 200
    return response
Example #16
0
def device_request(request):
	from django.http import JsonResponse

	data = {}
	error_code = 0

	if request.POST.get('uuid') and request.POST.get('address') and request.POST.get('action'):
		device_uuid = request.POST['uuid']
		resource_address = request.POST['address']
		action = request.POST['action']

		if action == 'read' or action == 'write':
			if Resource.objects.filter(device__uuid=device_uuid).filter(address=resource_address).count() != 0:
				from django.conf import settings
				from pika.exceptions import ConnectionClosed

				try:
					if action == 'read':
						DeviceRequest(settings.AMQP_HOST, device_uuid).read(resource_address)

						data['status'] = 'success'
						data['message'] = 'read request sent'
					else:
						if request.POST.get('value'):
							resource_value = request.POST['value']

							DeviceRequest(settings.AMQP_HOST, device_uuid).write(resource_address, resource_value)

							data['status'] = 'success'
							data['message'] = 'write request sent'
						else:
							data['status'] = 'error'
							data['message'] = 'write action requested without value'
							error_code = 400
				except ConnectionClosed:
					data['status'] = 'error'
					data['message'] = 'Unable to connect to the AMQP server'
					error_code = 500
			else:
				data['status'] = 'error'
				data['message'] = 'unknown device or resource'
				error_code = 400
		else:
			data['status'] = 'error'
			data['message'] = 'unknown action'
			error_code = 400
	else:
		data['status'] = 'error'
		data['message'] = 'bad request'
		error_code = 400

	if error_code != 0:
		response = JsonResponse(data)
		response.status_code = error_code
		return response
	else:
		return JsonResponse(data)
Example #17
0
def upload_img(request):
    form = ImageUploadForm(request.POST, request.FILES)
    if form.is_valid():
        result = form.save()
        return JsonResponse({'status': 'successful', 'url': result.img.url})

    response = JsonResponse({'error': form.errors})
    response.status_code = 400
    return response
Example #18
0
    def post(self, request, *args, **kwargs):
        w = self.get_window()

        ids = [(i[len('number_'):], request.POST[i]) for i in request.POST if i.startswith('number_')]
        seats = [(i[len('seats_'):], request.POST[i].split(',')) for i in request.POST if i.startswith('seats_')]
        print_format = request.POST.get('print-format', self.DEFAULT_PF)
        discount = request.POST.get('discount', '')
        if discount:
            discount = Discount.objects.get(id=discount)

        data = request.POST.copy()
        data['email'] = settings.FROM_EMAIL

        form = MPRegisterForm(data,
                              event=w.event, ids=ids, seats=seats,
                              client=request.session.get('client', ''))

        keys = list(form.fields.keys())
        for k in keys:
            # email is required
            if k == 'email':
                continue
            # removing not required fields
            form.fields.pop(k)

        if form.is_valid():
            mp = form.save(commit=False)
            if discount:
                mp.discount = discount
                mp.price = mp.get_window_price()
            mp.confirm()
            for tk in mp.tickets.all():
                tk.sold_in_window = True
                tk.price = tk.get_window_price()
                tk.save()

            price = float(data.get('price', 0))
            payed = data.get('payed', 0)
            if payed:
                payed = float(payed)
            else:
                payed = 0

            change = float(data.get('change', 0))
            payment = data.get('payment', 'cash')
            sale = TicketWindowSale(purchase=mp, window=w, user=request.user,
                                    price=price, payed=payed,
                                    change=change, payment=payment)
            sale.save()
            url = reverse('window_ticket', kwargs={'ev': mp.ev.slug, 'w': w.slug, 'pf': print_format, 'order': mp.order})
            data = {'url': url, 'mp': mp.order_tpv, 'wc': mp.window_code(), 'nt': mp.tickets.count()}
            return JsonResponse(data)
        data = {"message": _("There was an error, please try again"), "status": "ok"}
        resp = JsonResponse(data)
        resp.status_code = 400
        return resp
Example #19
0
def report_build(request):
    try:
        payload = json.loads(str(request.body, encoding='utf-8'))
        build = Build.objects.get(pk=payload['id'])
        build.handle_worker_report(payload)
        response = JsonResponse({'message': 'Thanks for building it'})
    except Build.DoesNotExist:
        response = JsonResponse({'error': 'Build not found'})
        response.status_code = 404
    return response
Example #20
0
def api_details(request, rt_id):
    try:
        m = Movie.objects.get(rt_id=rt_id)
    except ObjectDoesNotExist:
        r = JsonResponse({
            'error': "Movie with id '{}' was not found.".format(rt_id)
        })
        r.status_code = 404
        return r

    return JsonResponse(_details(m))
Example #21
0
 def get(self, request, *args, **kwargs):
     try:
         threatsList = loadMetaFiles()
         threatsList["dir_path"] = metaDirectory
         resp = JsonResponse(threatsList)
         resp.status_code = 200
         return resp
     except IOError:
         return HttpResponseNotFound("Cannot find directory " + metaDirectory)
     except Exception as e:
         return HttpResponseServerError(e.message)
Example #22
0
 def process_exception(self, request, exception):
     if type(exception) == AuthAlreadyAssociated:
         # this can happen when a user is already logged in via one backend (e.g. facebook)
         # and then tries to sign in via another one (e.g. google)
         # clients should check the session before trying to log in, but if they don't
         # provide a more meaningful error message
         response = JsonResponse({'error': unicode(_(
             'You are already logged in via another OAuth provider. '
             'Sign out first if you want to log in with another account.'))})
         response.status_code = 400
         return response
Example #23
0
def save_photo(request):
    '''
    Takes a JSON-formatted search result from the Flickr Search API, fetches the
    photo in multiple sizes from the Flickr API and saves them.
    '''
    if not request.user.is_authenticated():
        rsp = JsonResponse({'error': 'Login required'})
        rsp.status_code = 401
        return rsp
    search_result = request.POST
    download_photo(request.user, search_result)
    return JsonResponse({'saved': True})
Example #24
0
def proposal(req, request_id):
    if req.method == 'POST':
        try:
            data = json.loads(req.body)
        except ValueError:
            data = req.POST

        if 'message' not in data:
            raise MissingArgumentsException('message')
        if 'cost' not in data:
            raise MissingArgumentsException('cost')

        worker = req.worker
        request = Request.objects.get(id=request_id)

        if Proposal.objects.filter(worker_id=req.worker.id, request_id=request_id).exists():
            return JsonResponse({
                'status': 'error',
                'message': 'You cannot submit multiple bids for one request.',
            })

        proposal = Proposal(cost=data['cost'], message=data['message'], worker=worker, status=Proposal.OPEN,
                            request=request)

        proposal.save()

        return JsonResponse({
            'status': 'success',
            'message': proposal.worker.user.username,
        })
    elif req.method == 'DELETE':

        proposal = Proposal.objects.filter(worker_id=req.worker.id, request_id=request_id).first()
        if proposal.status == Proposal.OPEN:
            proposal.delete()

            return JsonResponse({
                'status': 'success',
                'message': proposal.request.subject,
            })
        else:
            response = JsonResponse({
                'status': 'error',
                'message': 'Only OPEN bids can be cancelled.',
            })
            response.status_code = 404
            return response

    return JsonResponse({
        'status': 'error',
        'message': 'Invalid request method.',
    })
Example #25
0
def json_from_page(request, slug):
    try:
        page = Page.objects.get(slug=slug)
    except Page.DoesNotExist:
        response = JsonResponse({})
        response.status_code = 404
        response["Access-Control-Allow-Origin"] = "*"
        return response
    
    data = _json_for_page(request, page)
    response = JsonResponse(data)
    response["Access-Control-Allow-Origin"] = "*"
    return response
Example #26
0
 def post(self, request, *args, **kwargs):
     """Actually run the test."""
     try:
         data = JSONParser().parse(request)
         self.run_test(data, *args, **kwargs)
         return JsonResponse({'status': 'success'})
     except Exception:
         tb = ''.join(traceback.format_exc())
         response = JsonResponse({
             'status': 'failed',
             'error': tb,
         })
         response.status_code = 400
         return response
Example #27
0
def json_default(request):
    try:
        page = EntryPoint.objects.get(domain="").page
        data = _json_for_page(request, page)
        
        response = JsonResponse(data)
        response["Access-Control-Allow-Origin"] = "*"
        return response
        
    except EntryPoint.DoesNotExist:
        response = JsonResponse({})
        response.status_code = 404
        response["Access-Control-Allow-Origin"] = "*"
        return response
Example #28
0
def accept_proposal(request, request_id, proposal_id):
    proposal = Proposal.objects.get(id=proposal_id)
    request = Request.objects.get(id=request_id)
    if proposal.worker.user.id == request.user.id:
        response = JsonResponse({
            'status': 'error',
            'message': 'You cannot bid on your own request',
        })
        response.status_code = 404
        return response
    proposal.status = 'ACCEPTED'
    request.status = 'ACCEPTED'
    proposal.save()
    request.save()
    return JsonResponse({'status': 'success'})
Example #29
0
    def post(self, request, *args, **kwargs):
        post_data = json.loads(request.body)
        form = UserCreationForm(post_data)
        status_code = 400
        data = {}
        if form.is_valid():
            User.objects.create_user(form.cleaned_data['username'], password=form.cleaned_data['password1'])
            user = authenticate(username=form.cleaned_data['username'], password=form.cleaned_data['password1'])
            login(request, user)
            status_code = 202
        else:
            data['errors'] = form.errors

        response = JsonResponse(data)
        response.status_code = status_code
        return response
def confirm_token(request):
    if request.method == "POST":
        request_params = request.POST.dict()
        token = int(request_params["text"])
        username = request_params["phone"]
        user = Ureporter.objects.get(user__username=username)

        data = None
        if user.token == token:
            data = {"token_ok": "true"}
        else:
            data = {"token_ok": "false"}

        response = JsonResponse(data)
        response.status_code = 200
        return response
Example #31
0
def exp_action_replay(request, experiment_id):
    try:
        experimentJudge = ExperimentJudge.objects.get(experiment__id=experiment_id, user__id=request.user.profile.id)
    except ExperimentJudge.DoesNotExist:
        data = {"message": "You are not authorized to participate in this experiment."}
        response = JsonResponse(data=data)
        response.status_code = 401
        return response
    else:
        experiment = experimentJudge.experiment
        if request.method == 'POST':
            try:
                candidate_id = int(request.POST.get('candidate_id', -1))
                try:
                    candidate = CandidatePair.objects.get(pk=candidate_id)
                except CandidatePair.DoesNotExist:
                    data = {"message": "Invalid candidate pair id."}
                    response = JsonResponse(data=data)
                    response.status_code = 401
                    return response

            except TypeError:
                data = {"message": "Invalid candidate pair id."}
                response = JsonResponse(data=data)
                response.status_code = 401
                return response

            try:
                time_spent = int(request.POST.get('time_spent', -1))
            except TypeError:
                data = {"message": "Invalid time spent information"}
                response = JsonResponse(data=data)
                response.status_code = 401
                return response
            try:
                next_exp_details = ExperimentDetail.objects.filter(candidate_pair__id__gt =candidate_id,
                                                                experiment=experiment,
                                                                   visited=True,

                                                                   source_type=ExperimentDetail.PRECISION_FRAMEWORK_SOURCE_TYPE).order_by('candidate_pair')

                if next_exp_details:
                    block1 = next_exp_details[0].candidate_pair.candidate_one
                    block2 = next_exp_details[0].candidate_pair.candidate_two

                    data = {"block_one": block1.getSourceCode().strip(),
                            "block_two": block2.getSourceCode().strip(),
                            "exp_id": experiment_id,
                            "candidate_id": next_exp_details[0].candidate_pair.id,
                            "has_next": next_exp_details.count() > 1,
                            "left": next_exp_details.count(),
                            "clone_type": next_exp_details[0].clone_type,
                            "resolution_method": next_exp_details[0].resolution_method,
                            }
                    response = JsonResponse(data=data)
                    response.status_code = 200
                    return response
                else:
                    data = getReportForExperimentForUser(request.user.profile, experiment)
                    response = JsonResponse(data=data)
                    response.status_code = 200
                    return response

            except ExperimentDetail.DoesNotExist:
                data = {
                    "message": "Invalid request. Couldn't find the requested candidate pair",
                    "redirect_url": "send some url"}  # TODO:send redirect url
                response = JsonResponse(data=data)
                response.status_code = 401
                return response
def pointsEnquiry(request):
    if request.method == 'POST':
        success = True
        missing_field_name = ''
        third_party_sh_name = ''
        request_mode = ''
        params = {}
        third_userid = ''
        userid = ''
        account_name = ''
        token = ''
        post_balance = 0

        error_msg = ""
        received_json_data = json.loads(request.body)
        if '3rd_party_sh_name' in received_json_data:
            third_party_sh_name = received_json_data['3rd_party_sh_name']
        else:
            missing_field_name += '3rd_party_sh_name, '
            success = False

        if 'request_mode' in received_json_data:
            request_mode = received_json_data['request_mode']
        else:
            missing_field_name += 'request_mode, '
            success = False

        if 'params' in received_json_data:
            params = received_json_data['params']
        else:
            missing_field_name += 'parameters, '
            success = False

        if '3rd_userid' in params:
            third_userid = params['3rd_userid']
        else:
            missing_field_name += '3rd_userid, '
            success = False

        if 'userid' in params:
            userid = params['userid']
        else:
            missing_field_name += 'userid, '
            success = False

        if 'account_name' in params:
            account_name = params['account_name']

        if 'token' in params:
            token = params['token']
        else:
            missing_field_name += 'token, '
            success = False

        if success == False:
            response = JsonResponse({
                "success":
                'false',
                "error_msg":
                missing_field_name[0:len(missing_field_name) - 2] +
                " are missing.",
                "points":
                "null",
                "act_membership_num":
                "null",
                "expiration_time":
                "",
                "request_mode":
                request_mode
            })
            response.status_code = 200
            return response

        if checkIfTokenExist(token):
            balance = checkIfRecordExistAndBalance(third_party_sh_name,
                                                   third_userid, account_name)
            if not balance == 'no_exist':
                error_msg = ''
                post_balance = balance
                success = 'true'
                status_code = 200
                expiration_time = datetime.datetime.now() + datetime.timedelta(
                    30)
            else:
                error_msg = "not found the record according to these parameters"
                post_balance = 'null'
                success = 'false'
                status_code = 404
                expiration_time = 'null'
            response = JsonResponse({
                "success": success,
                "error_msg": error_msg,
                "points": post_balance,
                "act_membership_num": "null",
                "expiration_time": expiration_time,
                "request_mode": request_mode
            })
            response.status_code = status_code
            return response
        else:
            response = JsonResponse({
                "success": 'false',
                "error_msg": "token is not valid",
                "points": "null",
                "act_membership_num": "null",
                "expiration_time": "null",
                "request_mode": request_mode
            })
            response.status_code = 404
            return response

    response = JsonResponse({
        "success": 'false',
        "error_msg": "no valid parameters",
        "points": "null",
        "act_membership_num": "null",
        "expiration_time": "null",
        "request_mode": "null"
    })
    response.status_code = 404
    return response
Example #33
0
def add_city(request):
    context = dict()
    try:
        context['message'] = request.session['message']
        del request.session['message']
    except:
        pass
    try:
        user = Account.objects.get(pk=request.session['user'])
        context['user'] = user
    except:
        return redirect(reverse(accountsviews.index))
    else:
        pass
    if request.is_ajax():
        try:
            city_exists = bool(City.objects.get(name=request.POST['add']))
        except:
            city_exists = False
        if not city_exists:
            return JsonResponse({'message': 'success'})
        else:
            response = JsonResponse({"message": "error"})
            response.status_code = 403  # To announce that the user isn't allowed to publish
            return response
    if request.method == 'POST':
        city = str(request.POST['add'])
        try:
            city_picture = get_wiki_image(str(city) + ' city')
            description = wikipedia.summary(str(city) + ' city')
        except:
            pass
        try:
            city_page = wikipedia.page(str(city) + ' city')
            url = city_page.url
        except:
            pass
        try:
            location = geolocator.geocode(str(city))
            city_latitude = location.latitude
            city_longtitude = location.longitude
        except:
            city_latitude = None
            city_longtitude = None
        try:
            city_request = RequestToCreateCity(city_name=city,
                                               wiki_link=url,
                                               requesting_user=user,
                                               description=description,
                                               picture=city_picture,
                                               latitude=city_latitude,
                                               longitude=city_longtitude)
            city_request.save()
            request_failed = False
        except:
            try:
                city_request = RequestToCreateCity(city_name=city,
                                                   requesting_user=user,
                                                   description=description,
                                                   picture=city_picture,
                                                   latitude=city_latitude,
                                                   longitude=city_longtitude)
                city_request.save()
                request_failed = False
            except:
                request_failed = True
        #city_slug = slugify(city)
        #city = City(name = city, description = description, picture = city_picture, slug = city_slug)
        #city.save()
        if request_failed:
            request.session['message'] = "Sorry, we couldn't find this city"
            return redirect(reverse(views.add_city))
        request.session['message'] = "City was successfuly added."
        return redirect(reverse(views.add_city))
    return render(request, 'app/city/add_city.html', context)
Example #34
0
def error_500(request):
    message = "An error occurred, it's on us"
    response = JsonResponse(data={'message': message, 'status_code': 500})
    response.status_code = 500
    return response
Example #35
0
def handler500(request):
    response = JsonResponse({'msg': 'internal server error'})
    response.status_code = 500
    return response
def pointsDeduct(request):
    if request.method == 'POST':
        success = True
        missing_field_name = ''
        third_party_sh_name = ''
        request_mode = ''
        params = {}
        third_userid = ''
        userid = ''
        account_name = ''
        deduct_amount = ''
        transaction_type = ''
        linked_trans_id = ''
        token = ''
        post_balance = 0

        error_msg = ""
        deduct_time = ""
        received_json_data = json.loads(request.body)
        if '3rd_party_sh_name' in received_json_data:
            third_party_sh_name = received_json_data['3rd_party_sh_name']
        else:
            missing_field_name += '3rd_party_sh_name, '
            success = False

        if 'request_mode' in received_json_data:
            request_mode = received_json_data['request_mode']
        else:
            missing_field_name += 'request_mode, '
            success = False

        if 'params' in received_json_data:
            params = received_json_data['params']
        else:
            missing_field_name += 'parameters, '
            success = False

        if '3rd_userid' in params:
            third_userid = params['3rd_userid']
        else:
            missing_field_name += '3rd_userid, '
            success = False

        if 'userid' in params:
            userid = params['userid']
        else:
            missing_field_name += 'userid, '
            success = False

        if 'account_name' in params:
            account_name = params['account_name']

        if 'deduct_amount' in params:
            deduct_amount = params['deduct_amount']
        else:
            missing_field_name += 'deduct_amount, '
            success = False

        if 'transaction_type' in params:
            transaction_type = params['transaction_type']
        else:
            missing_field_name += 'transaction_type, '
            success = False

        if 'linked_trans_id' in params:
            linked_trans_id = params['linked_trans_id']

        if 'token' in params:
            token = params['token']
        else:
            missing_field_name += 'token, '
            success = False

        if success == False:
            response = JsonResponse({
                "success":
                'false',
                "error_msg":
                missing_field_name[0:len(missing_field_name) - 2] +
                " are missing.",
                "pre_point_balance":
                "null",
                "post_point_balance":
                "null",
                "add_time":
                "null",
                "3rd_trans_num":
                "",
                "request_mode":
                request_mode
            })
            response.status_code = 200
            return response

        if checkIfTokenExist(token):
            id = checkIfRecordExist(third_party_sh_name, third_userid,
                                    account_name)
            if not id == False:
                post_balance = deductBalance(id, deduct_amount)
                if post_balance == '':
                    error_msg = "insufficient points balance for deduction operation"
                    post_balance = 'null'
                    deduct_time = 'null'
                else:
                    deduct_time = datetime.datetime.now()
            else:
                error_msg = "not found the record according to these parameters"
                post_balance = 'null'
                deduct_time = 'null'

            response = JsonResponse({
                "success": 'true',
                "error_msg": error_msg,
                "pre_point_balance": deduct_amount,
                "post_point_balance": post_balance,
                "deduct_time": deduct_time,
                "3rd_trans_num": "",
                "request_mode": request_mode
            })
            response.status_code = 404
            return response
        else:
            response = JsonResponse({
                "success": 'false',
                "error_msg": "token is not valid",
                "pre_point_balance": "null",
                "post_point_balance": "null",
                "add_time": "null",
                "3rd_trans_num": "",
                "request_mode": request_mode
            })
            response.status_code = 404
            return response

    response = JsonResponse({
        "success": 'false',
        "error_msg": "no valid parameters",
        "pre_point_balance": "null",
        "post_point_balance": "null",
        "add_time": "null",
        "3rd_trans_num": "",
        "request_mode": "null"
    })
    response.status_code = 404
    return response
Example #37
0
 def form_invalid(self, form):
     response = JsonResponse({
         'image': 'Image missing or broken.',
     })
     response.status_code = 400
     return response
def pointsAdd(request):
    if request.method == 'POST':
        success = True
        missing_field_name = ''
        third_party_sh_name = ''
        params = {}
        request_mode = ''
        third_userid = ''
        userid = ''
        account_name = ''
        add_amount = ''
        transaction_type = ''
        linked_trans_id = ''
        token = ''

        post_balance = 0
        received_json_data = json.loads(request.body)
        if '3rd_party_sh_name' in received_json_data:
            third_party_sh_name = received_json_data['3rd_party_sh_name']
        else:
            missing_field_name += '3rd_party_sh_name, '
            success = False

        if 'request_mode' in received_json_data:
            request_mode = received_json_data['request_mode']
        else:
            missing_field_name += 'request_mode, '
            success = False

        if 'params' in received_json_data:
            params = received_json_data['params']
        else:
            missing_field_name += 'parameters, '
            success = False

        if '3rd_userid' in params:
            third_userid = params['3rd_userid']
        else:
            missing_field_name += '3rd_userid, '
            success = False

        if 'userid' in params:
            userid = params['userid']
        else:
            missing_field_name += 'userid, '
            success = False

        if 'account_name' in params:
            account_name = params['account_name']

        if 'add_amount' in params:
            add_amount = params['add_amount']
        else:
            missing_field_name += 'add_amount, '
            success = False

        if 'transaction_type' in params:
            transaction_type = params['transaction_type']
        else:
            missing_field_name += 'transaction_type, '
            success = False

        if 'linked_trans_id' in params:
            linked_trans_id = params['linked_trans_id']

        if 'token' in params:
            token = params['token']
        else:
            missing_field_name += 'token, '
            success = False

        if success == False:
            response = JsonResponse({
                "success":
                'false',
                "error_msg":
                missing_field_name[0:len(missing_field_name) - 2] +
                " are missing.",
                "pre_point_balance":
                "null",
                "post_point_balance":
                "null",
                "add_time":
                "null",
                "3rd_trans_num":
                "",
                "request_mode":
                request_mode
            })
            response.status_code = 200
            return response

        if checkIfTokenExist(token):
            id = checkIfRecordExist(third_party_sh_name, third_userid,
                                    account_name)
            if not id == False:
                post_balance = sumBalance(id, add_amount)
            else:
                insertNewPoints(third_party_sh_name, third_userid,
                                request_mode, userid, account_name, add_amount,
                                transaction_type, linked_trans_id, token)
                post_balance = int(add_amount)

            response = JsonResponse({
                "success": 'true',
                "error_msg": "",
                "pre_point_balance": add_amount,
                "post_point_balance": post_balance,
                "add_time": datetime.datetime.now(),
                "3rd_trans_num": "",
                "request_mode": request_mode
            })
            response.status_code = 404
            return response
        else:
            response = JsonResponse({
                "success": 'false',
                "error_msg": "token is not valid",
                "pre_point_balance": "null",
                "post_point_balance": "null",
                "add_time": "null",
                "3rd_trans_num": "",
                "request_mode": request_mode
            })
            response.status_code = 404
            return response

    response = JsonResponse({
        "success": 'false',
        "error_msg": "no valid parameters",
        "pre_point_balance": "null",
        "post_point_balance": "null",
        "add_time": "null",
        "3rd_trans_num": "",
        "request_mode": "null"
    })
    response.status_code = 404
    return response
Example #39
0
def deleteComment(request, pk):
    message = '잘못된 접근'
    response = JsonResponse({'status': 'false', 'message': message})
    response.status_code = 500
    return response
Example #40
0
def error_404(request, exception):
    message = "The endpoint is not found"
    response = JsonResponse(data={'message': message, 'status_code': 404})
    response.status_code = 404
    return response
Example #41
0
def create_json_response_with_location(data, id, path):
    json_response = JsonResponse(data)
    json_response['Location'] = path + str(id)
    json_response.status_code = 201
    return json_response
Example #42
0
def return_error_msg(msg, status=400):
    resp = JsonResponse({"success": False, "msg": msg})
    resp.status_code = status
    return resp
Example #43
0
def smps(request):
    #Design parameters received flag and recommended components updated flags set to false on page load.
    design_param_updated = False
    design_comp_updated = False

    if request.method == "GET":
        #####################################
        #Generic website parameters
        #####################################
        landing_page_url = "/"
        design_center_url = "design-center"
        header_title = "Design Electronics"
        context.update({
            "landing_page_url": landing_page_url,
            "design_center_url": design_center_url,
            'header_title': header_title
        })

        #####################################
        #Model Parameters
        #####################################
        #Create list of all models in database.
        models = []

        #Query DC DC converters.
        dc_dc_query = DCDC.objects.all()
        models.append(dc_dc_query)

        #Assumes that DC DC converter model has at least one entry.
        if len(dc_dc_query) != 0:
            power_types = dc_dc_query[0].POWER_ELECTRONIC_CIRCUIT_TYPES
            smps_types = dc_dc_query[0].SMPS_TYPES
            dc_dc_types = dc_dc_query[0].DCDC_TYPES
            dc_dc_list = [o for o in dc_dc_query]

        #####################################
        #Current Circuit Analysis Update    #
        #####################################
        default_circuit_url = "ccm-buck-converter"
        analyzed_circuit_url = request.path.rsplit("/", 1)[1]

        #Handle design-center page default design shown.
        if analyzed_circuit_url == design_center_url:
            analyzed_circuit_url = default_circuit_url

        analyzed_circuit_object = None
        circuit_found = False

        #Loop through all models and select a model object to be displayed on webpage.
        for circuit_type in models:
            filtered_circuit = circuit_type.filter(url=analyzed_circuit_url)
            if len(filtered_circuit) == 1:
                circuit_found = True
                analyzed_circuit_object = filtered_circuit[0]
                break

        #####################################
        #Generate the sidebar.              #
        #####################################
        generate_sidebar(power_types, smps_types, dc_dc_types, dc_dc_list,
                         context)

        #Render 404 page if circuit url was not found.
        if not circuit_found:
            return render(request, '404.html', context=context)

        context.update({'analyzed_circuit_object': analyzed_circuit_object})

        #####################################
        #Generate the design parameters and #
        #selected components forms.         #
        #####################################
        design_parameters_circuit_object = analyzed_circuit_object.design_params.all(
        )
        selected_components_circuit_object = analyzed_circuit_object.selected_components.all(
        )

        context.update({
            'design_parameters_circuit_object':
            design_parameters_circuit_object
        })
        context.update({
            'selected_components_circuit_object':
            selected_components_circuit_object
        })

        design_param_form = DesignParamForm(None,
                                            design_parameters_circuit_object)
        design_comp_form = DesignCompForm(None,
                                          selected_components_circuit_object)

        context.update({
            'design_param_form': design_param_form,
            'design_comp_form': design_comp_form
        })

        #GET method, populate recommended components section with default text.
        generate_rec_dcdc_components(analyzed_circuit_object, context, None)
        analyze_dcdc_converter(analyzed_circuit_object, context, None)

        #Initial flags for receiving updated forms are set to false on initial page load.
        context.update({'design_comp_updated': False})
        context.update({'design_param_updated': False})

        #Populate bode plots with initial load of data.
        generate_bode(analyzed_circuit_object, context, None, 5000)

    #####################################
    #Generate the recommended components#
    #or analyze the circuit.
    #####################################
    elif request.method == "POST":

        #Generate selected components.
        if "submitdesignparams" in request.POST:
            design_param_form = DesignParamForm(
                request.POST, context["design_parameters_circuit_object"])
            circuit_obj = context["analyzed_circuit_object"]

            #Validate data (and generate self.cleaned_data)
            #prior to custom clean so that it is available
            #to custom cleaning method.
            design_param_form.is_valid()
            #Custom clean design_param_form given type of power electronic circuit to be analyzed.
            design_param_form.custom_clean(circuit_obj.pe_circuit_type,
                                           circuit_obj.smps_circuit_type,
                                           circuit_obj.dcdc_type,
                                           circuit_obj.name)

            if len(design_param_form.errors) == 0:
                generate_rec_dcdc_components(
                    context["analyzed_circuit_object"], context,
                    design_param_form.cleaned_data)

                #Update design parameter form
                context.update({'design_param_form': design_param_form})
                context.update({'design_param_updated': True})
            else:
                #The entered data was not valid, return errors.
                context.update({'design_param_updated': False})
                response = JsonResponse({"errors": design_param_form.errors})
                response.status_code = 403

                return response

            return JsonResponse(context["rec_dcdc_comps"], safe=False)

        #Analyze the circuit.
        elif "submitcompvalues" in request.POST:
            #Checks if the first recommended component has been populated
            #given valid design parameters.
            if context["design_param_updated"]:
                design_comp_form = DesignCompForm(
                    request.POST,
                    context["selected_components_circuit_object"])
                circuit_obj = context["analyzed_circuit_object"]

                #Validate data (and generate self.cleaned_data)
                #prior to custom clean so that it is available
                #to custom cleaning method.
                design_comp_form.is_valid()
                #Custom clean design_param_form given type of power electronic circuit to be analyzed.
                design_comp_form.custom_clean(circuit_obj.pe_circuit_type,
                                              circuit_obj.smps_circuit_type,
                                              circuit_obj.dcdc_type,
                                              circuit_obj.name)

                if design_comp_form.is_valid():
                    design_param_form = context["design_param_form"]
                    success = analyze_dcdc_converter(
                        context["analyzed_circuit_object"], context,
                        dict(
                            chain(design_comp_form.cleaned_data.items(),
                                  design_param_form.cleaned_data.items())))
                    if success:
                        context.update({'design_comp_form': design_comp_form})
                        context.update({'design_comp_updated': True})
                    else:
                        context.update({'design_comp_updated': False})
                        param_error = {}
                        param_error["DC/DC Analysis"] = [
                            "Design components selected do not result in a feasible converter."
                            +
                            " Possible issues could be due to the losses in the parasitic resistances, reduce values and resubmit. "
                        ]

                        response = JsonResponse({"errors": param_error})
                        response.status_code = 403

                        return response
                else:
                    #The entered data was not valid.
                    context.update({'design_comp_updated': False})
                    response = JsonResponse(
                        {"errors": design_comp_form.errors})
                    response.status_code = 403

                    return response

                return JsonResponse(context["analyzed_equations"], safe=False)
            else:
                #Design parameters were not received, must enter design parameters
                #before being able to analyze the converter.
                context.update({'design_comp_updated': False})
                design_comp_form = DesignCompForm(
                    request.POST,
                    context["selected_components_circuit_object"])

                #Get a field to associate an error with. NEED TO UPDATE, THIS IS TERRIBLE.
                for k, v in design_comp_form.fields.items():
                    field = k
                    break

                design_comp_form.add_error(
                    field, "Design parameter form entered was not valid." +
                    " Correct form and resubmit prior to submitting component values."
                )

                response = JsonResponse({"errors": design_comp_form.errors})
                response.status_code = 403

                return response

        #Generate open loop bode plots
        elif "generateopenplots" in request.POST:

            #Both design parameter form and design component form must be filled out to
            #generate open loop plots.
            if context["design_param_updated"] and context[
                    "design_comp_updated"]:

                design_comp_form = context["design_comp_form"]
                design_param_form = context["design_param_form"]
                cleaned_data = dict(
                    chain(design_comp_form.cleaned_data.items(),
                          design_param_form.cleaned_data.items(),
                          [("D", context["duty_cycle"])]))
                updated_data = generate_bode(
                    context["analyzed_circuit_object"], context, cleaned_data,
                    5000)

                return JsonResponse(updated_data, safe=False)
            else:
                if not (context["design_param_updated"]):
                    #Design parameters were not received, must enter design parameters
                    #before being able to analyze the converter.

                    param_error = {}
                    param_error["Design parameter form"] = (
                        "Design parameter form entered was not valid." +
                        " Correct form and resubmit prior to generating open loop bode plots."
                    )

                    response = JsonResponse({"errors": param_error})

                elif not (context["design_comp_updated"]):
                    #Design components were not received, must enter design components
                    #before being able to analyze the converter.

                    param_error = {}
                    param_error["Design component form"] = [
                        "Design component form entered was not valid." +
                        " Correct form and resubmit prior to generating open loop bode plots."
                    ]

                    response = JsonResponse({"errors": param_error})

                response.status_code = 403

                return response

    return render(request, 'smps.html', context=context)
def ShowAllUser(request):
    '''
    描述:处理管理员获取全部用户请求
    参数:request
    返回:response
    '''
    Success = True
    Return = {}
    Reason = ""
    TheSession = ""
    TheResult = {}
    TheErrorInfo = {}
    ErrorID = Constants.UNDEFINED_NUMBER
    TheLastSeenID = Constants.UNDEFINED_NUMBER
    TheMostNumber = Constants.UNDEFINED_NUMBER
    if Success:
        try:
            TheSession = request.GET.get("session")
            if TheSession == 'UNDEFINED':
                Success = False
                Reason = "请求参数不合法!"
                ErrorID = Constants.ERROR_CODE_INVALID_PARAMETER
            try:
                TheLastSeenID = int(request.GET.get("lastSeenId"))
            except:
                TheLastSeenID = Constants.UNDEFINED_NUMBER
            try:
                TheMostNumber = int(request.GET.get("most"))
                if TheMostNumber <= 0:
                    Success = False
                    Reason = "请求参数不合法!"
                    ErrorID = Constants.ERROR_CODE_INVALID_PARAMETER 
            except:
                TheMostNumber = Constants.UNDEFINED_NUMBER
        except:
            Success = False
            Reason = "请求参数不合法!"
            ErrorID = Constants.ERROR_CODE_INVALID_PARAMETER
    if Success:
        try:
            if AdminManager.JudgeWhetherAdminLogin(TheSession) != True:
                Success = False
                Reason = "管理员未登录!"
                ErrorID = Constants.ERROR_CODE_LOGIN_ERROR
        except:
            Success = False
            Reason = "管理员未登录!"
            ErrorID = Constants.ERROR_CODE_LOGIN_ERROR
    if Success:
        try:
            TheResult, TheErrorInfo = AdminManager.ShowAllUsers(TheLastSeenID, TheMostNumber)
            if TheResult == {}:
                Success = False
                Reason = TheErrorInfo["reason"]
                ErrorID = TheErrorInfo["code"]
        except:
            Success = False
            Reason = "查询全部用户失败!"
            ErrorID = Constants.ERROR_CODE_UNKNOWN
    if Success:
        Return = TheResult
    else:
        Return["errid"] = ErrorID
        Return["errmsg"] = Reason
    Response = JsonResponse(Return)
    if Success == True:
        Response.status_code = 200
    else:
        Response.status_code = 400
    return Response
Example #45
0
def ajax_bad_request(error_msg):
    response = JsonResponse({'err': error_msg})
    response.status_code = http.HTTPStatus.BAD_REQUEST
    return response
Example #46
0
def user_login(request):
    def get_user_login_success_response(user):
        expires = timezone.now() + timezone.timedelta(days=7)
        jwt_payload = get_user_private_dict(user.account)
        jwt_payload['expires'] = expires.strftime("%Y-%m-%d %H:%M:%S")
        jwt_token = jwt.encode(jwt_payload, PRIVATE_KEY,
                               algorithm="RS256").decode("utf-8")
        response = JsonResponse(
            get_json_dict(data={}, err_code=0, message="Login success"))
        response.set_cookie('jwt', jwt_token, max_age=604800)
        return response

    received_data = json.loads(request.body.decode('utf-8'))
    username = received_data['username']
    password = received_data['password']

    json_dict = get_json_dict(data={})

    user = authenticate(username=username, password=password)
    if user:  # user auth success
        if user.is_active:  # user have confirmed its email, login success

            response = get_user_login_success_response(user)
            return response

        else:  # user have not confirmed its email
            json_dict['err_code'] = -1
            json_dict['message'] = "请验证您的学号邮箱"
            response = JsonResponse(json_dict)
            response.status_code = 403
            return response
    else:  # user auth fail
        try:
            User.objects.get(username=username)
        except ObjectDoesNotExist as e:  # user object does not exist
            if (re.match("\d{3,11}", username)
                ):  # username is the form of a student/staff account
                nickname = check_fdu_auth(
                    username, password
                )  # check username and password via mail.fudan.edu.cn
                if nickname != None:  # check success, create user
                    user = User(username=username)
                    user.set_password(password)
                    user.is_active = True
                    user.save()
                    account = Account(user=user)
                    account.nickname = nickname
                    account.save()
                    user_icon_response = requests.get(
                        "https://www.gravatar.com/avatar/{0}?s=256&d=identicon&r=PG"
                        .format(user.username))
                    account.icon.save(name='default_icon',
                                      content=ContentFile(
                                          user_icon_response.content))
                    return get_user_login_success_response(user)
            # user does not exists
            json_dict['err_code'] = -1
            json_dict['message'] = "用户不存在"
            response = JsonResponse(json_dict)
            response.status_code = 403
            return response
        else:  # user exists, password is incorrect
            json_dict['err_code'] = -1
            json_dict['message'] = "密码错误"
            response = JsonResponse(json_dict)
            response.status_code = 403
            return response
Example #47
0
def not_found(request):
    """Not found view"""
    response = JsonResponse(data={'detail': 'not found.'})
    response.status_code = status.HTTP_404_NOT_FOUND
    return response
Example #48
0
def send_json(message, status_code, data={}):
    response = JsonResponse({'data': data, 'message': message})
    response.status_code = status_code
    return response
Example #49
0
    def post(self, request, *args, **kwargs):
        if request.is_ajax():
            usuario = Usuario.objects.filter(
                id=request.POST.get('usuario')).first()
            turismo = Turismo.objects.filter(
                id=request.POST.get('turismo')).first()
            fecha_inicial = request.POST.get('fecha1')
            fecha_final = request.POST.get('fecha2')
            fecha_actual = datetime.today()

            if fecha_inicial and fecha_final:
                #datetime.strptime(fecha_inicial, '%Y-%m-%d') -> permite transformar un string a date
                fecha_inicial_a_date = datetime.strptime(
                    fecha_inicial, '%Y-%m-%d')
                fecha_final_a_date = datetime.strptime(fecha_final, '%Y-%m-%d')

                if fecha_inicial_a_date > fecha_actual and fecha_final_a_date > fecha_actual and fecha_final_a_date > fecha_inicial_a_date or fecha_final_a_date == fecha_inicial_a_date:
                    if fecha_final_a_date == fecha_inicial_a_date:
                        if fecha_inicial_a_date > fecha_actual and fecha_final_a_date > fecha_actual:
                            nueva_reserva = self.model(
                                usuario=usuario,
                                turismo=turismo,
                                fecha_inicial=fecha_inicial,
                                fecha_final=fecha_final)
                            nueva_reserva.save()
                            mensaje = f'{self.model.__name__} registrado correctamente!'
                            error = 'No hay error!'
                            response = JsonResponse({
                                'mensaje': mensaje,
                                'error': error,
                                'url': self.success_url
                            })
                            response.status_code = 201
                            return response

                        # septimo error else
                        elif fecha_inicial_a_date < fecha_actual:
                            mensaje = septimo_error_else
                            error = 'necesita rellenar el campo'
                            response = JsonResponse({
                                'mensaje': mensaje,
                                'error': error
                            })
                            response.status_code = 400
                            return response

                        # octavo error else
                        elif fecha_final_a_date < fecha_actual:
                            mensaje = octavo_error_else
                            error = 'necesita rellenar el campo'
                            response = JsonResponse({
                                'mensaje': mensaje,
                                'error': error
                            })
                            response.status_code = 400
                            return response

                    else:
                        nueva_reserva = self.model(usuario=usuario,
                                                   turismo=turismo,
                                                   fecha_inicial=fecha_inicial,
                                                   fecha_final=fecha_final)
                        nueva_reserva.save()
                        mensaje = f'{self.model.__name__} registrado correctamente!'
                        error = 'No hay error!'
                        response = JsonResponse({
                            'mensaje': mensaje,
                            'error': error,
                            'url': self.success_url
                        })
                        response.status_code = 201
                        return response

                # cuarto error else
                elif fecha_inicial_a_date < fecha_actual:
                    mensaje = cuarto_error_else
                    error = 'necesita rellenar el campo'
                    response = JsonResponse({
                        'mensaje': mensaje,
                        'error': error
                    })
                    response.status_code = 400
                    return response

                # quinto error else
                elif fecha_final_a_date < fecha_actual:
                    mensaje = quinto_error_else
                    error = 'necesita rellenar el campo'
                    response = JsonResponse({
                        'mensaje': mensaje,
                        'error': error
                    })
                    response.status_code = 400
                    return response

                # sexto error else
                elif fecha_final_a_date < fecha_inicial_a_date:
                    mensaje = sexto_error_else
                    error = 'necesita rellenar el campo'
                    response = JsonResponse({
                        'mensaje': mensaje,
                        'error': error
                    })
                    response.status_code = 400
                    return response

            # primer error else
            elif not fecha_inicial and not fecha_final:
                mensaje = primer_error_else
                error = 'necesita rellenar el campo'
                response = JsonResponse({'mensaje': mensaje, 'error': error})
                response.status_code = 400
                return response

            # segundo error else
            elif not fecha_inicial:
                mensaje = segundo_error_else
                error = 'necesita rellenar el campo'
                response = JsonResponse({'mensaje': mensaje, 'error': error})
                response.status_code = 400
                return response

            # tercer error else
            elif not fecha_final:
                mensaje = tercer_error_else
                error = 'necesita rellenar el campo'
                response = JsonResponse({'mensaje': mensaje, 'error': error})
                response.status_code = 400
                return response

        return redirect('templates_home:listado_turismos_disponibles')
Example #50
0
def create_response(msg='success', status_code=200, data={}):
    response = JsonResponse({'message': msg, 'data': data})
    response.status_code = status_code
    return response
def ChangeActivityStatus(request):
    '''
    描述:修改单一活动状态
    参数:request
    返回:response
    '''
    Success = True
    Return = {}
    Reason = ""
    TheSession = ""
    TheResult = {}
    TheErrorInfo = {}
    TheInfo = {}
    ErrorID = Constants.UNDEFINED_NUMBER
    if Success:
        try:
            TheSession = request.GET.get("session")
            TheInfo = json.loads(request.body)
            if TheSession == 'UNDEFINED':
                Success = False
                Reason = "请求参数不合法!"
                ErrorID = Constants.ERROR_CODE_INVALID_PARAMETER     
        except:
            Success = False
            Reason = "请求参数不合法!"
            ErrorID = Constants.ERROR_CODE_INVALID_PARAMETER
    if Success:
        try:
            if AdminManager.JudgeWhetherAdminLogin(TheSession) != True:
                Success = False
                Reason = "管理员未登录!"
                ErrorID = Constants.ERROR_CODE_LOGIN_ERROR
        except:
            Success = False
            Reason = "管理员未登录!"
            ErrorID = Constants.ERROR_CODE_LOGIN_ERROR
    if Success:
        try:
            TheResult = AdminManager.ChangeActivityStatus(TheInfo)
            if TheResult["result"] != "success":
                Success = False
                Reason = TheResult["reason"]
                ErrorID = TheResult["code"]
        except:
            Success = False
            Reason = "修改活动状态失败!"
            ErrorID = Constants.ERROR_CODE_UNKNOWN
    if Success:
        Return["result"] = "success"
    else:
        Return["errid"] = ErrorID
        Return["errmsg"] = Reason
    Response = JsonResponse(Return)
    if Success == True:
        Response.status_code = 200
    else:
        Response.status_code = 400
    
    #发送消息
    if Success and "sendMessage" in TheResult:
        TimeManager.SendTimedMessageActivity(TheInfo["id"], TheResult["sendMessage"])
        if TheResult["sendMessage"] == Constants.MESSAGE_TYPE_ACTIVITY_FORBIDDEN:  
            print("send forbid")
        elif TheResult["sendMessage"] == Constants.MESSAGE_TYPE_AUDIT_PASS:  
            print("send audit pass")
        elif TheResult["sendMessage"] == Constants.MESSAGE_TYPE_AUDIT_FAIL:  
            print("send audit fail")
    return Response
Example #52
0
def AjaxSearchCustomerMainAddress(request):
    is_error = False
    error_message = ""
    customer_main_address_list = []
    customer_zone = request.POST.get('customer_zone')

    sql = "select cus_id, cus_name_th, cus_add1_th, cus_add2_th, cus_subdist_th, cus_name_en, cus_add1_en, cus_add2_en, cus_subdist_en, cus_zip, cus_tel, "
    sql += "cus_fax, cus_email, cus_active, con_fname_th, con_lname_th, con_position_th, con_fname_en, con_lname_en, con_position_en, dist_th, dist_en, city_en, city_th, dept_en "
    sql += "from EX_MAIN EX_MAIN where cus_active = 1 "
    if customer_zone != "":
        sql += "and cus_zone=" + str(customer_zone) + ";"
    else:
        sql += ";"
    print("SQL = ", sql)

    try:
        with connection.cursor() as cursor:
            cursor.execute(sql)
            customer_main_address_obj = cursor.fetchall()

    except db.OperationalError as e:
        is_error = True
        error_message = "Error message: " + str(e)
    except db.Error as e:
        is_error = True
        error_message = "Error message: " + str(e)
    finally:
        cursor.close()

    if customer_main_address_obj is not None:
        if len(customer_main_address_obj) > 0:
            for row in customer_main_address_obj:
                record = {
                    "cus_id": row[0],
                    "cus_name_th": row[1],
                    "cus_add1_th": row[2],
                    "cus_add2_th": row[3],
                    "cus_subdist_th": row[4],
                    "dist_th": row[20],
                    "city_th": row[23],
                    "cus_name_en": row[5],
                    "cus_add1_en": row[6],
                    "cus_add2_en": row[7],
                    "cus_subdist_en": row[8],
                    "dist_en": row[21],
                    "city_en": row[22],
                    "cus_zip": row[9],
                    "cus_tel": row[10],
                    "cus_fax": row[11],
                    "cus_zone": row[24],
                    "con_fname_th": row[14],
                    "con_lname_th": row[15],
                    "con_position_th": row[16],
                    "con_fname_en": row[17],
                    "con_lname_en": row[18],
                    "con_position_en": row[19],
                    "cus_email": row[12],
                }
                customer_main_address_list.append(record)
        else:
            is_error = True
    else:
        is_error = True

    response = JsonResponse(
        data={
            "is_error": False,
            "error_message": error_message,
            "customer_main_address_list": list(customer_main_address_list),
        })

    response.status_code = 200
    return response
Example #53
0
def handler404(request):
    response = JsonResponse({'msg': 'not found'})
    response.status_code = 404
    return response
Example #54
0
def make_response(data, status_code):
    response = JsonResponse(data)
    response.status_code = status_code
    return response
Example #55
0
def map_current_data(request):
    """
    ! Used only by administrator.
    Loading all files from path to database.
    {path} = "TowerDefense\\Packages"
    Method, that updates game files.

    url: /submit-update

    :param request: GET
    ver = version number : positive integer
    :return:
    {"update": "ok"}, status code 200
    """
    try:
        game_build = GameBuild.objects.get(name="game")
    except Exception:
        GameBuild.objects.create(version=0)
        game_build = GameBuild.objects.get(name="game")

    version = int(round(time.time()))

    print("Current versions {}".format(version))

    game_build.version = version
    game_build.save()

    graphic_files = []
    sound_files = []
    level_files = []
    turret_files = []
    enemy_files = []

    # List all files
    for root, dirs, paths in os.walk(os.getcwd() + os.path.sep + "data"):
        for path in paths:
            file_path: str = os.path.join(root, path).replace("\\", "/")
            file_path = "." + re.search(r".+(/data.+)", file_path).group(1)
            if "sprites" in root.lower():
                graphic_files.append(file_path)
            elif "sounds" in root.lower():
                sound_files.append(file_path)
            elif "levels" in root.lower():
                level_files.append(file_path)
            elif "turrets" in root.lower():
                turret_files.append(file_path)
            elif "enemies" in root.lower():
                enemy_files.append(file_path)

    def update_resource_files(file_list: list, db_objects):
        for path in file_list:
            resource_name: str = path.split("/")[-1]
            resource_exists = False
            for db_object in db_objects.all():
                if db_object.path == path and db_object.name == resource_name:
                    resource_exists = True
                    break
            if not resource_exists:
                db_object, _ = db_objects.update_or_create(name=resource_name,
                                                           path=path)
                db_object.version = version
                db_object.save()

    # noinspection PyTypeChecker
    update_resource_files(graphic_files, Graphic.objects)
    # noinspection PyTypeChecker
    update_resource_files(sound_files, Sound.objects)

    def update_json_documents(file_list: list, db_objects):
        for path in file_list:
            with open(path, 'r') as file:
                resource_name: str = json.loads(file.read())['name']
            resource_exists = False
            for db_object in db_objects.all():
                if db_object.path == path and db_object.name != resource_name:
                    resource_exists = True
                    break
            if not resource_exists:
                db_object, _ = db_objects.update_or_create(name=resource_name,
                                                           path=path)
                db_object.version = version
                db_object.save()

    # noinspection PyTypeChecker
    update_json_documents(level_files, Level.objects)
    # noinspection PyTypeChecker
    update_json_documents(turret_files, Turret.objects)
    # noinspection PyTypeChecker
    update_json_documents(enemy_files, Enemy.objects)

    response = JsonResponse({"status": "ok", "version": version})
    response.status_code = 200

    return response
def excel_import(request):
    if request.method == 'POST':
        file = request.FILES['excel']

        wb = openpyxl.load_workbook(file)
        worksheet = wb["Sheet1"]
        excel_data = list()
        for row in worksheet.iter_rows():
            row_data = list()
            for cell in row:
                row_data.append(str(cell.value))
            excel_data.append(row_data)

        saved_title = list()
        last_title_id = 0
        last_content_id = 0
        for data in excel_data:
            if len(saved_title) == 0:
                saved_title.append(data[1])
                title = Title.objects.create(title=data[1])
                last_title_id = title.id
                newData = Data.objects.create(article=data[0],
                                              title_id=last_title_id,
                                              content=data[2])
                last_content_id = newData.id
            else:
                saved = False
                for title in saved_title:
                    if title == data[1]:
                        saved = True
                if saved != True:
                    saved_title.append(data[1])
                    title = Title.objects.create(title=data[1])
                    last_title_id = title.id
                    splitted_artice = data[0].split('.')
                    if len(splitted_artice) > 3:
                        Data.objects.create(article=data[0],
                                            title_id=last_title_id,
                                            content=data[2],
                                            data_id=last_content_id)
                    else:
                        newData = Data.objects.create(article=data[0],
                                                      title_id=last_title_id,
                                                      content=data[2])
                        last_content_id = newData.id
                        print(last_content_id)
                else:
                    splitted_artice = data[0].split('.')
                    if len(splitted_artice) > 3:
                        Data.objects.create(article=data[0],
                                            title_id=last_title_id,
                                            content=data[2],
                                            data_id=last_content_id)
                    else:
                        newData = Data.objects.create(article=data[0],
                                                      title_id=last_title_id,
                                                      content=data[2])
                        last_content_id = newData.id

        messages.success(request, 'Амжилттай хадгаллаа')
        return render(request, 'fileupload.html')
    elif request.method == 'GET':
        return render(request, 'fileupload.html')
    else:
        response = JsonResponse()
        response.status_code = 405
        return response
def title(request):
    if request.method == 'POST':
        if request.body:
            body_unicode = request.body.decode('utf-8')
            body = json.loads(body_unicode)
            try:
                token = body['token']
                question = body['question']
                if token and question:
                    stop_word = ['нь', 'энэ', 'бол', 'дэх', 'тухай', 'хүн']
                    user_input = question

                    dataObj = Title.objects.all()
                    fullContents = list()
                    contents = list()

                    for obj in dataObj:
                        data = {
                            'id': obj.id,
                            'title': obj.title,
                        }
                        fullContents.append(data)
                        contents.append(obj.title)

                    convertToVector = ConvertToVector(stop_word)

                    contents.append(user_input)
                    total_vec = convertToVector.convert_tfidf_vector(contents)

                    res = []
                    max_cos = 0

                    user_vec = total_vec[len(total_vec) - 1]

                    for i in range(len(total_vec) - 1):
                        cosine_number = convertToVector.cosine_similarity(
                            user_vec, total_vec[i])
                        if cosine_number >= max_cos and cosine_number > 0:
                            max_cos = cosine_number
                            if len(res) == 0:
                                res.append(CosineResult(i, cosine_number))
                            else:
                                res.append(CosineResult(i, cosine_number))
                    if len(res) == 0:
                        response = JsonResponse({
                            'message':
                            'Таны асуултанд тохирох хариулт олдсонгүй :('
                        })
                        response.status_code = 204
                        return response
                    else:
                        answers = list()
                        res.sort(key=lambda c: c.cosine_number, reverse=True)
                        for obj in res:
                            answer = list()
                            answer.append(fullContents[obj.index]['id'])
                            answer.append(fullContents[obj.index]['title'])
                            answers.append(answer)

                        response = JsonResponse({'data': answers[0:5]})
                        response.status_code = 200
                        return response
                else:
                    response = JsonResponse({'message': 'Өгөгдөл оруулна уу'})
                    response.status_code = 400
                    return response
            except Exception as e:
                print(e)
                response = JsonResponse({'message': 'Хүсэлт буруу байна'})
                response.status_code = 401
                return response
    else:
        return render(request, '405error.html')
Example #58
0
def exp_action_new(request, experiment_id):
    try:
        experimentJudge = ExperimentJudge.objects.get(experiment__id=experiment_id, user__id=request.user.profile.id)
    except ExperimentJudge.DoesNotExist:
        data = {"message": "You are not authorized to participate in this experiment."}
        response = JsonResponse(data=data)
        response.status_code = 401
        return response
    else:
        if experimentJudge.status == ExperimentJudge.STATUS_NOT_STARTED:
            experimentJudge.status = ExperimentJudge.STATUS_STARTED
            experimentJudge.save()

        experiment = experimentJudge.experiment
        if request.method == 'POST':
            try:
                candidate_id = int(request.POST.get('candidate_id', -1))
                try:
                    candidate = CandidatePair.objects.get(pk=candidate_id)
                except CandidatePair.DoesNotExist:
                    data = {"message": "Invalid candidate pair id."}
                    response = JsonResponse(data=data)
                    response.status_code = 401
                    return response

            except TypeError:
                data = {"message": "Invalid candidate pair id."}
                response = JsonResponse(data=data)
                response.status_code = 401
                return response

            try:
                time_spent = int(request.POST.get('time_spent', -1))
            except TypeError:
                data = {"message": "Invalid time spent information"}
                response = JsonResponse(data=data)
                response.status_code = 401
                return response
            form = ExperimentActionForm(experiment, request.POST, request=request)
            if form.is_valid():
                try:

                    exp_detail = ExperimentDetail.objects.get(experiment=experiment,
                                                              candidate_pair=candidate,
                                                              user=request.user.profile,
                                                              visited=False,
                                                              source_type=ExperimentDetail.USER_SOURCE_TYPE
                                                              )
                    exp_detail.vote = form.cleaned_data['vote']
                    exp_detail.SOURCE_TYPE = ExperimentDetail.USER_SOURCE_TYPE

                    # save candidate's user score.
                    candidate_user_score = CandidateUserScore()
                    candidate_user_score.user = request.user.profile
                    candidate_user_score.candidate = candidate
                    candidate_user_score.vote = exp_detail.vote
                    candidate_user_score.experiment = experiment
                    candidate_user_score.time_spent = time_spent  # => [137]
                    candidate_user_score.explaination = form.cleaned_data['explanation']
                    candidate_user_score.save()
                    exp_detail.visited = True
                    exp_detail.save()

                    next_exp_details = ExperimentDetail.objects.filter(user=request.user.profile,
                                                                       experiment=experiment,
                                                                       visited=False,
                                                                       source_type=ExperimentDetail.USER_SOURCE_TYPE).order_by(
                        '?')

                    if next_exp_details:
                        block1 = next_exp_details[0].candidate_pair.candidate_one
                        block2 = next_exp_details[0].candidate_pair.candidate_two

                        data = {"block_one": block1.getSourceCode().strip(),
                                "block_two": block2.getSourceCode().strip(),
                                "exp_id": experiment_id,
                                "candidate_id": next_exp_details[0].candidate_pair.id,
                                "has_next": next_exp_details.count() > 1,
                                "left": next_exp_details.count()
                                }
                        response = JsonResponse(data=data)
                        response.status_code = 200
                        return response
                    else:
                        data = getReportForExperimentForUser(request.user.profile, experiment)
                        response = JsonResponse(data=data)
                        response.status_code = 200
                        return response

                except ExperimentDetail.DoesNotExist:
                    data = {
                        "message": "Invalid request. Couldn't find the requested candidate pair",
                        "redirect_url": "send some url"}  # TODO:send redirect url
                    response = JsonResponse(data=data)
                    response.status_code = 401
                    return response
            else:
                print(form.errors)
                data = {
                    "message": "Some error in form validation",
                    "redirect_url": "send some url"}  # TODO:send redirect url
                response = JsonResponse(data=data)
                response.status_code = 401
                return response
Example #59
0
        def decorated(*args, **kwargs):
            if settings.SECURE_API_ENDPOINTS:
                request = args[0]
                auth = request.META.get("HTTP_AUTHORIZATION", None)

                if auth:
                    parts = auth.split()
                    token = parts[1]
                else:
                    response = JsonResponse({
                        'detail':
                        'Authentication credentials were not provided'
                    })
                    response.status_code = 401
                    return response

                AUTH0_DOMAIN = os.environ.get('AUTH0_DOMAIN')
                API_IDENTIFIER = os.environ.get('API_IDENTIFIER')
                jsonurl = req.urlopen('https://' + AUTH0_DOMAIN +
                                      '/.well-known/jwks.json')
                jwks = json.loads(jsonurl.read())
                cert = '-----BEGIN CERTIFICATE-----\n' + \
                    jwks['keys'][0]['x5c'][0] + '\n-----END CERTIFICATE-----'
                certificate = load_pem_x509_certificate(
                    cert.encode('utf-8'), default_backend())
                public_key = certificate.public_key()
                try:
                    decoded = jwt.decode(token,
                                         public_key,
                                         audience=API_IDENTIFIER,
                                         algorithms=['RS256'])
                except jwt.ExpiredSignatureError as es:
                    response = JsonResponse(
                        {'detail': 'Token Signature has expired'})
                    response.status_code = 401
                    return response
                except jwt.InvalidAudienceError as es:
                    response = JsonResponse(
                        {'detail': 'Invalid audience in token'})
                    response.status_code = 401
                    return response

                except jwt.InvalidIssuerError as es:
                    response = JsonResponse(
                        {'detail': 'Invalid issuer for token'})
                    response.status_code = 401
                    return response

                except jwt.InvalidSignatureError as es:
                    response = JsonResponse(
                        {'detail': 'Invalid signature in token'})
                    response.status_code = 401
                    return response
                except Exception as e:
                    response = JsonResponse({'detail': 'Invalid token'})
                    response.status_code = 401
                    return response

                if decoded.get("scope"):
                    token_scopes = decoded["scope"].split()
                    token_scopes_set = set(token_scopes)
                    if set(required_scopes).issubset(token_scopes_set):
                        return f(*args, **kwargs)
                response = JsonResponse(
                    {'message': 'You don\'t have access to this resource'})
                response.status_code = 403
                return response
            else:
                return f(*args, **kwargs)
Example #60
0
def notification_invalid_response(error_message='Invalid Notification'):
    response = JsonResponse({'notificationResponse': error_message})
    response.status_code = 403
    return response