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 + '] 退票成功!')
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
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')
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
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), })
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