Пример #1
0
    def to_representation(self, instance):
        representation = super(ImportFileSerializer, self).to_representation(instance)
        representation['cipher'] = instance.cipher.strftime('%d-%m-%Y %H:%M:%S') if instance.cipher is not None else False
        representation['vulnerability'] = instance.vulnerability.strftime('%d-%m-%Y %H:%M:%S') if instance.vulnerability is not None else False
        representation['created'] = date_format(timezone.localtime(instance.created), 'DATETIME_FORMAT') 
        representation['updated'] = date_format(timezone.localtime(instance.updated), 'DATETIME_FORMAT') #instance.updated.strftime('%d-%m-%Y %H:%M:%S')
        representation['timesince'] = timesince(instance.created)
        return representation
 

 
 
        
           
Пример #2
0
    def get(self, request):
        top = Solve.objects.filter(created_date__gte=timezone.localtime(
        ).replace(hour=0, minute=0, second=0)).annotate(player=Count(
            'user')).order_by('-player').select_related('user').first()
        if not top:
            return Response({'success': False})
        photo = 'https://avatar.ctflearn.com/aae0b980cce0b34fcfed8908bba52905.png'
        profile = BaseUserProfile.objects.get(user=top.user)

        if top.user.photo:
            photo = top.user.photo

        return Response({
            'success': True,
            'data': {
                'user': {
                    'username': top.user.username,
                    'fullname': profile.fullname,
                    'slug': top.user.slug,
                    'img': photo,
                },
                'total_solved': Solve.get_total_solved(_user=top.user),
                'total_score': Solve.get_score(user=top.user),
                'total_comp':
                CompetitionUser.objects.filter(user=top.user).count()
            }
        })
Пример #3
0
    def clean(self):
        cleaned_data = super(EventForm, self).clean()
        title = cleaned_data.get('title')
        description = cleaned_data.get('description')
        location = cleaned_data.get('location')
        start_time = cleaned_data.get('start_time')
        end_time = cleaned_data.get('end_time')

        # DateTime Sorting Validation
        current_date_time = timezone.localtime(
            timezone.now()).replace(microsecond=0)
        time_diff = start_time - current_date_time

        if time_diff.total_seconds() < 7200:
            raise forms.ValidationError(
                'The minimum event time is 2 hours after system time')

        elif start_time > end_time:
            raise forms.ValidationError(
                'Start time cannot be greater than End Time')

        elif start_time == end_time:
            raise forms.ValidationError(
                'Start time cannot be equal to End Time')
        elif title == "a":
            raise forms.ValidationError('Title error')
Пример #4
0
def is_in_date(date1, date2):  #日付から時間(hourのみ)をみて、重複しているかどうかを判定する。
    start1 = timezone.localtime(
        date1.start_date
    )  #localtime()にすることで、setting.pyで設定したlocaltimeに変換される。これをしないと9時間ぐらいずれる。
    start2 = timezone.localtime(date2.start_date)
    end1 = timezone.localtime(date1.end_date)
    end2 = timezone.localtime(date2.end_date)
    if not ((start1.year > end2.year or start1.month > end2.month
             or start1.day > end2.day or
             ((start1.year == end2.year and start1.month == end2.month
               and start1.day == end2.day) and (start1.hour > end2.hour))) or
            (end1.year < start2.year or end1.month < start2.month
             or end1.day < start2.day or
             ((end1.year == start2.year and end1.month == start2.month
               and end1.day == start2.day) and (end1.hour < start2.hour)))):
        return True
    return False
Пример #5
0
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        calendar_context = self.get_month_calendar()
        context.update(calendar_context)

        car_record_form = CarRecordForm()

        if self.kwargs.get('day') - 1 == 0:  #0日になるのを防ぐ用
            car_record_prev = CarRecord.objects.filter(
                start_date__startswith=datetime.date(self.kwargs.get(
                    'year'), self.kwargs.get('month'), 1))

        else:
            car_record_prev = CarRecord.objects.filter(
                start_date__startswith=datetime.date(
                    self.kwargs.get('year'), self.kwargs.get('month'),
                    self.kwargs.get('day') - 1)
            )  #タイムゾーンのずれによって一日前に戻っているものがあるから、一日前のものももってくる.下記のitem.is_date(self.kwargs.get('year'), self.kwargs.get('month'), self.kwargs.get('day'))で不要なものは排除している。

        car_record_today = CarRecord.objects.filter(
            start_date__startswith=datetime.date(self.kwargs.get(
                'year'), self.kwargs.get('month'), self.kwargs.get('day')))
        car_record = [item for item in car_record_prev]  #QuerySetをlist化
        car_record_prev = [item for item in car_record_today]
        car_record.extend(car_record_prev)  #listを結合

        send_record = [
        ]  # id、重複数、これ以降に重複したものをappend(末尾に要素を追加)していく。一個目の要素が[0]になっているので注意

        while len(car_record) != 0:
            if car_record[0].is_date(
                    self.kwargs.get('year'), self.kwargs.get('month'),
                    self.kwargs.get('day')
            ):  # is_dateはmodels.pyで定義。指定された日付のデータかをチェック。常にデータが先頭にいくので、インデックスは0でよい(ss[0])
                l = duplicate_cal(car_record, car_record[0])
                record_list = []
                for item in range(len(l)):
                    l[item].start_date = timezone.localtime(l[item].start_date)
                    if not (l[item].start_date.year == self.kwargs.get('year')
                            and l[item].start_date.month
                            == self.kwargs.get('month') and
                            l[item].start_date.day == self.kwargs.get('day')):
                        l[item].start_date = datetime.datetime(
                            self.kwargs.get('year'), self.kwargs.get('month'),
                            self.kwargs.get('day'), 0, 0, 0
                        )  #開始時刻が前日にある場合は、当日の0:00に調整。スケジュール表示用。範囲外には表示できないため。
                    l[item].end_date = timezone.localtime(l[item].end_date)
                    if not (l[item].end_date.year == self.kwargs.get('year')
                            and l[item].end_date.month
                            == self.kwargs.get('month') and
                            l[item].end_date.day == self.kwargs.get('day')):
                        l[item].end_date = datetime.datetime(
                            self.kwargs.get('year'), self.kwargs.get('month'),
                            self.kwargs.get('day'), 23, 59, 59
                        )  #修了時刻が前日にある場合は、当日の0:00に調整。スケジュール表示用。範囲外には表示できないため。
                    now = datetime.datetime.now()
                    record_list.append({
                        "pos_x":
                        10 + (90 / (len(l) + 1) *
                              (item + 1)),  #横座標。cssのleft x%のxにあたる.
                        "pos_y":
                        65 - 20 +
                        33 * l[item].start_date.hour,  #縦座標。cssのtop ypxのyにあたる
                        "image_url":
                        "/static/mycalendar/images/arrow_bottom_" +
                        str(l[item].end_date.hour - l[item].start_date.hour) +
                        ".png",  #画像のurl。何時間なのかを計算し、どの画像を利用するかを決める。追記:車両名のサイズぶん、上に移動。(-10)
                        "len":
                        32 * (l[item].end_date.hour -
                              l[item].start_date.hour),  #上記の長さから、矢印の長さを計算
                        "record_item":
                        l[item],  #CarRecordモデルのインスタンス。ここに記録データが入っている。
                        "is_past":
                        is_past(l[item]),  #過去の情報かどうかを判定
                    })  #templateで扱いやすいように、map型にしてある。
                send_record.append({"record_list": record_list
                                    })  #templateで扱いやすいように、map型にしてある。
            else:
                car_record.remove(car_record[0])

        num_list = [item for item in range(24)]  #テンプレートで時刻分ループする用

        page_context = {
            "num_list": num_list,
            "page_name": "car_record",
            "superuser_text": get_authority_status(self.request),
            "send_record": send_record,
            "car_record_form": car_record_form,
        }
        context.update(page_context)

        return context
Пример #6
0
 def get(self, request):
     query = Hashtag.objects.filter(time__gte = timezone.localtime(timezone.now()) - timezone.timedelta(days = 5)).\
             values('topic').annotate(Count('topic')).order_by('-topic__count')
     return JsonResponse(list(query), safe=False)
Пример #7
0
 def time_under_timezone():
     return timezone.localtime(timezone.now())
Пример #8
0
 def prepare_delivery_status(self):
     if self.item_delivery > timezone.localtime(timezone.now()):
         return 'in progress'
     return 'delivered'