def process_post_data(self): """process all the incoming data. raises ProcessingError in case there is a failure. This method should only be called on post""" # unfortunately it's doubled here. regform = self.registration_form userform = self.user_registration_form if not self.logged_in and not userform.validate(): print "user is not logged in and userform does not validate" raise ProcessingError( "user is not logged in and userform does not validate") if not regform.validate(): print "registration form does not validate" raise ProcessingError("registration form does not validate") # do we have events? If not then this is not valid eids = self.request.form.getlist("_bcevents") if not eids: print "no events selected" raise ProcessingError("no events selected") # do we have a new user? new_user = not self.logged_in if not self.logged_in: # create new user and get the UID mod = self.app.module_map['userbase'] user = mod.register(userform.data, create_pw=False) # double opt in should be done already, we only have to remember # to tell the user after registration uid = unicode(user._id) self.log.debug("created new user", uid=uid) else: uid = unicode(self.user._id) # store registration details self.barcamp.registration_data[uid] = regform.data # register for all the selected events if self.logged_in: reg = RegistrationService(self, self.user) for eid in eids: event = self.barcamp.get_event(eid) try: reg.set_status(eid, "going") except RegistrationError, e: self.log.exception("a registration error occurred") print "unknown registration error" raise ProcessingError(str(e)) return
def get(self): """show the registration form""" mod = self.app.module_map['userbase'] cfg = mod.config code = self.request.args.get("code", None) if self.request.method == 'POST': code = self.request.form.get("code", "") else: code = self.request.args.get("code", None) if code is not None: user = mod.get_user_by_activation_code(code) if user is not None: user.activate() # log user in mod.login(self, user=user, save = False) user.save() # default url to return to on activation url_for_params = cfg.urls.activation_success return_url = self.url_for(**url_for_params) # now register user for barcamps if some are give if "barcamp" in user.registered_for: slug = user.registered_for['barcamp'] barcamp = self.config.dbs.barcamps.by_slug(slug) if barcamp is None: self.flash(self._("Unfortunately we couldn't find the barcamp you tried to register for. Please search for it on the homepage and register again"), category="danger") else: failed = False # check for ticket mode if barcamp.ticketmode_enabled: ticketservice = TicketService(self, user, barcamp = barcamp) for tc_id in user.registered_for.get('tickets', []): try: status = ticketservice.register(tc_id, new_user = user) except TicketError, e: self.log.error("an exception when registering a ticket occurred", error_msg = e.msg) failed = True else: reg = RegistrationService(self, user, barcamp = barcamp) for eid in user.registered_for.get('eids', []): event = barcamp.get_event(eid) try: reg.set_status(eid, "going") except RegistrationError, e: failed = True if failed: self.flash(self._("We could not register you for all selected events. Please check your email and the events page"), category="warning") else: self.flash(self._("Your account has been successfully activated and you have been registered for the barcamp") %user) return_url = self.url_for("barcamps.index", slug = barcamp.slug)
def process_post_data(self): """process all the incoming data. raises ProcessingError in case there is a failure. This method should only be called on post""" # unfortunately it's doubled here. regform = self.registration_form userform = self.user_registration_form if not self.logged_in and not userform.validate(): raise ProcessingError("user is not logged in and userform does not validate") if not regform.validate(): raise ProcessingError("registration form does not validate") # do we have events? If not then this is not valid eids = self.request.form.getlist("_bcevents") if not eids: raise ProcessingError("no events selected") # do we have a new user? new_user = not self.logged_in if not self.logged_in: # create new user and get the UID mod = self.app.module_map['userbase'] user = mod.register(userform.data, create_pw = False) # double opt in should be done already, we only have to remember # to tell the user after registration uid = unicode(user._id) print "created new user with uid", uid else: uid = unicode(self.user._id) # store registration details self.barcamp.registration_data[uid] = regform.data # register for all the selected events if self.logged_in: reg = RegistrationService(self, self.user) for eid in eids: event = self.barcamp.get_event(eid) try: reg.set_status(eid, "going") except RegistrationError, e: print "a registration error occurred", e raise ProcessingError(str(e)) return
def get(self): """show the registration form""" mod = self.app.module_map['userbase'] cfg = mod.config code = self.request.args.get("code", None) if self.request.method == 'POST': code = self.request.form.get("code", "") else: code = self.request.args.get("code", None) if code is not None: user = mod.get_user_by_activation_code(code) if user is not None: user.activate() # log user in mod.login(self, user=user, save = False) user.save() # default url to return to on activation url_for_params = cfg.urls.activation_success return_url = self.url_for(**url_for_params) # now register user for barcamps if some are give if "barcamp" in user.registered_for: slug = user.registered_for['barcamp'] barcamp = self.config.dbs.barcamps.by_slug(slug) if barcamp is None: self.flash(self._("Unfortunately we couldn't find the barcamp you tried to register for. Please search for it on the homepage and register again"), category="danger") else: failed = False reg = RegistrationService(self, user, barcamp = barcamp) for eid in user.registered_for.get('eids', []): event = barcamp.get_event(eid) try: reg.set_status(eid, "going") except RegistrationError, e: failed = True if failed: self.flash(self._("We could not register you for all selected events. Please check your email and the events page"), category="warning") else: self.flash(self._("Your account has been successfully activated and you have been registered for the barcamp") %user) return_url = self.url_for("barcamps.index", slug = barcamp.slug) else: self.flash(self._("Your account has been successfully activated.") %user) return redirect(return_url) else: url = self.url_for(endpoint="userbase.activation_code") params = {'url': url, 'code' : code} self.flash(self._("""The activation code is not valid. Please try again or click <a href="%(url)s">here</a> to get a new one.""") %params, category="danger")
def post(self, slug=None): """add a user to the participant or maybe list""" reg = RegistrationService(self, self.user) eid = self.request.form.get("eid") uid = unicode(self.user._id) event = self.barcamp.get_event(eid) status = self.request.form.get("status") # can be join, maybe, not try: reg.set_status(eid, status) except RegistrationError, e: return {"status": "error", "message": "registration is not possible"}
def post(self, slug=None): """add a user to the participant or maybe list""" reg = RegistrationService(self, self.user) eid = self.request.form.get("eid") uid = unicode(self.user._id) event = self.barcamp.get_event(eid) status = self.request.form.get("status") # can be join, maybe, not try: reg.set_status(eid, status) except RegistrationError, e: return { 'status': 'error', 'message': 'registration is not possible' }
def post(self, slug = None, eid = None): """handle users and lists you have to provide a userid as uid and a status in the form data status can be ``going``, ``maybe``, ``notgoing`` and ``waitinglist`` """ uid = self.request.form.get("uid") status = self.request.form.get("status") # can be join, maybe, notgoubg event = self.barcamp.get_event(eid) user = self.app.module_map.userbase.get_user_by_id(uid) reg = RegistrationService(self, user) try: status = reg.set_status(eid, status, force=True) except RegistrationError, e: print "a registration error occurred", e raise ProcessingError(str(e)) return
def get(self): """show the registration form""" mod = self.app.module_map['userbase'] cfg = mod.config code = self.request.args.get("code", None) if self.request.method == 'POST': code = self.request.form.get("code", "") else: code = self.request.args.get("code", None) if code is not None: user = mod.get_user_by_activation_code(code) if user is not None: user.activate() # log user in mod.login(self, user=user, save=False) user.save() # default url to return to on activation url_for_params = cfg.urls.activation_success return_url = self.url_for(**url_for_params) # now register user for barcamps if some are give if "barcamp" in user.registered_for: slug = user.registered_for['barcamp'] barcamp = self.config.dbs.barcamps.by_slug(slug) if barcamp is None: self.flash(self._( "Unfortunately we couldn't find the barcamp you tried to register for. Please search for it on the homepage and register again" ), category="danger") else: failed = False # check for ticket mode if barcamp.ticketmode_enabled: ticketservice = TicketService(self, user, barcamp=barcamp) for tc_id in user.registered_for.get( 'tickets', []): try: status = ticketservice.register( tc_id, new_user=user) except TicketError, e: self.log.error( "an exception when registering a ticket occurred", error_msg=e.msg) failed = True else: reg = RegistrationService(self, user, barcamp=barcamp) for eid in user.registered_for.get('eids', []): event = barcamp.get_event(eid) try: reg.set_status(eid, "going") except RegistrationError, e: failed = True if failed: self.flash(self._( "We could not register you for all selected events. Please check your email and the events page" ), category="warning") else: self.flash( self. _("Your account has been successfully activated and you have been registered for the barcamp" ) % user) return_url = self.url_for("barcamps.index", slug=barcamp.slug)