示例#1
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
示例#2
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 + '] 退票成功!')
示例#3
0
 def get(self):
     """
     input:  空
             返回活动对象的数组(要求status>=0)
             需要登录
     """
     if not self.request.user.is_authenticated():
         raise ValidateError("admin-user not login!")
     else:
         result = []
         activity_list = Activity.get_all_activities()
         for act in activity_list:
             if act.status >= 0:
                 temp = {
                     'id':
                     act.id,
                     'name':
                     act.name,
                     'description':
                     act.description,
                     'startTime':
                     time.mktime(
                         time.strptime(
                             act.start_time.strftime('%Y-%m-%d %H:%M:%S'),
                             '%Y-%m-%d %H:%M:%S')),
                     "endTime":
                     time.mktime(
                         time.strptime(
                             act.end_time.strftime('%Y-%m-%d %H:%M:%S'),
                             '%Y-%m-%d %H:%M:%S')),
                     'place':
                     act.place,
                     'bookStart':
                     time.mktime(
                         time.strptime(
                             act.book_start.strftime('%Y-%m-%d %H:%M:%S'),
                             '%Y-%m-%d %H:%M:%S')),
                     'bookEnd':
                     time.mktime(
                         time.strptime(
                             act.book_end.strftime('%Y-%m-%d %H:%M:%S'),
                             '%Y-%m-%d %H:%M:%S')),
                     'currentTime':
                     int(time.time()),  # 当前时间的秒级时间戳
                     'status':
                     act.status,
                 }
                 result.append(temp)
         return result
示例#4
0
 def handle(self):
     all_activities = Activity.get_all_activities().order_by('book_start')
     all_activities_list = []
     for act in all_activities:
         all_activities_list.append(act)
     while len(all_activities_list) > 8:
         all_activities_list = all_activities_list[1:]
         if len(all_activities_list) > 8:
             all_activities_list.pop()
     result = []
     for act in all_activities_list:
         result.append({
             'Title': act.name,
             'Url': self.url_activity_detail(act.id)
         })
     return self.reply_news(result)
示例#5
0
 def get(self):
     """
     input:  空
             返回可加入菜单的活动对象数组
             需要登录
     """
     if not self.request.user.is_authenticated():
         raise ValidateError("admin-user not login!")
     else:
         result = []
         activity_list = Activity.get_all_activities()
         for act in activity_list:
             if act.status >= 0:
                 temp = {'id': act.id, 'name': act.name, 'menuIndex': 0}
                 result.append(temp)
         for ii in range(5):
             index = ii + 1
             opposite_index = index * (-1)
             if index <= len(result):
                 result[opposite_index]['menuIndex'] = index
     return result
示例#6
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
示例#7
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),
            })
示例#8
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