Exemple #1
0
    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))
Exemple #2
0
    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)
Exemple #3
0
    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)