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
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() } })
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')
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
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
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)
def time_under_timezone(): return timezone.localtime(timezone.now())
def prepare_delivery_status(self): if self.item_delivery > timezone.localtime(timezone.now()): return 'in progress' return 'delivered'