Пример #1
0
def test_get_tickets(session):
    service = worker_factory(TicketService, rep=session)

    assert len(service.get_all_tickets()) == 0
    session.db.add(Ticket(title=TEST_TITLE, content=TEST_CONTENT))
    session.db.add(Ticket(title=TEST_TITLE, content=TEST_CONTENT))
    session.db.commit()
    assert len(service.get_all_tickets()) == 2
    assert service.get_all_tickets()[0]["title"] == TEST_TITLE
    assert service.get_all_tickets()[0]["content"] == TEST_CONTENT
Пример #2
0
def delete(request, id):
    lesson_user = Lesson_user.objects.get(id=id)
    lesson_user.delete()

    user_model = get_user_model()
    user = user_model.objects.get(id=lesson_user.user_id)

    lesson_info = Lesson_info.objects.get(id=lesson_user.lesson_info_id)
    lesson_info.use_num -= 1
    lesson_info.save()

    try:
        live_ticket = Ticket.objects.get(user_id=user.id,
                                         lesson_type=lesson_info.lesson_type,
                                         is_use=True)
        live_ticket.coupon += 1
        live_ticket.save()

    except Ticket.DoesNotExist:
        last_ticket = Ticket.objects.get(
            user_id=user.id,
            lesson_type=lesson_info.lesson_type).order_by('-expired_date')[:1]
        Ticket(
            lesson_type=lesson_info.lesson_type,
            ticket_type='coupon10',
            create_date=datetime.now(),
            started_date=datetime.now(),
            expired_date=last_ticket.expired_date,
            user_id=user.id,
            is_use=True,
            coupon=1,
        ).save()

    #SMS 보내기
    send_sms(lesson_info, user, 'delete')

    param_lesson_user = Lesson_user.objects.select_related(
        'lesson_info').select_related('user')
    param_lesson_user = param_lesson_user.filter(user_id=user.id)
    param_lesson_user = param_lesson_user.order_by('-lesson_info.date',
                                                   '-lesson_info.time')

    tickets = Ticket.objects.filter(user_id=user.id,
                                    is_use=True,
                                    coupon__gt=0,
                                    expired_date__gt=datetime.now(),
                                    started_date__lt=datetime.now())

    context = {'user': user, 'tickets': tickets, 'lessons': param_lesson_user}

    if request.user.is_superuser:
        admin_lesson_user = Lesson_user.objects.select_related(
            'lesson_info').select_related('user')
        admin_lesson_user = admin_lesson_user.order_by('lesson_info.date',
                                                       'lesson_info.time')

        return render(request, 'lessonList.html',
                      {'lesson_user': admin_lesson_user})
    else:
        return render(request, 'accountsDetail.html', context)
Пример #3
0
def customer_service_add_ticket(request):
    customerservice_user_id = request.session.get('customerservice_user_id',
                                                  None)
    customer_service = request.session.get('customer_service', None)
    if customerservice_user_id and customer_service:
        template = "customerservice/customerservice_add_ticket.html"
        context = dict()
        if request.POST:
            form = ticket_form.TicketForm(request.POST)
            if form.is_valid():
                f_c_d = form.cleaned_data
                device_id = request.session.get('device_id', None)
                if device_id:
                    device = Device.objects.get(pk=device_id)
                    ticket = Ticket(problem_title = f_c_d['problem_title'], problem_description = f_c_d['problem_description'],\
                                status = f_c_d['status'], device_concerned = device)
                    ticket.save()
                    return HttpResponse("Good job adding this ticket")
                else:
                    return HttpResponse(
                        "There is no device to add a problem to")
            else:
                return HttpResponse("The form is invalid")
        else:
            form = ticket_form.TicketForm()
            context['form'] = form
        return render(request, template, context)
    else:
        response_redirect_url = reverse('customer_service_login')
        return HttpResponseRedirect(response_redirect_url)
Пример #4
0
def buy(request, id):
    # print(request.path_info.split("/buy/")[0]+"/buy/",type(request.path_info),'------------')

    ids = request.GET['id_str']
    id_li = ids.split(" ")

    schedule = get_object_or_404(Schedule, id=id)
    seats = [get_object_or_404(Seat, id=int(seat_id)) for seat_id in id_li]

    if request.method == 'POST':

        with transaction.atomic():
            save_id = transaction.savepoint()

            order = Order()
            money = len(seats) * schedule.ticket_money
            order.money = money
            order.schedule = schedule
            order.save()

            for seat in seats:
                if seat.status:
                    if seat.ticket_set.filter(schedule=schedule):
                        print('=-=---===========================')
                        transaction.savepoint_rollback(save_id)
                        # raise
                        # return JsonResponse({'res':5, 'errmsg':'错误'})
                        messages.info(request, "您选的座位已被购买,请重选!")
                        return redirect(
                            reverse('ticket_seat', args=(schedule.id, )))

                seat.status = True
                seat.save()

                schedule.ticket_counts -= 1
                schedule.save()
                # order.save()

                ticket = Ticket(schedule=schedule, seat=seat, order=order)
                ticket.save()
            transaction.savepoint_commit(save_id)

            return render(request, 'ticket/ok.html')

    # order_time = (datetime.datetime.now() + datetime.timedelta(minutes=1)).replace(tzinfo=pytz.timezone('UTC'))
    # print(order_time,'-----')
    # request.session['order_time'] = datetime.datetime.now()
    # request.session.set_expiry(60)
    return render(
        request,
        'ticket/order.html',
        context={
            'schedule': schedule,
            'seats': seats,
            'ids': ids,
            # 'order_time':order_time
        })
Пример #5
0
    def create_ticket(self, title, content):
        ticket = Ticket(title=title, content=content)

        try:
            self.rep.db.add(ticket)
            self.rep.db.commit()
        except:
            self.rep.db.rollback()
            return False

        return True
Пример #6
0
def carShopSecurity(request):
    template_name = 'shop/car_shop_security.html'
    items = request.POST.getlist('item', [])
    queryset = Item.objects.filter(pk__in=items)

    epayco = EpayCo.objects.first()

    ticket = Ticket()
    ticket.total = queryset.aggregate(Sum('price'))['price__sum']
    ticket.status = Status(Status.PENDING)
    ticket.save()
    ticket.items.set(queryset)

    p_description = 'demo-app-co ePayCo'

    p_cust_id_cliente = epayco.client_id
    p_key = epayco.p_key
    p_id_invoice = '%s' % ticket.pk
    p_amount = '%s' % ticket.total
    p_currency_code = epayco.p_currency_code

    signature = '{0}^{1}^{2}^{3}^{4}'.format(p_cust_id_cliente, p_key,
                                             p_id_invoice, p_amount,
                                             p_currency_code)

    h = hashlib.md5()
    h.update(signature.encode('utf-8'))
    p_signature = h.hexdigest()

    p_tax = 0
    p_amount_base = 0
    p_test_request = 'TRUE' if epayco.test else 'FALSE'

    p_url_response = epayco.url_response
    p_url_confirmation = epayco.url_confirmation

    context = {
        'p_cust_id_cliente': p_cust_id_cliente,
        'p_key': p_key,
        'p_id_invoice': p_id_invoice,
        'p_amount': p_amount,
        'p_currency_code': p_currency_code,
        'p_signature': p_signature,
        'p_tax': p_tax,
        'p_amount_base': p_amount_base,
        'p_test_request': p_test_request,
        'p_url_response': p_url_response,
        'p_url_confirmation': p_url_confirmation,
        'p_description': p_description
    }

    return render_to_response(template_name, context)
Пример #7
0
def tick(request):
    ticket = Ticket(fname=request.POST['firstName'],
                    lname=request.POST['lastName'],
                    email=request.POST['email'],
                    age=request.POST['age'],
                    gender=request.POST['gr'],
                    country=request.POST['country'],
                    city=request.POST['city'],
                    pincode=request.POST['pincode'],
                    number='5522')

    ticket.save()
    return redirect('/ticket')
Пример #8
0
 def update(self, validated_data):
     instance = Ticket()
     instance.code = validated_data.get('code')
     instance.title = validated_data.get('title')
     instance.date = validated_data.get('date')
     instance.startTime = validated_data.get('startTime')
     instance.endTime = validated_data.get('endTime')
     instance.address = validated_data.get('address')
     instance.detail = validated_data.get('detail')
     instance.created_at = validated_data.get('created_at')
     instance.modify_at = validated_data.get('modify_at')
     instance.url_img = validated_data.get('url_img')
     instance.save()
     return instance
Пример #9
0
def newticket():
  form = NewTicketForm()
  if form.validate_on_submit():
    theticket = Ticket(
                        unique_id = str(uuid.uuid4().hex),
                        buyer_email=form.buyer_email.data, 
                        buyer_tel= form.buyer_tel.data, 
                        quanlity= form.quanlity.data, 
                        amount= form.amount.data, 
                        note= form.note.data, 
                        created_at = datetime.utcnow(),
                        updated_at = datetime.utcnow(),
                        created_by = current_user.id,
                        updated_by = current_user.id
                        )
    db.session.add(theticket)
    db.session.flush()
    ticket_id =  theticket.unique_id
    db.session.commit()

    return redirect(url_for('main.genticket',data=ticket_id),code=307)

  return render_template('ticket/new.html', form=form)
Пример #10
0
    def get_ticket(self, ticket_id):
        ticket = Ticket(id=ticket_id)

        self.rep.db.add(ticket)
        self.rep.db.commit()
Пример #11
0
 def create_tickets_for_event(self, chosen_ticket_num):
     """Create ticket instances given the """
     Ticket.objects.bulk_create([
         Ticket(event=self)
         for _ in range(chosen_ticket_num)
     ])
Пример #12
0
 def create(self, validated_data):
     instance = Ticket()
     return self.update(instance, validated_data)
Пример #13
0
 def save(self, **kwargs):
     data = self.validated_data
     event = Event.objects.filter(pk=data["event_id"]).first()
     tickets = Ticket.objects.bulk_create(
         [Ticket(event=event) for _ in range(data["num_of_tickets"])])
     self._created_ticket_ids = [str(ticket.id) for ticket in tickets]