예제 #1
0
    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
예제 #2
0
    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)
예제 #3
0
    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 
예제 #4
0
    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")
예제 #5
0
    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"}
예제 #6
0
    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'
            }
예제 #7
0
파일: events.py 프로젝트: comlounge/camper
    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 
예제 #8
0
    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)