def update_orders(self): from core.services.payutc import PayutcClient p = PayutcClient() p.login_admin() rep = p.get_sales(product_id__in=[self.article.id_payutc]) for line in rep['transactions']: if line['status'] == 'V': orderline, created = OrderLine.objects.get_or_create(id_transaction_payutc=line['id'], defaults={"menu": self}) if created: for payments in line['rows']: orderline.id_rows_payutc = payments['id'] for menu in payments['payments']: orderline.id_buyer = menu['buyer']['id'] orderline.quantity = menu['quantity'] orderline.buyer_first_name = menu['buyer']['first_name'] orderline.buyer_name = menu['buyer']['last_name'] orderline.save() for line1 in line['rows']: if line1['cancels']: o = OrderLine.objects.filter(id_rows_payutc=line1['cancels']).first() if o: o.is_canceled = True o.save() buyers_list = list() orders = OrderLine.objects.filter(menu_id=self.id, quantity__gt=0, is_canceled=False).order_by('served', 'is_staff', 'id_transaction_payutc') for order in orders: buyers_list.append( {'last_name': order.buyer_name, 'first_name': order.buyer_first_name, 'quantity': order.quantity, 'served': order.served, 'is_staff': order.is_staff, 'id_transaction': order.id_transaction_payutc}) return buyers_list
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})