def update(self, request, pk=None): winner_instance = payutc_models.GoodiesWinner.objects.get(pk=pk) winner_instance.picked_up = not winner_instance.picked_up winner_instance.save() serializer = payutc_serializers.GoodiesWinnerSerializer( winner_instance) return JsonResponse(serializer.data)
def create(self, request): """Méthode pour générer 20 vainqueurs des goodies parmis les non-membres du Pic""" # Récupération des ventes entre une date de début et une date de fin # START doit être au format "AAAA-MM-JJ" # END doit être au format "AAAA-MM-JJ" # ROW_COUNT représente le nombre maximum de ventes récupérées sessionid = request.session['payutc_session'] p = PayutcClient() p.login_admin() start = request.data['start_date'] + "T00:00:01.000Z" end = request.data['end_date'] + "T23:00:00.000Z" ROW_COUNT = 20000 sales = p.get_sales(start=start, end=end, row_count=ROW_COUNT)['transactions'] # Recherche des membres dans le Pic actuel pic_members = [] queryset = core_models.UserRight.objects.filter( Q(right='A') | Q(right='M')) serializer = core_serializers.UserRightSerializer(queryset, many=True) # Récupération des logins des membres du Pic pour les supprimer par la suite de la génération for i, user in enumerate(serializer.data): login = serializer.data[i]['login'] pic_members.append(login) # Récupération aléatoire d'utilisateurs goodies_winners = [] nb_sales = len(sales) while (len(goodies_winners) < 20): # Tant qqu'on a pas 20 vainqueurs on itère random_value = random.randint(1, nb_sales) user = sales[int(random_value) - 1]['rows'][0]['payments'][0]['buyer'] user_description = user["first_name"] + " " + user["last_name"] # Si l'utilisateur n'est pas un membre du Pic ou un login déjà dans la liste des vainqueurs, ajout if (user["username"] not in pic_members and user_description not in goodies_winners): goodies_winners.append(user_description) payutc_models.GoodiesWinner.objects.create( winner=user_description, picked_up=False) # Renvoi des données queryset = payutc_models.GoodiesWinner.objects.all() serializer = payutc_serializers.GoodiesWinnerSerializer(queryset, many=True) return JsonResponse({'winners': serializer.data})
def list(self, request): queryset = payutc_models.GoodiesWinner.objects.all() serializer = payutc_serializers.GoodiesWinnerSerializer(queryset, many=True) return JsonResponse({'winners': serializer.data})