Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.70 KB | None | 0 0
  1. class MotorniczyTopNOkres(APIView):
  2.     model_name = "Praca"
  3.     queryset = Praca.objects.all()
  4.     serializer_class = PracaSerializer
  5.  
  6.     def get(self, request,datetime_year, quarter):
  7.         try:
  8.            
  9.             if quarter==1:
  10.                 start = date(datetime_year, quarter, 1)
  11.                 end = date(datetime_year, quarter+2, 31)
  12.             elif quarter==2:
  13.                 start = date(datetime_year, quarter*2, 1)
  14.                 end = date(datetime_year, quarter*2+2, 30)
  15.             elif quarter==3:
  16.                 start = date(datetime_year, quarter*2+1, 1)
  17.                 end = date(datetime_year, quarter*2+3, 30)
  18.             else:
  19.                 start = date(datetime_year, quarter*2+2, 1)
  20.                 end = date(datetime_year, quarter*2+4, 31)
  21.            
  22.             #.values('id_motorniczego').annotate(Sum('wynagrodzenie'))
  23.             a = Praca.objects.all().filter(poczatekpracy__range=[start, end]).aggregate(Sum('wynagrodzenie'))
  24.             print(a)
  25.             x = Praca.objects.all().filter(poczatekpracy__range=[start, end]).values('id_motorniczego').annotate(Sum('wynagrodzenie'))
  26.    
  27.             all_ = []
  28.             for p in x:
  29.                 motorniczy = Motorniczy.objects.all().filter(id_motorniczego=p['id_motorniczego'])
  30.                 motorniczy.sum = p['wynagrodzenie__sum']
  31.                 y = MotorniczySerializer(motorniczy[0])
  32.                 new = dict(y.data)
  33.                 new['sum'] = p['wynagrodzenie__sum']
  34.                 new['okres_od'] = start
  35.                 new['okres_do'] = end
  36.                 new['caly_zarobek']= a['wynagrodzenie__sum']
  37.                 all_.append(new)
  38.  
  39.             db['tramwaje'].insert_one(
  40.                 {
  41.                     "time": datetime.datetime.utcnow(),
  42.                     "typerequest":"GET",
  43.                     "description":f"Wyświetlenie najlepiej zarabiajacych motorniczych w {quarter} kwartale"
  44.                 }
  45.             )
  46.  
  47.             return Response(all_)
  48.         except Exception as e:
  49.             return Response({'message': f'{e}'})
  50.  
  51. class TramwajTopN(APIView):
  52.     model_name = "Praca"
  53.     queryset = Praca.objects.all()
  54.     serializer_class = PracaSerializer
  55.  
  56.     def get(self, request, n):
  57.         try:
  58.             x = Praca.objects.values('id_tramwaju').annotate(Sum(''))[:n]
  59.             all_ = []
  60.             for p in x:
  61.                 motorniczy = Motorniczy.objects.all().filter(id_motorniczego=p['id_motorniczego'])
  62.  
  63.                 motorniczy.sum = p['wynagrodzenie__sum']
  64.                 y = MotorniczySerializer(motorniczy[0])
  65.                 new = dict(y.data)
  66.                 new['sum'] = p['wynagrodzenie__sum']
  67.                 all_.append(new)
  68.             db['tramwaje'].insert_one(
  69.                 {
  70.                     "time": datetime.datetime.utcnow(),
  71.                     "typerequest":"GET",
  72.                     "description":f"Wyświetlenie {n} najbardziej eksploatowanych tramwajow"
  73.                 }
  74.             )
  75.             return Response(all_)
  76.         except Exception as e:
  77.             return Response({'message': f'{e}'})
  78.  
  79. class TramwajView(APIView):
  80.     model_name = "Tramwaj"
  81.     queryset = Tramwaj.objects.all()
  82.     serializer_class = TramwajSerializer
  83.  
  84.     def get(self, request, pk):
  85.         global versions
  86.         try:
  87.             x = Tramwaj.objects.all().filter(id_tramwaju=pk)
  88.             if self.model_name not in versions:
  89.                 versions[self.model_name] = {}
  90.             versions[self.model_name][pk] = x[0].version
  91.             y = TramwajSerializer(x[0])
  92.             db['tramwaje'].insert_one(
  93.                 {
  94.                     "time": datetime.datetime.utcnow(),
  95.                     "typerequest":"GET",
  96.                     "description":f"Wyświetlenie tramwaju o id {pk}"
  97.                 }
  98.             )
  99.             return Response(y.data)
  100.         except Exception as e:
  101.             return Response({'message': f'{e}'})
  102.  
  103.     def put(self, request, pk):
  104.         global versions
  105.         updated = Tramwaj.objects.all().filter(id_tramwaju=pk)[0]
  106.  
  107.         updated.version = versions[self.model_name][pk] + 1
  108.         try:
  109.             serializer = TramwajSerializer(updated, data=request.data)
  110.             if serializer.is_valid():
  111.                 serializer.save()
  112.                 return Response(serializer.data)
  113.             db['tramwaje'].insert_one(
  114.                 {
  115.                     "time": datetime.datetime.utcnow(),
  116.                     "typerequest":"PUT",
  117.                     "description":f"Edycja tramwaju o id {pk}"
  118.                 }
  119.             )
  120.             return Response(serializer.errors)
  121.         except Exception as e:
  122.             return Response({'message': f'{e}'})
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement