Exemple #1
0
def api_post_event():
    if not session.get('user'):
        return jsonify(
            {'outcome':
             'You need to be logged in to perform this action.'}), 401

    formData = dict(request.form)
    sessionData = session.get('user')
    filePath = ''

    if dict(request.files):
        if dict(request.files)['file']:
            image = dict(request.files)['file'][0]
            imageName = formData['fileName'][0]
            filePath = os.path.join(UPLOAD_FOLDER, imageName)
            image.save(filePath)

    if formData:
        title = formData['title'][0]
        description = formData['description'][0]
        eventTime = formData['eventTime'][0]
        createdAt = formData['createdAt'][0]
        lat = formData['lat'][0]
        lng = formData['lng'][0]

        if not filePath:
            filePath = os.path.join(UPLOAD_FOLDER, DEFAULT_EVENT_IMAGE)
        if formData['savedTickets'][0]:
            tickets = json.loads(formData['savedTickets'][0])
            for t in tickets:
                ticket = Ticket(type=t['type'],
                                price=t['price'],
                                currency=t['currency'])

    event = Event(title=title,
                  created=createdAt,
                  time=eventTime,
                  image=filePath,
                  uid=sessionData['id'],
                  description=description,
                  lat=lat,
                  lng=lng)
    event.add()
    eid = event.returnId()

    if formData['savedTickets'][0]:
        print formData['savedTickets'][0]
        tickets = json.loads(formData['savedTickets'][0])
        print tickets
        for t in tickets:
            print t
            ticket = Ticket(eid=eid,
                            type=t['type'],
                            price=t['price'],
                            currency=t['currency'])
            ticket.save()
    return jsonify({'outcome': 'Created'}), 201
Exemple #2
0
    def setUp(self):
        # set up the test DB
        self.db = tested_db
        self.db.create_all()
        self.db.session.add(Ticket(ticket_id=1, movie_name="A star is born", ticket_number=50))
        self.db.session.add(Ticket(ticket_id=2, movie_name="Escape Room", ticket_number=30))
        self.db.session.commit()

        self.app = tested_app.test_client()
Exemple #3
0
def loadtickets():
    ticket = Ticket()
    ticket.id = "1"
    ticket.evento_id = 1
    ticket.categoria_id = 1
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "2"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "3"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "4"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "5"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "6"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "7"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "8"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "9"
    db.session.add(ticket)
    db.session.commit()

    ticket = Ticket()
    ticket.id = "10"
    db.session.add(ticket)
    db.session.commit()

    print("Tickets creados")
Exemple #4
0
 def post(self):
   session = get_current_session()
   email = helper.sanitizeHtml(self.request.get('email'))
   if len(email) > 1:      
     users = User.all().filter("email =", email).fetch(1)
     if len(users) == 1:
       if session.is_active():
         session.terminate()
       user = users[0]
       Ticket.deactivate_others(user)
       ticket = Ticket(user=user,code=Ticket.create_code(user.password + user.nickname + str(random.random())))
       ticket.put()
       code = ticket.code
       host = self.request.url.replace(self.request.path,'',1)
      
       mail.send_mail(sender="NoticiasHacker <*****@*****.**>",
         to=user.nickname + "<"+user.email+">",
         subject="Liga para restablecer password",
         html=template.render('templates/mail/forgotten-password-email.html', locals()),
         body=template.render('templates/mail/forgotten-password-email-plain.html', locals()))
     
       session['forgotten_password_ok'] = "Se ha enviado un correo electrónico a tu bandeja de entrada con las instrucciones"
     else:
       session['forgotten_password_error'] = "El correo electronico <strong>"+ email +"</strong> no existe en nuestra base de datos"
   else:
     session['forgotten_password_error'] = "Debes especificar tu correo electrónico"
    
   self.redirect('/olvide-el-password')
Exemple #5
0
def new_item(request):
    ret = check_auth(request)
    if ret:
        return ret

    if request.method == 'POST':
        print request.POST
        if request.GET["new"] == "ticket":
            form = TicketForm(request.POST)
            print "valid", form.errors
            if form.is_valid():
                a = Ticket()
                a.title = form.cleaned_data["title"]
                a.text = form.cleaned_data["text"]
                a.priority = form.cleaned_data["priority"]
                a.author = request.user
                a.save()
                send_mail_ticket(a.group, "new_ticket")
                return show_item(request, a.id)

    form = {"ticket": TicketForm(),
            "comment": CommentForm()}

    return render_to_response('ticket_new.html',
                              {'forms': form, },
                              context_instance=RequestContext(request))
Exemple #6
0
 def test_new_ticket(self):
     ticket = Ticket()
     ticket.status = 'new'
     ticket.sender = User.objects.get(username='******')
     ticket.queue = Queue.objects.get(name=QUEUE_SUPPORT_REQUESTS)
     ticket.save()
     self.assertEqual(ticket.assignee, None)
Exemple #7
0
def new_contact_ticket(request):
    ticket_created = False
    if request.POST:
        form = __get_contact_form(request)
        if form.is_valid():
            ticket = Ticket()
            ticket.title = form.cleaned_data['title']
            ticket.source = TICKET_SOURCE_CONTACT_FORM
            ticket.status = TICKET_STATUS_NEW
            ticket.queue = Queue.objects.get(name=QUEUE_SUPPORT_REQUESTS)
            tc = TicketComment()
            if request.user.is_authenticated():
                ticket.sender = request.user
                tc.sender = request.user
            else:
                ticket.sender_email = form.cleaned_data['email']
            tc.text = form.cleaned_data['message']
            ticket.save()
            tc.ticket = ticket
            tc.save()
            ticket_created = True
            # TODO: send email
    else:
        form = __get_contact_form(request, False)
    return render_to_response('tickets/contact.html',
                              locals(),
                              context_instance=RequestContext(request))
Exemple #8
0
    def continue_scenario(self, text, state):
        steps = settings.TICKET_SCENARIOS[state.scenario_name]['steps']
        step = steps[state.step_name]
        handler = getattr(handlers, step['handler'])
        if handler(text=text, context=state.context, state=state):
            if type(handler(text=text, context=state.context,
                            state=state)) is str:
                next_step = steps[handler(text=text,
                                          context=state.context,
                                          state=state)]
            else:
                next_step = steps[step['next_step']]

            text_to_send = next_step['text'].format(**state.context)
            if next_step['next_step']:
                state.step_name = step['next_step']
            else:
                if next_step == steps['step8']:
                    log.info(
                        'Оформлен билет {point_1}-{point_2} на рейс {flight_number}'
                        ' {out_date}.'.format(**state.context))
                    Ticket(city_out=state.context['point_1'],
                           city_in=state.context['point_2'],
                           flight_date=state.context['out_date'],
                           flight_number=state.context['flight_number'])
                else:
                    log.info('Билет не оформлен.'.format(**state.context))
                # finish scenario
                state.delete()
        else:
            text_to_send = step['failure_text'].format(**state.context)

        return text_to_send
Exemple #9
0
def newrequest():
    """Create and show only request fields."""
    if request.method == 'GET':
        return render_template('new_request.html', title="New Ticket")
    if request.method == 'POST':
        item = request.form['item']
        deliverer = ''

        requester = request.form['requester']
        dropoff_address = request.form['dropoff_address']
        dropoff_time = request.form['dropoff_time']
        dropoff_date = request.form['dropoff_date']

        gyfter = ''
        pickup_address = ''
        pickup_time = ''
        pickup_date = ''

        ticket = Ticket(item, deliverer, gyfter, pickup_address,
                        pickup_time, pickup_date, requester,
                        dropoff_address, dropoff_time, dropoff_date)

        db.session.add(ticket)
        db.session.commit()
        return render_template('show_request.html', ticket=ticket)
Exemple #10
0
def confirm():
    show_id = request.args.get('id')
    koncert = Concert.query.get(show_id)
    l_plyta = int(
        request.form["l_plyta"])  #ustawicwartosczero jesli nic nie przechodzi
    l_trybuny = int(request.form["l_trybuny"])
    l_gc = int(request.form["l_gc"])
    l_vip = int(request.form["l_vip"])
    suma = l_plyta + l_trybuny + l_gc + l_vip
    kwota =(l_plyta * koncert.price_plyta_ticket) + (l_trybuny * koncert.price_trybuny_ticket) \
           + (l_gc * koncert.price_gc_ticket) + (l_vip * koncert.price_vip_ticket)
    new_ticket = Ticket()
    new_ticket.user_login = current_user.username
    new_ticket.nr_plyta_ticket = l_plyta
    new_ticket.price_plyta_ticket = l_plyta * koncert.price_plyta_ticket
    new_ticket.nr_trybuny_ticket = l_trybuny
    new_ticket.price_trybuny_ticket = l_trybuny * koncert.price_trybuny_ticket
    new_ticket.nr_gc_ticket = l_gc
    new_ticket.price_gc_ticket = l_gc * koncert.price_gc_ticket
    new_ticket.nr_vip_ticket = l_vip
    new_ticket.price_vip_ticket = l_vip * koncert.price_vip_ticket
    new_ticket.show_id = show_id
    new_ticket.name = koncert.name
    db.session.add(new_ticket)
    db.session.commit()
    return render_template("confirm.html",
                           suma=suma,
                           l_plyta=l_plyta,
                           koncert=koncert,
                           kwota=kwota,
                           show_id=show_id)
Exemple #11
0
def create_ticket():
    ticket_details = request.get_json()['ticket']
    date_due = parser.parse(ticket_details['dateDue'])
    user = User.query.filter_by(address=ticket_details['userAddress'])
    ticket = Ticket(user[0].address, None,
                    'requested', ticket_details['price'], date_due,
                    datetime.now(), ticket_details['text'],
                    ticket_details['subject'])
    fox_ticket = add_ticket(ticket, user[0])
    ticket.happy_fox_id = fox_ticket['id']
    user.update(dict(happy_fox_id=fox_ticket['user']['id']))
    ticket_data = {}
    if fox_ticket:
        db.session.add(ticket)
        db.session.commit()

    # db.session.add(ticket)
    # db.session.commit()
    ticket_data = {
        'id': ticket.id,
        'subject': ticket.subject,
        'text': ticket.text,
        'price': ticket.price,
        'requestedPrice': ticket.requested_price,
        'status': ticket.status,
        'dateDue': ticket.date_due,
        'dateCreated': ticket.date_created,
        'userAddress': ticket.user_address
    }
    response = jsonify({'ticket': ticket_data})
    response.headers.add('Access-Control-Allow-Origin', '*')
    return response
    def test_add_ticket_note(self):
        # Add users and a ticket so that we can add some notes.
        self.add_users_to_db()
        ticket = Ticket(id=9,
                        status=1,
                        createdAt=datetime.date.today(),
                        updatedAt=datetime.date.today())
        self.session.add(ticket)
        self.session.commit()

        # Create the note.
        result = self.app.post('/portal/ticket/note/9',
                               data=dict(poster="oompa",
                                         message="my message to the world",
                                         status=1,
                                         type=2),
                               follow_redirects=True)
        assert result.status == "200 OK"

        # Verify the note is actually in the db.
        note = self.session.query(Note).filter_by(
            ticket_id=9, message="my message to the world", status=1,
            type=2).first()
        assert note is not None

        ticket = self.session.query(Ticket).first()
Exemple #13
0
def create_ticket():
    """ Function creates new ticket 
        takes the ticket values 
        checks if ticket with 'name' parameter already exists in database 
        and flashes the message back to frontend if True 
        saves new ticket in database 
        redirects to url served by 'project_show_update_delete' function 
    """
    name = request.form.get('name')
    description = request.form.get('description')
    author_id = request.form.get('author_id')
    project_id = request.form.get('project_id')
    ticket_priority = request.form.get('ticket_priority')
    ticket_status = request.form.get('ticket_status')
    time = request.form.get('due_date')
    due_date = datetime.strptime(time, '%Y-%m-%d')

    new_ticket = Ticket(name=name,
                        description=description,
                        author_id=author_id,
                        project_id=project_id,
                        ticket_priority=ticket_priority,
                        ticket_status=ticket_status,
                        due_date=due_date)

    db.session.add(new_ticket)
    db.session.commit()
    return redirect(url_for('project_show_update_delete', id=project_id))
    def test_delete_ticket_note(self):
        # Create our two users and make them owners of the same ticket.
        self.add_users_to_db()
        ticket = Ticket(id=3,
                        status=0,
                        createdAt=datetime.date.today(),
                        updatedAt=datetime.date.today())
        self.session.add(ticket)
        users = self.session.query(User).all()
        for user in users:
            owner = Ownership(owner_id=user.id,
                              ticket_id=3,
                              createdAt=datetime.date.today(),
                              updatedAt=datetime.date.today())
            self.session.add(owner)
        note = Note(id=6,
                    poster_id=users[0].id,
                    ticket_id=3,
                    message="My message to the world",
                    status=2,
                    type=3,
                    createdAt=datetime.date.today(),
                    updatedAt=datetime.date.today())
        self.session.add(note)
        self.session.commit()

        # Now delete the note and verify it is gone.
        response = self.app.delete('/portal/ticket/note/6')
        response.status == "200 OK"
        result = self.session.query(Note).first()
        assert result is None
Exemple #15
0
def api_load_ticket_data():

    fd = dict(request.form)
    if not fd:
        return jsonify({'outcome': 'Missing parameters!'}), 422

    ticket = Ticket(tid=fd['id'])
    return ticket.getTicketData(), 200
Exemple #16
0
 def test_new_ticket(self):
     """New tickets shouldn't have an assignee"""
     ticket = Ticket()
     ticket.status = 'new'
     ticket.sender = User.objects.get(username='******')
     ticket.queue = Queue.objects.get(name=QUEUE_SOUND_MODERATION)
     ticket.save()
     self.assertEqual(ticket.assignee, None)
Exemple #17
0
def newticket(item='', deliverer='',
              gyfter='', pickup_address='', pickup_time='', pickup_date='',
              requester='', dropoff_address='', dropoff_time='',
              dropoff_date=''):
    """Render ticket form."""
    if request.method == 'GET':
        return render_template('new_ticket.html', title="New Ticket")
    if request.method == 'POST':
        # alternative store form fields in varibles & create new ticket object
        item = request.form['item']
        deliverer = request.form['deliverer']

        gyfter = request.form['gyfter']
        pickup_address = request.form['pickup_address']
        pickup_time = request.form['pickup_time']
        pickup_date = request.form['pickup_date']

        requester = request.form['requester']
        dropoff_address = request.form['dropoff_address']
        dropoff_time = request.form['dropoff_time']
        dropoff_date = request.form['dropoff_date']

        ticket = Ticket(item, deliverer, gyfter, pickup_address,
                        pickup_time, pickup_date, requester,
                        dropoff_address, dropoff_time, dropoff_date)

        db.session.add(ticket)
        db.session.commit()

        # map2 show
        pickup_ll = geocoder.google(pickup_address)
        dropoff_ll = geocoder.google(dropoff_address)

        pickup_geoj = pickup_ll.geojson
        dropoff_geoj = dropoff_ll.geojson

        # complete address
        pickup_address = pickup_geoj['properties']['address']
        dropoff_address = dropoff_geoj['properties']['address']

        p_lat, p_lng = pickup_ll.lat, pickup_ll.lng
        d_lat, d_lng = dropoff_ll.lat, dropoff_ll.lng

        coords_1 = (p_lat, p_lng)
        coords_2 = (d_lat, d_lng)

        dist = geopy.distance.vincenty(coords_1, coords_2).mi
        dist = round(dist, 2)
        dist = str(dist) + ' mi'

        return render_template('map2.html',
                               ticket=ticket,
                               p_lat=p_lat, p_lng=p_lng,
                               d_lat=d_lat, d_lng=d_lng,
                               pickup_geoj=pickup_geoj,
                               dropoff_geoj=dropoff_geoj, dist=dist)
Exemple #18
0
def api_load_tickets():

    fd = dict(request.form)
    if not fd:
        return jsonify({'outcome': 'Missing parameters!'}), 422

    ticket = Ticket(eid=fd['event'])
    tickets = ticket.get()

    return tickets, 200
    def test_get_ticket_notes_where_note_does_not_exist(self):
        ticket = Ticket(id=2,
                        status=2,
                        createdAt=datetime.date.today(),
                        updatedAt=datetime.date.today())
        self.session.add(ticket)
        self.session.commit()

        result = self.app.get('/portal/ticket/note/2')
        assert result.status == "204 NO CONTENT"
Exemple #20
0
def ticket_buy(tariff_id):
    if request.method == 'POST' and int(tariff_id) in [20, 29]:
        # HOTFIX - umoznuje to volat i GETem
        # if int(tariff_id) in [20, 29]:
        phone = request.form['phone']

        ticket = Ticket(tariff=tariff_id, phone=phone)

        d = {}
        d["settled_currency"] = "CZK"
        d["return_url"] = "http://%s/notification" % request.host
        d["notify_url"] = "http://%s/notification" % request.host
        d["notify_email"] = "%s" % settings.bitcoinPayOwnerEmail
        d["price"] = tariff_id
        d["currency"] = "CZK"

        ref = {}
        ref["phone_number"] = phone
        ref["tariff"] = tariff_id
        d["reference"] = ref

        headers = {
            'Content-Type': 'application/json',
            'Authorization': 'Token %s' % settings.bitcoinPayAuthToken
        }
        request_payment = Request(
            'https://www.bitcoinpay.com/api/v1/payment/btc',
            data=json.dumps(d),
            headers=headers)

        response_body = urlopen(request_payment).read()

        data = json.loads(response_body)["data"]

        ticket.payment_id = data["payment_id"]
        ticket.status = data["status"]
        ticket.settled_amount = data["settled_amount"]
        ticket.settled_currency = data["settled_currency"]
        ticket.payment_response = json.dumps(data)

        db_session.add(ticket)
        db_session.commit()

        # ulozime payment id v session
        session["last_payment_id"] = ticket.payment_id
        # saving user's phone to be able to retrieve tickets overview
        session[PHONE_SESSION_KEY] = int(phone)

        return redirect(data["payment_url"], code=302)

    phone = session.get(PHONE_SESSION_KEY)
    tariff = get_tariffs(tariff_id)

    # return redirect(url_for('index'))
    return render_template('ticket_buy.html', tariff=tariff, phone=phone)
    def increase_growth_backlog(column: Column):
        while True:
            from app import app
            with app.app_context():
                ticket_complexity = np.random.choice(Complexity.query.all(), 1, p=[0.1, 0.3, 0.4, 0.15, 0.05])[0]
                ticket_type = np.random.choice(TicketType.query.all(), 1, p=[0.47, 0.43, 0.05, 0.05])[0]
                ticket_priority = np.random.choice(Priority.query.all(), 1, p=[0.15, 0.41, 0.38, 0.06])[0]
                status = Status.query.filter_by(name=column.name).first()
                ticket_components = np.random.choice(Component.query.all(), np.random.randint(1, 3), p=[0.5, 0.25, 0.25])

                Ticket(complexity=ticket_complexity.id,
                       type=ticket_type.id,
                       priority=ticket_priority.id,
                       status=status.id,
                       column_id=column.id,
                       components=[component for component in ticket_components])

            yield g.env.timeout(1)
        return

    # def development(self):
    #     while True:
    #         """START TO WORK"""
    #         yield g.env.timeout(0.25)
    #         """START TO WORK: SEARCH TICKET"""
    #         ticket_selected = self._search_ticket()
    #     return

    # def _search_ticket(self):
    #     for ticket in
    #     for ticket in self.board.board.tickets['SELECTED FOR DEVELOPMENT']:
    #         for ticket_component in ticket.components:
    #             if ticket_component in self.components:
    #                 if ticket.type == g.subtask_types:
    #
    #                     """TAKE COMPLETION BLOCKER"""
    #                     self.start_to_work(ticket, 'IN DEV')
    #                     return True
    #                 elif ticket.type in g.subtask_types:
    #
    #                     """TAKE SUB-TASK"""
    #                     self.start_to_work(ticket, 'IN DEV')
    #                     return True
    #                 elif ticket.type == 'Feature':
    #
    #                     """TAKE FEATURE"""
    #                     self.start_to_work(ticket, 'IN ANALYSIS')
    #                     ticket.move_on('IN ANALYSIS', self.board.board)
    #                     return True
    #                 else:
    #
    #                     """TAKE TASK, DECHNICAL DEBT AND OTHER PARENT CARD"""
    #                     self.start_to_work(ticket, 'IN DEV')
    #                     return True
    #     return False
Exemple #22
0
    def run(self):
        faker = Faker()
        for i in range(1500):
            user = User('*****@*****.**' % i, faker.name())
            db.session.add(user)
            db.session.commit()

        for user in User.query.all():
            try:
                # Choose a random number and type of tickets for this user
                full_count = random.choice([1] * 3 + [2, 3])
                full_type = TicketType.query.filter_by(
                    fixed_id=random.choice([0, 1, 2, 3] * 30 + [9, 10] * 3 +
                                           [4])).one()
                full_tickets = [
                    Ticket(user.id, type=full_type) for _ in range(full_count)
                ]

                kids_count = random.choice([0] * 10 + [1, 2])
                kids_type = TicketType.query.filter_by(
                    fixed_id=random.choice([5, 11, 6])).one()
                kids_tickets = [
                    Ticket(user.id, type=kids_type) for _ in range(kids_count)
                ]

                vehicle_count = random.choice([0] * 2 + [1])
                vehicle_type = TicketType.query.filter_by(
                    fixed_id=random.choice([7] * 5 + [8])).one()
                vehicle_tickets = [
                    Ticket(user.id, type=vehicle_type)
                    for _ in range(vehicle_count)
                ]

                for t in full_tickets + kids_tickets + vehicle_tickets:
                    t.paid = random.choice([True] * 4 + [False])
                    t.refunded = random.choice([False] * 20 + [True])

                db.session.commit()

            except TicketLimitException:
                db.session.rollback()
Exemple #23
0
    def make_test_user(self):
        try:
            user = User.query.filter(User.email == "*****@*****.**").one()
        except NoResultFound:
            user = User('*****@*****.**', 'testuser')
            user.set_password('happycamper')
            db.session.add(user)

            types = {"full": TicketType.query.get('full')}
            #
            # FIXME: this is a complete mess
            #
            # TODO: needs to cover:
            #
            # single full ticket
            # multiple full tickets
            #
            # kids & campervans?
            #

            # full
            for full in ([1], [0], [3], [0], [2]):
                for pt in (BankPayment, GoCardlessPayment):
                    for curr in ['GBP', 'EUR']:
                        total = (full * amounts['full'].get_price(curr))
                        payment = pt(curr, total)
                        payment.state = "inprogress"
                        if payment.provider == "gocardless":
                            payment.gcid = "%3dSDJADG" % (int(
                                random.random() * 1000))
                        sess.add(payment)

                        for i in range(full):
                            t = Ticket(code='full')
                            t.payment = payment
                            if payment.currency == 'GBP':
                                t.expires = datetime.utcnow() + timedelta(
                                    days=app.config['EXPIRY_DAYS_TRANSFER'])
                            elif payment.currency == 'EUR':
                                t.expires = datetime.utcnow() + timedelta(
                                    days=app.
                                    config['EXPIRY_DAYS_TRANSFER_EURO'])
                            user.tickets.append(t)

                        user.payments.append(payment)

            db.session.commit()

        self.user = user
        print user.name
        for p in user.payments.all():
            print p.provider, p.amount
            print p.tickets.all()
Exemple #24
0
    def setUp(self):
        self.group, created = Group.objects.get_or_create(name='test')
        self.user, created = DjangoUser.objects.get_or_create(
            username=self.username)
        self.user.set_password(self.password)
        self.user.save()
        perspective, created = Perspective.objects.get_or_create(
            name='default')
        perspective.set_default_user()
        perspective.save()

        ModuleSetting.set('default_perspective', perspective.id)

        self.contact_type = ContactType(name='test')
        self.contact_type.set_default_user()
        self.contact_type.save()

        self.contact = Contact(name='test', contact_type=self.contact_type)
        self.contact.set_default_user()
        self.contact.save()

        self.status = TicketStatus(name='TestStatus')
        self.status.set_default_user()
        self.status.save()

        self.queue = TicketQueue(name='TestQueue',
                                 default_ticket_status=self.status)
        self.queue.set_default_user()
        self.queue.save()

        self.ticket = Ticket(name='TestTicket',
                             status=self.status,
                             queue=self.queue)
        self.ticket.set_default_user()
        self.ticket.save()

        self.agent = ServiceAgent(related_user=self.user.profile,
                                  available_from=datetime.time(9),
                                  available_to=datetime.time(17))
        self.agent.set_default_user()
        self.agent.save()

        self.service = Service(name='test')
        self.service.set_default_user()
        self.service.save()

        self.sla = ServiceLevelAgreement(name='test',
                                         service=self.service,
                                         client=self.contact,
                                         provider=self.contact)
        self.sla.set_default_user()
        self.sla.save()
Exemple #25
0
    def continue_scenario(self, text, state, user_id):
        """Продолжаем сценарий"""
        # достаем шаги
        steps = SCENARIOS[state.scenario_name]['steps']
        step = steps[state.step_name]
        step_to_send = step
        # достаем хэндлер
        handler = getattr(handlers, step['handler'])

        if handler(text=text, context=state.context):
            # next step
            next_step = steps[step["next_step"]]
            text_to_send = next_step['text'].format(**state.context)
            step_to_send = next_step

            # проверяем что ввел пользоваетль на 7ом шаге
            if self.is_it_ok(state=state):
                self.clear_context(state)
                self.send_text(INTENTS[2]['answer'], user_id)
                return

            # Достаем экшен
            elif next_step['action']:
                action = getattr(handlers, next_step['action'])
                text_to_send += action(state.context)

            if next_step['next_step']:
                # переключаем на след шаг
                state.step_name = step['next_step']

            else:
                # после удаления из бд обратится к объекту не получится, отправляем прощание
                self.send_step(step=step_to_send, user_id=user_id, text=text, context=state.context,
                               text_to_send=text_to_send)
                Ticket(
                    departure=state.context['departure'],
                    arrival=state.context['arrival'],
                    date=state.context['date'],
                    flight_number=state.context['flight_number'],
                    seats_count=state.context['seats_count'],
                    comment=str(state.context['comment']),
                )
                state.delete()
                print('удалили userstate из бд, проверь!')

                return
        else:
            # retry current step
            text_to_send = step['failure_text'].format(**state.context)

        text_to_send += self.print_extra_content(state)
        self.send_step(step=step_to_send, user_id=user_id, text=text, context=state.context, text_to_send=text_to_send)
Exemple #26
0
 def create_ticket(self, subject, **kwargs):
     """Creates a ticket"""
     url = 'tickets'
     status = kwargs.get('status', 2)
     priority = kwargs.get('priority', 1)
     data = {
         'subject': subject,
         'status': status,
         'priority': priority,
     }
     data.update(kwargs)
     ticket = self._api._post(url, data=json.dumps(data))
     return Ticket(**ticket)
Exemple #27
0
 def test_new_ticket_linked_sound(self):
     test_user = User.objects.get(username='******')
     ticket = Ticket()
     ticket.status = 'new'
     ticket.sender = User.objects.get(username='******')
     ticket.assignee = User.objects.get(username='******')
     ticket.queue = Queue.objects.get(name=QUEUE_SOUND_MODERATION)
     ticket.save()
     # just to test, this would be a sound object for example
     s = Sound(description='test sound', license_id=1, user=test_user)
     s.save()
     ticket.sound = s
     ticket.save()
     self.assertEqual(s.id, ticket.sound.id)
    def test_get_ticket_that_exists(self):
        ticket = Ticket(id=3,
                        status=7,
                        createdAt=datetime.date.today(),
                        updatedAt=datetime.date.today())
        self.session.add(ticket)
        self.session.commit()

        # Verify the ticket was added to the db.
        check = self.session.query(Ticket).filter_by(id=3).first()
        assert check is not None

        response = self.app.get('/portal/ticket/3')
        assert response.status == "200 OK"
Exemple #29
0
 def create_outbound_email(self, subject, description, email,
                           email_config_id, **kwargs):
     """Creates an outbound email"""
     url = 'tickets/outbound_email'
     priority = kwargs.get('priority', 1)
     data = {
         'subject': subject,
         'description': description,
         'priority': priority,
         'email': email,
         'email_config_id': email_config_id,
     }
     data.update(kwargs)
     ticket = self._api._post(url, data=json.dumps(data))
     return Ticket(**ticket)
 def test_add_ticket_note_using_bad_status_arg(self):
     self.add_users_to_db()
     ticket = Ticket(id=4,
                     status=1,
                     createdAt=datetime.date.today(),
                     updatedAt=datetime.date.today())
     self.session.add(ticket)
     self.session.commit()
     result = self.app.post('/portal/ticket/note/4',
                            data=dict(poster="oompa",
                                      message="hello",
                                      status="greg",
                                      type=3),
                            follow_redirects=True)
     assert result.status == "400 BAD REQUEST"