def post(self): eventid = self.request.get('eventid') user = users.get_current_user() event = self.event_cache.get_cached(eventid) if event == None: self.http_error_message('Event id %s not found' % (eventid)) return attendance = self.load_attendance_with_eventid_and_user(eventid, user) if attendance == None: self.http_error_message('User not registered in event %s' % (eventid)) return enquete = self.enquete_cache.get_cached(eventid) if enquete == None: self.http_error_message('Enquete for event id %s not found' % (eventid)) return enquete_response = schema.EventEnqueteResponse() enquete_response.eventid = eventid enquete_response.user = user enquete_response.overall_comment = self.request.get('overall_comment') for sequence, question_item in enumerate(enquete.question_text): enquete_response.question_response.append(long(self.request.get('question' + str(sequence)))) enquete_response.put() self.enquete_response_cache.invalidate_cache(eventid) template_values = { 'eventid': eventid, } self.template_render_output(template_values, 'Thanks.html') # send mail backup of the enquete. question_text_array = [] for question_text, question_response in zip(enquete.question_text, enquete_response.question_response): question_text_array.append({ 'question_text': question_text, 'value': question_response, }) mail_template = { 'eventid': eventid, 'user_realname': attendance.user_realname, 'question_text_array': question_text_array, 'overall_comment': enquete_response.overall_comment, } mail_message = self.template_render( mail_template, 'EnqueteRespondDone.txt') mail_title = "[Debian登録システム] イベント %s のアンケート結果" % event.title.encode('utf-8') throttled_mail_sender.send_mail( eventid, user.email(), mail_title, mail_message)
def post(self): eventid = self.request.get('eventid') event = self.event_cache.get_cached(eventid) if event == None: self.http_error_message('Event id %s not found' % (eventid)) return user = users.get_current_user() # update user_realname cache. user_realname = self.load_user_realname_with_userid(user) if user_realname == None: # if empty, create a new instance user_realname = schema.UserRealname() user_realname.user = user user_realname.realname = self.request.get('user_realname') user_realname.put() attendance = self.load_attendance_with_eventid_and_user(eventid, user) if attendance == None: # create new entry if it's not available yet, otherwise reuse an old entry. attendance = schema.Attendance() # check that the event has remaining seats, this part of code # should really be atomic, but it's not. I'm sloppy. remaining_seats = self.count_remaining_seats(eventid, event.capacity) if remaining_seats == 0: # the number of remaining seats is zero, so the party is full. self.http_error_message(u'イベントは満席です Event id %s is full, you cannot reserve a place' % (eventid)) return # TODO: I should also check when someone unchecked attend -> checked attend again. attendance.eventid = eventid attendance.user = user attendance.user_realname = user_realname.realname attendance.prework_text = self.request.get('user_prework') attendance.attend = (self.request.get('user_attend') == 'attend') attendance.enkai_attend = (self.request.get('user_enkai_attend') == 'enkai_attend') attendance.put() mail_title = "[Debian登録システム] %s (%s) が %s に登録しました" % ( attendance.user_realname.encode('utf-8'), user.nickname(), event.title.encode('utf-8')) mail_template = { 'attendance': attendance, 'event': event, 'event_url': 'http://%s/event?eventid=%s' % (self.request.host, eventid), } mail_message = self.template_render(mail_template, 'UserCommitEventRegistration.txt') throttled_mail_sender.send_mail(eventid, user.email(), mail_title, mail_message) self.redirect('/thanks?eventid=%s' % (eventid))
def post(self): eventid = self.request.get('eventid') title = self.request.get('title') user = users.get_current_user() if eventid == NEW_EVENT_ID: # if it's new, create a new item event = schema.Event() eventid = generate_eventid(title, user.email(), datetime.datetime.now().isoformat(' ')) event.eventid = eventid event.owner = user else: event = self.event_cache.get_uncached(eventid) if event == None: self.http_error_message('Event id %s not found' % (eventid)) return if not self.check_auth_owner(event): self.http_error_message('Not your event') return event.eventid = eventid event.owners_email = self.request.get('owners_email').split(',') event.title = title event.location = self.request.get('location') event.content_text = self.request.get('content') event.content_url = self.request.get('content_url') event.prework_text = self.request.get('prework') event.event_date = self.request.get('event_date') event.capacity = int(self.request.get('capacity')) event.put() self.event_cache.invalidate_cache(eventid) mail_title = "[Debian登録システム] イベント %s が更新されました" % event.title.encode('utf-8') mail_template = { 'event': event, 'event_url': 'http://%s/eventadmin/edit?eventid=%s' % ( self.request.host, eventid), } mail_message = self.template_render(mail_template, 'RegisterEvent.txt') throttled_mail_sender.send_mail(eventid, user.email(), mail_title, mail_message) self.redirect('/thanks?eventid=%s' % eventid)
def get(self): eventid = self.request.get('eventid') user = users.get_current_user() event = self.event_cache.get_cached(eventid) if event == None: self.http_error_message('Event id %s not found' % (eventid)) return if not self.check_auth_owner(event): self.http_error_message('Not your event') return enquete = self.enquete_cache.get_cached(eventid) if enquete == None: self.http_error_message('Enquete for event id %s not found' % (eventid)) return attendances, num_attend, num_enkai_attend = self.load_users_with_eventid(eventid) self.response.headers['Content-type'] = 'text/plain; charset=utf-8' for attendance in attendances: mail_template = { 'eventid': eventid, 'event': event, 'user_realname': attendance.user_realname, 'admin_email': user.email() } mail_message = self.template_render( mail_template, 'EnqueteAdminSendMail.txt') mail_title = "[Debian登録システム] イベント %s のアンケートの依頼" % event.title.encode('utf-8') throttled_mail_sender.send_mail( eventid, attendance.user.email(), mail_title, mail_message) # show page content self.response.out.write(mail_message)