Пример #1
0
    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)
Пример #2
0
    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))
Пример #3
0
    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)
Пример #4
0
    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)