示例#1
0
 def serialize(cls, models):
     if isinstance(models, ScientificModel):
         data = cls._to_dict(models)
     else:
         data = [cls._to_dict(model) for model in models]
     encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)
     return encoder.encode(data)
示例#2
0
def encode_event_to_json(event):
	"""
	Encode Event to a JSON serialisable object.
	"""
	datetime_json_encoder = DjangoJSONEncoder()
	
	return {'id': event.id,
			'title': event.title,
			'from_date': datetime_json_encoder.encode(event.from_date),
			'from_time': datetime_json_encoder.encode(event.from_time),
			'to_date': datetime_json_encoder.encode(event.to_date),
			'to_time': datetime_json_encoder.encode(event.to_time),
			'location': event.location,
			'note': event.note,
			'lecturer': '%s' % event.lecturer,
			'module': '%s' % event.module,}
示例#3
0
 def serialize(cls, tests, version=None):
     if isinstance(tests, ValidationTestDefinition):
         data = cls._to_dict(tests, version=version)
     else:
         data = [cls._to_dict(test) for test in tests]
     encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)
     return encoder.encode(data)
示例#4
0
 def serialize(cls, results):
     if isinstance(results, ValidationTestResult):
         data = cls._to_dict(results)
     else:
         data = [cls._to_dict(result) for result in results]
     encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)
     return encoder.encode(data)
示例#5
0
def send_notification_by_websocket(sender, instance, created, *args, **kwargs):
    if not created:
        return
    if instance.action_type == NOTIFICATION_TYPE_AUCTION:
        data = NotificationSerializer(instance).data
        encoder = DjangoJSONEncoder()
        AuctionChannel.send(encoder.encode(data))
示例#6
0
 def __init__(self, obj):
     encoder = DjangoJSONEncoder(encoding='utf-8',
                                 ensure_ascii=False,
                                 sort_keys=False,
                                 indent=1)
     super(JsonResponse, self).__init__(encoder.encode(obj),
                                        content_type='application/json')
示例#7
0
class ProjectListSerializer(object):
    template = "project_list.html"

    def __init__(self, media_type):
        self.media_type = media_type
        self._encoder = DjangoJSONEncoder(ensure_ascii=False)

    def encode(self, projects, request):
        protocol = request.is_secure() and "https" or "http"
        data = [
            {
                "id": project.id,
                "name": project.get_name(),
                "description": project.description,
                "uri": "%s://%s%s"
                % (protocol, request.get_host(), reverse("sumatra-project", args=[project.id])),
                "last_updated": project.last_updated(),
            }
            for project in projects
        ]
        if self.media_type in (
            "application/vnd.sumatra.project-list-v3+json",
            "application/vnd.sumatra.project-list-v4+json",
            "application/json",
        ):
            # later can add support for multiple versions
            return self._encoder.encode(data)
        elif self.media_type == "text/html":
            context = {"data": data}
            return render(request, self.template, context)
        else:
            raise ValueError("Unsupported media type")
 def serialize(cls, projects):
     encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)
     if isinstance(projects, Project):
         data = cls._to_dict(projects)
     else:
         data = [cls._to_dict(project) for project in projects]
     return encoder.encode(data)
 def serialize(cls, quotas):
     if isinstance(quotas, Quota):
         data = cls._to_dict(quotas)
     else:
         data = [cls._to_dict(quota) for quota in quotas]
     encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)
     return encoder.encode(data)
示例#10
0
def instance_to_json(instance, fields=None, exclude=None, indent=1):
    encoder = DjangoJSONEncoder(encoding='utf-8',
                                ensure_ascii=False,
                                sort_keys=False,
                                indent=indent)
    return encoder.encode(
        instance_to_dict(instance, fields=fields, exclude=exclude))
示例#11
0
def encode_task_to_json(task):
	"""
	Encode Task to a JSON serialisable object.
	"""
	datetime_json_encoder = DjangoJSONEncoder()
	
	return {'id': task.id,
			'date': datetime_json_encoder.encode(task.date),
			'notes': task.notes,}
示例#12
0
def json_v1(req):
    enc = DjangoJSONEncoder(
        ensure_ascii=False, indent=2, separators=(',', ':'))
    return HttpResponse(enc.encode(
        [
            info.toolinfo()
            for info in ToolInfo.objects.all().order_by('name')
        ]),
        content_type="application/json; charset=utf8"
    )
示例#13
0
def generate_access_token(user):
      id_json = DjangoJSONEncoder()
      user_id = id_json.encode(user.id)
      payload = {
            'username': user.username,
            'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=60),
            'iat': datetime.datetime.utcnow()
      }

      return jwt.encode(payload, settings.SECRET_KEY, algorithm='HS256').decode('utf-8')
示例#14
0
文件: views.py 项目: crccheck/bikeme
 def get_context_data(self, **kwargs):
     data = super(MarketDetail, self).get_context_data(**kwargs)
     serializer = DjangoJSONEncoder()
     stations = (self.object.stations.filter(active=True)
         .order_by('-latest_snapshot__timestamp')
         .select_related('latest_snapshot')
     )
     data['stations'] = stations
     json_data = {
         'stations': map(self.station_to_json, stations),
         'updated_at': stations[0].updated_at,
     }
     data['station_json'] = serializer.encode(json_data)
     return data
示例#15
0
class PermissionListSerializer(object):
    template = "project_permissions.html"

    def __init__(self, media_type):
        self.media_type = media_type
        self._encoder = DjangoJSONEncoder(ensure_ascii=False)

    def encode(self, project, request=None):
        data = {
            "id": project.id,
            "name": project.get_name(),
            "access": [perm.user for perm in project.projectpermission_set.all()],
        }
        if self.media_type == "application/json":
            return self._encoder.encode(data)
        elif self.media_type == "text/html":
            context = {"data": data}
            return render(request, self.template, context)
        else:
            raise ValueError("Unsupported media type")
示例#16
0
class ProjectSerializer(object):
    template = "project_detail.html"

    def __init__(self, media_type):
        self.media_type = media_type
        self._encoder = DjangoJSONEncoder(ensure_ascii=False, indent=4)

    def encode(self, project, records, tags, request):
        protocol = request.is_secure() and "https" or "http"
        project_uri = "%s://%s%s" % (
            protocol,
            request.get_host(),
            reverse("sumatra-project", args=[project.id]),
        )
        data = {
            "id": project.id,
            "name": project.get_name(),
            "description": project.description,
            "records": ["%s%s/" % (project_uri, rec.label) for rec in records],
            "tags": tags,
            "user": request.user.username,
        }
        if request.user.username != "anonymous":
            # avoid non logged-in users harvesting usernames
            data["access"] = [perm.user.username for perm in project.projectpermission_set.all()]
        if self.media_type in (
            "application/vnd.sumatra.project-v3+json",
            "application/vnd.sumatra.project-v4+json",
            "application/json",
        ):
            # later can add support for multiple versions
            return self._encoder.encode(data)
        elif self.media_type == "text/html":
            context = {"data": data}
            return render(request, self.template, context)
        else:
            raise ValueError("Unsupported media type")
示例#17
0
文件: views.py 项目: crccheck/bikeme
    def get(self, request, **kwargs):
        del_window = datetime.timedelta(hours=12)
        serializer = DjangoJSONEncoder()
        station = self.model.objects.get(market__slug=kwargs['slug'],
                slug=kwargs['station_slug'])

        # make querysets
        recent_start = timezone.now() - datetime.timedelta(hours=11)
        recent_qs = station.history.filter(
            timestamp__gt=recent_start,
            timestamp__lte=recent_start + del_window,
        )
        yesterday_start = recent_start - datetime.timedelta(days=1)
        yesterday_qs = station.history.filter(
            timestamp__gt=yesterday_start,
            timestamp__lte=yesterday_start + del_window,
        )
        lastweek_start = recent_start - datetime.timedelta(days=7)
        lastweek_qs = station.history.filter(
            timestamp__gt=lastweek_start,
            timestamp__lte=lastweek_start + del_window,
        )

        # convert querysets to json
        recent = map(self.snapshot_to_json, recent_qs)
        yesterday = map(self.snapshot_to_json, yesterday_qs)
        lastweek = map(self.snapshot_to_json, lastweek_qs)

        data = {
            'capacity': station.capacity,
            'recent': recent,
            'yesterday': yesterday,
            'lastweek': lastweek,
        }
        return HttpResponse(serializer.encode(data),
                content_type='application/json')
示例#18
0
def serialize_personal_quiz(microlearning_average):
    json_encoder = DjangoJSONEncoder()
    project = microlearning_average.get_project()

    step_microlearnings = MicroLearning.objects.filter_by_step(
        microlearning_average.step)
    teams = project.teams.all()

    # Old version socket data
    serialized_data = microlearning_average.serialize()

    # Append data for new socket version
    serialized_data['personalRating'] = serialized_data.get('user')
    serialized_data['teamRatings'] = []

    for microlearning in step_microlearnings:
        for team in teams.filter(stream=microlearning.step_stream.stream):
            team_microlearning_avg = MicroLearningAverage(
                step_stream=microlearning.step_stream,
                user=None,
                team=team
            )
            data = team_microlearning_avg.serialize()
            serialized_data['teamRatings'].append(
                json.loads(
                    json_encoder.encode({
                        'pkTeam': team.pk,
                        'nameTeam': team.name,
                        'ratings': data.get('ratings'),
                        'avg': data.get('allTeamAvg'),
                    })
                )
            )
    serialized_data['teamRatings'] = sorted(
        serialized_data['teamRatings'], key=lambda x: x['pkTeam'])
    return serialized_data
示例#19
0
def instance_to_json(instance, fields=None, exclude=None, indent=1):
    encoder = DjangoJSONEncoder(
        encoding='utf-8', ensure_ascii=False, sort_keys=False, indent=indent)
    return encoder.encode(instance_to_dict(instance, fields=fields, exclude=exclude))
示例#20
0
def json_encode(data):
    encoder = DjangoJSONEncoder()
    return encoder.encode(data)
示例#21
0
 def test_0_encode_default(self):
     djangoencoder = DjangoJSONEncoder()
     self.assertEquals(self.encoder.encode('str'),
                       djangoencoder.encode('str'))
示例#22
0
 def __init__(self, obj):
     encoder = DjangoJSONEncoder(
         encoding='utf-8', ensure_ascii=False, sort_keys=False, indent=1)
     super(JsonResponse, self).__init__(
         encoder.encode(obj),
         content_type='application/json')
示例#23
0
def as_json(d, indent=2):

    encoder = DjangoJSONEncoder(indent=indent, sort_keys=True)

    return encoder.encode(d)
示例#24
0
 def test_0_encode_default(self):
     djangoencoder = DjangoJSONEncoder()
     self.assertEquals(self.encoder.encode('str'), djangoencoder.encode('str'))
示例#25
0
def json_pack(feed):
	encoder=DjangoJSONEncoder()
	return HttpResponse(encoder.encode(feed))
示例#26
0
def json_response(response_obj):
    Encoder = DjangoJSONEncoder()
    return HttpResponse(Encoder.encode(response_obj))
class DnsAdGuardProvider(Provider):
    def __init__(self, isSimulation=False):
        super().__init__("DNS", isSimulation)
        self.pattern_id = re.compile("\d+\.\d+\.\d+\.(\d+)")
        resolver.default_resolver = resolver.Resolver(configure=False)
        resolver.default_resolver.nameservers = [AppSettings.DNS_HOST]
        self.encoder = DjangoJSONEncoder()
        self.pattern6OrMoreDigits = re.compile(
            "\.(\d{6})\d+")  # .123456789 => .(123456)789
        self.patterFloat = re.compile("(\d+\.\d+)")  # 12.3456789

    def GetProtected(self, data) -> []:
        if AppSettings.DNS_ADGUARD.API_QUERY_LOG.startswith("http"):
            url = f"{AppSettings.DNS_ADGUARD.API_QUERY_LOG}"

            headers = {
                'Authorization': AppSettings.DNS_ADGUARD.API_AUTH,
                'User-Agent': "PostmanRuntime/7.20.1",
                'Accept': "*/*",
                'Cache-Control': "no-cache",
                'Accept-Encoding': "gzip, deflate",
                'Connection': "keep-alive",
                'cache-control': "no-cache"
            }

            response = requests.request("GET", url, headers=headers)
            re_json = response.json()
        else:
            self.log.debug(
                f'Read data from file: 💾 {AppSettings.DNS_ADGUARD.API_QUERY_LOG}'
            )
            with open(AppSettings.DNS_ADGUARD.API_QUERY_LOG) as json_file:
                re_json = json.load(json_file)

        data = re_json['data']
        oldestMinutes = self.OldestDateTimeMinutes(re_json['oldest'])
        if oldestMinutes > 20:
            self.log.debug(
                f'Oldest (minutes): {oldestMinutes:.2f} (⏱️ {re_json["oldest"]})'
            )
        else:
            self.log.error(
                f'Oldest (minutes): {oldestMinutes:.2f} (⏱️ {re_json["oldest"]})'
            )
        self.log.debug(f"Data (items) : {len(data)}")

        return data

    def PostProcess(self, i, context: dict):
        try:
            match = self.pattern_id.search(i["client"])
            if match:
                i["client_id"] = int(match.group(1))
            i["client_ip"] = i["client"]

            # DNS reverse lookup
            rev_name = reversename.from_address(i["client_ip"])
            try:
                if not self.isSimulation:
                    answer = resolver.query(rev_name,
                                            "PTR",
                                            lifetime=60,
                                            raise_on_no_answer=False)  #
                    i["client"] = answer[0].target.labels[0].decode("utf-8")
            except resolver.NXDOMAIN as err:
                self.log.warning(f"Cant resolve IP: 📶 {i['client_ip']}. {err}")
            except IndexError as err:
                self.log.warning(f"Cant resolve IP: 📶 {i['client_ip']}. {err}")

            if 'answer' in i:
                for item in i['answer']:
                    if not isinstance(item['value'],
                                      str):  # simplify complex answer SRV
                        item['value'] = str(item['value']['Target']).strip('.')

            dt = self.ParseDateTime(i["time"])
            del (i["time"])
            dt = dt.astimezone(pytz.utc)
            dtStr = self.encoder.encode(dt).strip('"')
            i["@timestamp"] = dtStr
            i["tags"] = ["camera_tools"]
            i["elapsedMs"] = round(float(i["elapsedMs"]), 2)
            i['_index'] = f"dns-{dt:%Y.%m}"
            i['_id'] = f'{i["client"]}@{dtStr}_{i["question"]["host"]}'

        except:
            print("⚠ Unexpected error:", sys.exc_info()[0])
            self.log.debug("Source: " + json.dumps(i, indent=4))
            raise

    def ParseDateTime(self, datetimeStr: str):
        datetimeStr = datetimeStr.replace("Z", "+00:00")
        # 12.354698787984 => 12.354698 # exact 6 digit after "." and 2 before
        #  2.354698787984 => 02.354698
        #  2.354          => 02.354000
        datetimeStr = self.patterFloat.sub(
            lambda x: '{:0>9.6f}'.format(float(x.group(1))), datetimeStr)
        dt = datetime.datetime.fromisoformat(datetimeStr)
        # dt = dt.replace(tzinfo=None)
        return dt

    def OldestDateTimeMinutes(self, oldestStr: str):
        dt = self.ParseDateTime(oldestStr)
        dt = dt.replace(tzinfo=None)
        now = datetime.datetime.now()
        return (now - dt).total_seconds() / 60
示例#28
0
def json_encode(data):
    encoder = DjangoJSONEncoder()
    return encoder.encode(data)
class Command(BaseCommand):
    """
    Export sample json for OCDEP.
    """
    help = 'Export sample json for OCDEP.'

    def handle(self, *args, **options):
        """
        Do it.
        """
        self.encoder = DjangoJSONEncoder(indent=4)

        # Election
        elec = Election.objects.latest('start_time')
        full_elec = self.prep_dict(elec.__dict__).copy()
        full_elec.update(self.prep_dict(elec.event_ptr.__dict__))
        full_elec['identifiers'] = [
            self.prep_dict(i.__dict__) for i in elec.identifiers.all()
        ]
        full_elec['sources'] = [
            self.prep_dict(i.__dict__) for i in elec.sources.all()
        ]

        print('Sample Election')
        print('+++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_elec))
        print('--------------------------------------------------------')

        # ContestBase
        contest = ContestBase.objects.get(
            election=elec,
            name='STATE SENATE 01',
        )
        full_contest = self.prep_dict(contest.__dict__).copy()
        full_contest['identifiers'] = [
            self.prep_dict(i.__dict__) for i in contest.identifiers.all()
        ]
        full_contest['sources'] = [
            self.prep_dict(i.__dict__) for i in contest.sources.all()
        ]

        print('Sample ContestBase')
        print('+++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_contest))
        print('--------------------------------------------------------')

        # BallotMeasureContest
        ballot_measure = BallotMeasureContest.objects.get(
            election=elec,
            name=
            'PROPOSITION 060- ADULT FILMS. CONDOMS. HEALTH REQUIREMENTS. INITIATIVE STATUTE.',
        )
        full_ballot_measure = self.prep_dict(ballot_measure.__dict__).copy()
        full_ballot_measure['identifiers'] = [
            self.prep_dict(i.__dict__)
            for i in ballot_measure.identifiers.all()
        ]
        full_ballot_measure['sources'] = [
            self.prep_dict(i.__dict__) for i in ballot_measure.sources.all()
        ]

        print('Sample BallotMeasureContest')
        print('+++++++++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_ballot_measure))
        print('--------------------------------------------------------')

        # CandidateContest
        candidate_contest = CandidateContest.objects.get(
            election=elec,
            name='STATE SENATE 01',
        )
        full_candidate_contest = self.prep_dict(
            candidate_contest.__dict__).copy()
        full_candidate_contest['identifiers'] = [
            self.prep_dict(i.__dict__)
            for i in candidate_contest.identifiers.all()
        ]
        full_candidate_contest['sources'] = [
            self.prep_dict(i.__dict__)
            for i in candidate_contest.sources.all()
        ]

        print('Sample CandidateContest')
        print('+++++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_candidate_contest))
        print('--------------------------------------------------------')

        # RetentionContest
        retention_contest = RetentionContest.objects.get(
            name='2003 RECALL QUESTION', )
        full_retention_contest = self.prep_dict(
            retention_contest.__dict__).copy()
        full_retention_contest['identifiers'] = [
            self.prep_dict(i.__dict__)
            for i in retention_contest.identifiers.all()
        ]
        full_retention_contest['sources'] = [
            self.prep_dict(i.__dict__)
            for i in retention_contest.sources.all()
        ]

        print('Sample RetentionContest')
        print('+++++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_retention_contest))
        print('--------------------------------------------------------')

        # Candidacy
        candidacy = CandidateSelection.objects.filter(
            contest__election=elec,
            contest__name='STATE SENATE 01',
        )[0].candidacies.all()[0]
        full_candidacy = self.prep_dict(candidacy.__dict__).copy()
        full_candidacy['sources'] = [
            self.prep_dict(i.__dict__) for i in candidacy.sources.all()
        ]

        print('Sample Candidacy')
        print('++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_candidacy))
        print('--------------------------------------------------------')

        # Party
        party = Party.objects.get(name='DEMOCRATIC')
        full_party = self.prep_dict(party.__dict__).copy()
        full_party['sources'] = [
            self.prep_dict(i.__dict__) for i in party.sources.all()
        ]

        print('Sample Party')
        print('++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_party))
        print('--------------------------------------------------------')

        # BallotSelectionBase
        ballot_selection = BallotSelectionBase.objects.filter(
            candidateselection__contest__election=elec,
            candidateselection__contest__name='STATE SENATE 01',
        )[0]
        full_ballot_selection = self.prep_dict(
            ballot_selection.__dict__).copy()

        print('Sample BallotSelectionBase')
        print('++++++++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_ballot_selection))
        print('--------------------------------------------------------')

        # BallotMeasureSelection
        ballot_measure_selection = BallotMeasureSelection.objects.get(
            contest__name=
            'PROPOSITION 060- ADULT FILMS. CONDOMS. HEALTH REQUIREMENTS. INITIATIVE STATUTE.',
            selection='Yes',
        )
        full_ballot_measure_selection = self.prep_dict(
            ballot_measure_selection.__dict__).copy()

        print('Sample BallotMeasureSelection')
        print('++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_ballot_measure_selection))
        print('--------------------------------------------------------')

        # CandidateSelection
        candidate_selection = CandidateSelection.objects.filter(
            contest__election=elec,
            contest__name='STATE SENATE 01',
        )[0]
        full_candidate_selection = self.prep_dict(
            candidate_selection.__dict__).copy()
        full_candidate_selection['candidacy_ids'] = [
            i.id for i in candidate_selection.candidacies.all()
        ]

        print('Sample CandidateSelection')
        print('++++++++++++++++++++++++++\n\n')
        print('.. code:: javascript\n')
        print(self.encoder.encode(full_candidate_selection))
        print('--------------------------------------------------------')

    def prep_dict(self, obj_dict):
        """
        Remove unwanted items from given object.
        """
        cp_dict = obj_dict.copy()
        for k in obj_dict:
            if re.match(r'^_.+$', k) or '_ptr_' in k:
                del cp_dict[k]

        if 'scheme' in cp_dict or 'url' in cp_dict:
            _id = [k for k in cp_dict if k.endswith('_id')][0]
            del cp_dict[_id]
            del cp_dict['id']

        return cp_dict
示例#30
0
 def handle(self, analysis_id, **options):
     analysis = models.Analysis.objects.get(id=analysis_id)
     serializer = DjangoJSONEncoder(indent=4)
     output = serializer.encode(analysis.to_dict())
     self.stdout.write('{}\n'.format(output))
示例#31
0
from functools import partial
from datetime import datetime

make_datetime = partial(datetime, tzinfo=get_current_timezone())
encoder = DjangoJSONEncoder()

timeline_config = {
    'start_real':
    make_datetime(2017, 2, 25, 21),
    'start_fake':
    make_datetime(1948, 9, 20),
    'periods': [  # (Seconds, speed)
        [576000, 1],
        [28800, 24],
        [41400, 12],
        [30600, 24],
    ]
}

timeline_config['periods'] = [{
    'duration': period,
    'speed': speed
} for period, speed in timeline_config['periods']]

timeline_data = encoder.encode(timeline_config)


def timeline_context_processor(request):

    return {'timeline_data': timeline_data}