Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MotorniczyTopNOkres(APIView):
- model_name = "Praca"
- queryset = Praca.objects.all()
- serializer_class = PracaSerializer
- def get(self, request,datetime_year, quarter):
- try:
- if quarter==1:
- start = date(datetime_year, quarter, 1)
- end = date(datetime_year, quarter+2, 31)
- elif quarter==2:
- start = date(datetime_year, quarter*2, 1)
- end = date(datetime_year, quarter*2+2, 30)
- elif quarter==3:
- start = date(datetime_year, quarter*2+1, 1)
- end = date(datetime_year, quarter*2+3, 30)
- else:
- start = date(datetime_year, quarter*2+2, 1)
- end = date(datetime_year, quarter*2+4, 31)
- #.values('id_motorniczego').annotate(Sum('wynagrodzenie'))
- a = Praca.objects.all().filter(poczatekpracy__range=[start, end]).aggregate(Sum('wynagrodzenie'))
- print(a)
- x = Praca.objects.all().filter(poczatekpracy__range=[start, end]).values('id_motorniczego').annotate(Sum('wynagrodzenie'))
- all_ = []
- for p in x:
- motorniczy = Motorniczy.objects.all().filter(id_motorniczego=p['id_motorniczego'])
- motorniczy.sum = p['wynagrodzenie__sum']
- y = MotorniczySerializer(motorniczy[0])
- new = dict(y.data)
- new['sum'] = p['wynagrodzenie__sum']
- new['okres_od'] = start
- new['okres_do'] = end
- new['caly_zarobek']= a['wynagrodzenie__sum']
- all_.append(new)
- db['tramwaje'].insert_one(
- {
- "time": datetime.datetime.utcnow(),
- "typerequest":"GET",
- "description":f"Wyświetlenie najlepiej zarabiajacych motorniczych w {quarter} kwartale"
- }
- )
- return Response(all_)
- except Exception as e:
- return Response({'message': f'{e}'})
- class TramwajTopN(APIView):
- model_name = "Praca"
- queryset = Praca.objects.all()
- serializer_class = PracaSerializer
- def get(self, request, n):
- try:
- x = Praca.objects.values('id_tramwaju').annotate(Sum(''))[:n]
- all_ = []
- for p in x:
- motorniczy = Motorniczy.objects.all().filter(id_motorniczego=p['id_motorniczego'])
- motorniczy.sum = p['wynagrodzenie__sum']
- y = MotorniczySerializer(motorniczy[0])
- new = dict(y.data)
- new['sum'] = p['wynagrodzenie__sum']
- all_.append(new)
- db['tramwaje'].insert_one(
- {
- "time": datetime.datetime.utcnow(),
- "typerequest":"GET",
- "description":f"Wyświetlenie {n} najbardziej eksploatowanych tramwajow"
- }
- )
- return Response(all_)
- except Exception as e:
- return Response({'message': f'{e}'})
- class TramwajView(APIView):
- model_name = "Tramwaj"
- queryset = Tramwaj.objects.all()
- serializer_class = TramwajSerializer
- def get(self, request, pk):
- global versions
- try:
- x = Tramwaj.objects.all().filter(id_tramwaju=pk)
- if self.model_name not in versions:
- versions[self.model_name] = {}
- versions[self.model_name][pk] = x[0].version
- y = TramwajSerializer(x[0])
- db['tramwaje'].insert_one(
- {
- "time": datetime.datetime.utcnow(),
- "typerequest":"GET",
- "description":f"Wyświetlenie tramwaju o id {pk}"
- }
- )
- return Response(y.data)
- except Exception as e:
- return Response({'message': f'{e}'})
- def put(self, request, pk):
- global versions
- updated = Tramwaj.objects.all().filter(id_tramwaju=pk)[0]
- updated.version = versions[self.model_name][pk] + 1
- try:
- serializer = TramwajSerializer(updated, data=request.data)
- if serializer.is_valid():
- serializer.save()
- return Response(serializer.data)
- db['tramwaje'].insert_one(
- {
- "time": datetime.datetime.utcnow(),
- "typerequest":"PUT",
- "description":f"Edycja tramwaju o id {pk}"
- }
- )
- return Response(serializer.errors)
- except Exception as e:
- return Response({'message': f'{e}'})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement