Exemplo n.º 1
0
 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
Exemplo n.º 2
0
    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})