Esempio n. 1
0
    def handle(self):
        content = self.input['Content'].split()
        if len(content) == 1:
            return self.reply_text('退票失败,找不到需要退票的活动_(:з」∠)_')
        else:
            content = content[1]
        if content is not None:
            # 在name字段匹配
            activity_1 = Activity.get_all_activities()
            if activity_1:
                activity_1 = activity_1.filter(name=content)
            if activity_1 and len(activity_1) > 0:
                activity_1 = activity_1[0]
            else:
                activity_1 = None

            # 在key字段匹配
            activity_2 = Activity.get_all_activities()
            if activity_2:
                activity_2 = activity_2.filter(name=content)
            if activity_2 and len(activity_2) > 0:
                activity_2 = activity_2[0]
            else:
                activity_2 = None

            if activity_1:
                activity = activity_1
            elif activity_2:
                activity = activity_2
            else:
                return self.reply_text('退票失败,找不到需要退票的活动_(:з」∠)_')

            my_ticket = Ticket.get_by_activity_and_student_number(
                activity.id, self.user.student_id)
            valid_ticket = None
            for tic in my_ticket:
                if tic.status == Ticket.STATUS_VALID:
                    valid_ticket = tic
            if not my_ticket:
                return self.reply_text('退票失败,您没有此次活动的电子票!|・ω・`)')
            if not valid_ticket:
                return self.reply_text('退票失败,您没有此次活动的合法电子票!|・ω・`)')
            else:
                valid_ticket.status = Ticket.STATUS_CANCELLED
                valid_ticket.save()
                activity.remain_tickets = activity.remain_tickets + 1
                activity.save()
                return self.reply_text('活动 [' + activity.name + '] 退票成功!')
Esempio n. 2
0
    def status(self):
        content = self.input['Content'].split()
        if len(content) == 1:
            return self.STATUS_NOT_FIND
        else:
            content = content[1]
        if content is not None:
            # 在name字段匹配
            activity_1 = Activity.get_all_activities()
            if activity_1:
                activity_1 = activity_1.filter(name=content)
            if activity_1 and len(activity_1) > 0:
                activity_1 = activity_1[0]
            else:
                activity_1 = None

            # 在key字段匹配
            activity_2 = Activity.get_all_activities()
            if activity_2:
                activity_2 = activity_2.filter(name=content)
            if activity_2 and len(activity_2) > 0:
                activity_2 = activity_2[0]
            else:
                activity_2 = None

            if activity_1:
                activity = activity_1
            elif activity_2:
                activity = activity_2
            else:
                return self.STATUS_NO_ACTIVITY

            my_ticket = Ticket.get_by_activity_and_student_number(
                activity.id, self.user.student_id)
            valid_ticket = None
            for tic in my_ticket:
                if tic.status == Ticket.STATUS_VALID:
                    valid_ticket = tic
            if not my_ticket:
                return self.STATUS_NO_TICKET
            if not valid_ticket:
                return self.STATUS_NOT_LEGAL
            else:
                valid_ticket.status = Ticket.STATUS_CANCELLED
                valid_ticket.save()
                activity.remain_tickets = activity.remain_tickets + 1
                activity.save()
                return self.STATUS_VALID
Esempio n. 3
0
    def post(self):
        """
        input:  self.input['actId'] -------- 活动ID
                self.input['ticket'] -------- 电子票ID
                self.input['studentId'] -------- 学号
                检票
                需要登录
        """
        if not self.request.user.is_authenticated():
            raise ValidateError("admin-user not login!")
        else:
            self.check_input('actId')
            result = None
            valid_ticket = None
            if 'ticket' not in self.input:
                self.check_input('studentId')
                result = Ticket.get_by_activity_and_student_number(
                    self.input['actId'], self.input['studentId'])
                if len(result) > 0:
                    for tic in result:
                        if tic.status == Ticket.STATUS_VALID:
                            valid_ticket = tic
                if not valid_ticket:
                    raise LogicError("The user don't have valid ticket!")
            elif 'studentId' not in self.input:
                self.check_input('ticket')
                result = Ticket.get_by_unique_id(self.input['ticket'])
                if result.status == Ticket.STATUS_VALID:
                    valid_ticket = result
                else:
                    raise LogicError("The ticket is not valid!")

            if valid_ticket:
                valid_ticket.status = Ticket.STATUS_USED
                valid_ticket.save()
                return {
                    'ticket': valid_ticket.unique_id,
                    'studentId': valid_ticket.student_id,
                }
            else:
                return LogicError('Ticket not found')
Esempio n. 4
0
    def handle(self):
        if self.is_msg_type('text'):
            # 通过取票命令进入
            search = self.input['Content'].split()
            if len(search) == 1:
                return self.reply_text('找不到此活动Orz')
            else:
                search = search[1]
            # 在name字段匹配
            if search is not None:
                activity_1 = Activity.get_all_activities()
                if activity_1:
                    activity_1 = activity_1.filter(name=search)
                if activity_1 and len(activity_1) > 0:
                    activity_1 = activity_1[0]
                else:
                    activity_1 = None

            # 在key字段匹配
            if search is not None:
                activity_2 = Activity.get_all_activities()
                if activity_2:
                    activity_2 = activity_2.filter(name=search)
                if activity_2 and len(activity_2) > 0:
                    activity_2 = activity_2[0]
                else:
                    activity_2 = None

            if activity_1:
                activity = activity_1
            elif activity_2:
                activity = activity_2
            else:
                return self.reply_text('找不到此活动Orz')
            # 此时activity必定存在
            my_ticket = Ticket.get_by_activity_and_student_number(
                activity.id, self.user.student_id)
            if len(my_ticket) == 0:
                return self.reply_text('您还没有此活动的票!Ծ‸Ծ')
            valid_ticket = None
            for tic in my_ticket:
                if tic.status == Ticket.STATUS_VALID:
                    valid_ticket = tic
            if not valid_ticket:
                return self.reply_text('您还没有此活动的合法票!Ծ‸Ծ')
            return self.reply_single_news({
                'Title':
                '[' + activity.name + '] 电子票',
                'Description':
                '活动名称:' + activity.name + '\n活动代称:' + activity.key,
                'Url':
                self.url_ticket_detail(valid_ticket.unique_id),
            })

        elif self.is_msg_type('event'):
            # 通过取票按钮进入
            ticket_list = Ticket.get_user_tickets(self.user.student_id)
            ticket_list = ticket_list.order_by('-activity__start_time')
            if len(ticket_list) == 0:
                return self.reply_text('您尚未持有任何票0.0')
            if len(ticket_list) > 8:
                ticket_list = ticket_list[:7]
            result = []
            for tic in ticket_list:
                act = tic.activity
                result.append({
                    'Title': '[' + act.name + '] 电子票',
                    'Url': self.url_ticket_detail(tic.unique_id)
                })
            return self.reply_news(result)
        return
Esempio n. 5
0
    def handle(self):
        if self.is_msg_type('text'):
            # 通过抢票命令进入
            search = self.input['Content'].split()
            if len(search) == 1:
                return self.reply_text('找不到此活动Orz')
            else:
                search = search[1]
            # 在name字段匹配
            if search is not None:
                activity_1 = Activity.get_all_activities()
                if activity_1:
                    activity_1 = activity_1.filter(name=search)
                if activity_1 and len(activity_1) > 0:
                    activity_1 = activity_1[0]
                else:
                    activity_1 = None

            # 在key字段匹配
            if search is not None:
                activity_2 = Activity.get_all_activities()
                if activity_2:
                    activity_2 = activity_2.filter(name=search)
                if activity_2 and len(activity_2) > 0:
                    activity_2 = activity_2[0]
                else:
                    activity_2 = None

            if activity_1:
                activity = activity_1
            elif activity_2:
                activity = activity_2
            else:
                # STATUS_NO_ACTIVITY
                return self.reply_text('找不到此活动Orz')

        elif self.is_msg_type('event'):
            activity_id = int(self.input['EventKey'].replace(
                self.view.event_keys['book_header'], ''))
            try:
                activity = Activity.get_by_id(activity_id)
            except LogicError:
                # STATUS_NO_ACTIVITY
                return self.reply_text('找不到此活动Orz')
            if not activity:
                # STATUS_NO_ACTIVITY
                return self.reply_text('找不到此活动Orz')

        # 此时activity必定存在
        my_ticket = Ticket.get_by_activity_and_student_number(
            activity.id, self.user.student_id)
        temp = []
        for tic in my_ticket:
            temp.append(tic)
        my_ticket = temp
        while len(
                my_ticket) > 0 and my_ticket[0].status != Ticket.STATUS_VALID:
            my_ticket.pop(0)
        if len(my_ticket) == 0:
            if activity.remain_tickets > 0:
                activity.remain_tickets = activity.remain_tickets - 1
                activity.save()
                unique = '%s%s' % (str(int(round(
                    time.time() * 1000))), str(uuid.uuid1()))
                ticket = Ticket(student_id=self.user.student_id,
                                unique_id=unique,
                                status=Ticket.STATUS_VALID,
                                activity=activity)
                ticket.save()
                # STATUS_NO_VALID
                return self.reply_single_news({
                    'Title':
                    '[' + activity.name + '] 抢票成功!',
                    'Description':
                    '活动名称:' + activity.name + '\n活动代称:' + activity.key +
                    '\n请于活动开始时前往现场使用,您可以通过 [查票] 菜单查询电子票、或发送 [取票/退票 活动名称或代称] 查询或退票(・◇・)',
                    'Url':
                    self.url_ticket_detail(ticket.unique_id),
                })
            else:
                return self.reply_text('此活动的电子票已经全部发出,没有抢到QwQ')
        else:
            my_ticket = my_ticket[0]
            # STATUS_HAS_GOT
            return self.reply_single_news({
                'Title':
                '[' + activity.name + '] 电子票',
                'Description':
                '活动名称:' + activity.name + '\n活动代称:' + activity.key,
                'Url':
                self.url_ticket_detail(my_ticket.unique_id),
            })
Esempio n. 6
0
    def status(self):
        if self.is_msg_type('text'):
            # 通过抢票命令进入
            search = self.input['Content'].split()
            if len(search) == 1:
                return self.reply_text('找不到此活动Orz')
            else:
                search = search[1]
            # 在name字段匹配
            if search is not None:
                activity_1 = Activity.get_all_activities()
                if activity_1:
                    activity_1 = activity_1.filter(name=search)
                if activity_1 and len(activity_1) > 0:
                    activity_1 = activity_1[0]
                else:
                    activity_1 = None

            # 在key字段匹配
            if search is not None:
                activity_2 = Activity.get_all_activities()
                if activity_2:
                    activity_2 = activity_2.filter(name=search)
                if activity_2 and len(activity_2) > 0:
                    activity_2 = activity_2[0]
                else:
                    activity_2 = None

            if activity_1:
                activity = activity_1
            elif activity_2:
                activity = activity_2
            else:
                return self.STATUS_NO_ACTIVITY

        elif self.is_msg_type('event'):
            activity_id = int(self.input['EventKey'].replace(
                self.view.event_keys['book_header'], ''))
            try:
                activity = Activity.get_by_id(activity_id)
            except LogicError:
                return self.STATUS_NO_ACTIVITY
            if not activity:
                return self.STATUS_NO_ACTIVITY

            # 此时activity必定存在
        my_ticket = Ticket.get_by_activity_and_student_number(
            activity.id, self.user.student_id)
        temp = []
        for tic in my_ticket:
            temp.append(tic)
        my_ticket = temp
        while len(
                my_ticket) > 0 and my_ticket[0].status != Ticket.STATUS_VALID:
            my_ticket.pop(0)
        if len(my_ticket) == 0:
            if activity.remain_tickets > 0:
                activity.remain_tickets = activity.remain_tickets - 1
                activity.save()
                unique = '%s%s' % (str(int(round(
                    time.time() * 1000))), str(uuid.uuid1()))
                ticket = Ticket(student_id=self.user.student_id,
                                unique_id=unique,
                                status=Ticket.STATUS_VALID,
                                activity=activity)
                ticket.save()
                return self.STATUS_VALID
            else:
                return self.STATUS_NO_TICKET
        else:
            return self.STATUS_HAS_GOT