def test_user_has_deleted_activity_ticket(self): user_open_id = '921E1460FD86481C9087C7E2A9B7C6322967F79BDFC34ED2873EFC8106EDC38A' user_student_id = '2016012345' Ticket.create_ticket(student_id=user_student_id, activity=self.activity_map['7e']) Ticket.create_ticket( # others' ticket student_id='2018000000', activity=self.activity_map['7e']) Ticket.create_ticket(student_id=user_student_id, activity=self.activity_map['8d']) Ticket.create_ticket(student_id=user_student_id, activity=self.activity_map['21']) resp = self.wechat_server.send_click( CustomWeChatView.event_keys['get_ticket'], user_open_id) news = self.wechat_server.get_news(resp) self.assertEqual( len(news), 1, 'deleted or saved activities\' tickets would not be included') self.assertEqual( news[0]['Title'], get_template('messages/ticket_title.html').render( {'activity': self.activity_map['7e']})) # restore Ticket.objects.all().delete()
def handle(self): try: activity = self.get_activity() if activity.status != Activity.STATUS_PUBLISHED: raise LogicError('activity not published') except LogicError: return self.reply_text(self.get_message('activity_not_found')) if self.user.student_id == '': # not bind yet return self.reply_text(self.get_message('id_not_bind')) old_ticket = Ticket.objects.filter(student_id=self.user.student_id, activity=activity, status=Ticket.STATUS_VALID).first() if old_ticket is not None: # in fact, it is not snap up ticket, it is withdraw ticket return self.reply_single_news({ 'Title': self.get_message('withdraw_ticket_title'), 'Description': self.get_message('withdraw_ticket_detail', activity=activity), 'Url': self.url_ticket_detail(old_ticket), 'PicUrl': activity.pic_url, }) if self.get_current_time() < activity.book_start.timestamp( ): # not start yet return self.reply_text(self.get_message('book_not_start')) if self.get_current_time() > activity.book_end.timestamp( ): # end already return self.reply_text(self.get_message('book_end_already')) result = Activity.decrease_ticket_exclusive(activity.id) if not result: return self.reply_text(self.get_message('sold_out')) ticket = Ticket.create_ticket(student_id=self.user.student_id, activity=activity) return self.reply_single_news({ 'Title': self.get_message('book_ticket_success_title'), 'Description': self.get_message('book_ticket_success_detail', activity=activity), 'Url': self.url_ticket_detail(ticket), 'PicUrl': activity.pic_url, })