def post(self): eventid = self.request.get("eventid") event = self.load_event_with_eventid_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") send_notification.send_notification_to_user_and_owner( user.email(), user.email(), event.owner.email(), event.owners_email, mail_title, mail_message ) self.redirect("/thanks?eventid=%s" % (eventid))
def post(self): eventid = self.request.get('eventid') user = users.get_current_user() event = self.load_event_with_eventid_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.load_enquete_with_eventid(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() 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') send_notification.send_notification_to_user_and_owner( user.email(), user.email(), event.owner.email(), event.owners_email, mail_title, mail_message)
def post(self): eventid = self.request.get('eventid') title = self.request.get('title') user = users.get_current_user() if eventid == 'na': # 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.load_event_with_eventid(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.invalidate_event_with_eventid(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') send_notification.send_notification_to_user_and_owner( user.email(), user.email(), event.owner.email(), event.owners_email, mail_title, mail_message) self.redirect('/thanks?eventid=%s' % eventid)