Example #1
0
 def test_surrounded(self):
     self.assertEqual(
         viewfill('{{name}}', dict(name='Joe').get),
         'Joe'
     )
     self.assertEqual(
         viewfill('<p>{{name}}</p>', dict(name='Joe').get),
         '<p>Joe</p>'
     )
     self.assertEqual(
         viewfill('Test\n<p>{{name}}</p>\nother', dict(name='Joe').get),
         'Test\n<p>Joe</p>\nother'
     )
Example #2
0
def submit_registration(data):
    """receive data submitted via registration form"""
    password = hash_password(data.pop('PASSWORD'))
    del data['CONFIRM']

    rec = Registration(**data)
    rec.token = token = uuid.uuid4().hex
    rec.expiry = time.time() + REGISTRATION_TIMEOUT
    rec.password = password

    if is_test_account(rec):
        logger.warning('no email sent to test account')
        warning('test account - registration email will not be sent')
        rec.token = '1234'

    else:
        try:
            recipient = rec.EMAIL
            tpl = load_content('activate.txt')
            activation_link = abs_url_for('/register/confirm',token)
            callback = dict(link=activation_link,site_name=site_name()).get
            body = viewfill(tpl,callback)

            send(recipient, site_name()+' registration', body)
            logger.info('registration sent to %s with token %s' % (recipient, token))
        except:
            logger.error('Registration error sending %s to %s' % (token, recipient))
            raise

    registrations.put(rec)

    return True
Example #3
0
    def insert(cls, form):
        values = form.evaluate()
        username = values['USERNAME'].lower()
        password = gen_password()

        values['FIRSTNAME'] = values['FIRST_NAME']
        values['LASTNAME'] = values['LAST_NAME']
        values['LOGINID'] = username
        values['PASSWORD'] = ''
        values['DTUPD'] = values['DTADD'] = datetime.datetime.now()
        values['STATUS'] = 'A'

        users = db.table('dz_users','USERID')
        id = users.insert(values)

        db('delete from dz_members where userid=%s', id) # make sure new users have no memberships
        add_user(values['LOGINID'], 'users')

        new_user = ZoomUser(username)
        new_user.set_password(password)

        msg = '<a href="/users/%s">%s</a> added new user <a href="/users/%s">%s</a>' 
        logger.activity('users', msg % (user.id, user.username, new_user.id, new_user.username))
        audit('created user account', new_user.username)

        if values['SEND_INVITATION'] == True:
            recipients = [values['EMAIL']]
            tpl = load('welcome.md')
            t = dict(
                    first_name = values['FIRST_NAME'],
                    username = username,
                    password = password,
                    site_name = site_name(),
                    site_url = site_url(),
                    admin_email = '*****@*****.**',
                    owner_name = owner_name(),
                    )
            body = markdown(viewfill(tpl, t.get))
            subject = 'Welcome - ' + site_name()
            send(recipients, subject, body)
            message('invitation sent')
Example #4
0
 def test_single_line_only(self):
     self.assertEqual(
         viewfill(
             'Test\n<p>{{name}}</p>\nother',
             dict(name='Joe').get
         ),
         'Test\n<p>Joe</p>\nother')
     self.assertEqual(
         viewfill(
             'Test\n<p>{{name}}</p>\n{{phone}}\nother',
             dict(name='Joe', phone='1234567').get
         ),
         'Test\n<p>Joe</p>\n1234567\nother'
     )
     self.assertEqual(
         viewfill(
             'Test\n{{name}}<br>{{name}}\n',
             dict(name='Joe', phone='1234567').get
         ),
         'Test\nJoe<br>Joe\n'
     )
     self.assertEqual(
         viewfill(
             '{{name}} > {{name}} > {{phone}}',
             dict(name='Joe', phone='1234567').get
         ),
         'Joe > Joe > 1234567'
     )
     self.assertEqual(
         viewfill(
             '{{name}}</p><br>{{name}}\n{{phone}}',
             dict(name='Joe', phone='1234567').get
         ),
         'Joe</p><br>Joe\n1234567'
     )
     self.assertEqual(
         viewfill(
             'Test\n<p>{{name}}</p><br>{{name}}\n{{phone}}\nother',
             dict(name='Joe', phone='1234567').get
         ),
         'Test\n<p>Joe</p><br>Joe\n1234567\nother'
     )
Example #5
0
 def test_single_line_only(self):
     self.assertEqual(
         viewfill('Test\n<p>{{name}}</p>\nother',
                  dict(name='Joe').get), 'Test\n<p>Joe</p>\nother')
     self.assertEqual(
         viewfill('Test\n<p>{{name}}</p>\n{{phone}}\nother',
                  dict(name='Joe', phone='1234567').get),
         'Test\n<p>Joe</p>\n1234567\nother')
     self.assertEqual(
         viewfill('Test\n{{name}}<br>{{name}}\n',
                  dict(name='Joe', phone='1234567').get),
         'Test\nJoe<br>Joe\n')
     self.assertEqual(
         viewfill('{{name}} > {{name}} > {{phone}}',
                  dict(name='Joe', phone='1234567').get),
         'Joe > Joe > 1234567')
     self.assertEqual(
         viewfill('{{name}}</p><br>{{name}}\n{{phone}}',
                  dict(name='Joe', phone='1234567').get),
         'Joe</p><br>Joe\n1234567')
     self.assertEqual(
         viewfill('Test\n<p>{{name}}</p><br>{{name}}\n{{phone}}\nother',
                  dict(name='Joe', phone='1234567').get),
         'Test\n<p>Joe</p><br>Joe\n1234567\nother')
Example #6
0
def app():
    if user.is_admin:
        if len(route) == 1:
            labels = "First Name", "Last Name", "Username", "Password", "Token", "Expiry", "Action"
            content = browse(
                [
                    dict(
                        username=i.username,
                        token=i.token,
                        password=i.password,
                        expiry=i.expiry,
                        first_name=i.first_name,
                        last_name=i.last_name,
                        action=link_to("activate", "/" + system.app.name, i.username, "activate"),
                    )
                    for i in Registration.all()
                ],
                labels=labels,
            )
            return page(content, title="Registrations")

        elif len(route) == 3 and route[2] == "activate":
            username = route[1]
            r = Registration.find(username=username)
            if r:
                insert_user(r[0])
                r[0].delete()
                return page("registration activated for <strong>%s</strong>" % username, title="Registrations")

    if len(route) == 3 and route[:2] == ["register", "confirm"]:
        rlist = Registration.find(token=route[2])
        if rlist:
            r = rlist[0]
            if r.expiry < time.time():
                return Page("expired.txt", dict(register_link=url_for("/register")))

            elif email_registered(r.email):
                return Page("already_register")

            elif not username_available(r.username):
                return Page("name_taken")

            else:
                insert_user(r)
                return Page("register_complete")

        return Page("<H1>Register</H1><dz:form>%s</form>" % fields.edit())

    elif data:

        fields.update(**data)
        if fields.valid():
            err = get_errors(data)
            if not err:
                r = Registration(**data)
                r.token = token = str(uuid.uuid4().hex)
                r.expiry = time.time() + 3600  # one hour
                r.put()

                tpl = markdown(open("activate.txt").read())
                activation_link = abs_url_for("/register/confirm", token)
                callback = dict(link=activation_link, site_name=site_name()).get
                recipient = data["EMAIL"]
                msg = viewfill(tpl, callback)
                try:
                    if recipient <> "*****@*****.**":
                        send(recipient, site_name() + " registration", msg)
                except:
                    logger.error("Registration error sending %s to %s" % (token, recipient))
                    msg = "fail"
                    raise
                else:
                    logger.info("Registration sent to %s with token %s" % (recipient, token))
                    msg = markdown(open("step2.txt").read())
                return Page(msg)

            else:
                error(*err)

    if experiment("welcome_message"):
        msg = "You're just seconds from your new <dz:site_name> account.  <strong>Thanks for choosing <dz:site_name>!</strong>"
    else:
        msg = ""

    return Page("<H1>Register</H1>%s<br><dz:form>%s</form>" % (msg, fields.edit()))
Example #7
0
 def test_missing_with_default(self):
     self.assertEqual(
         viewfill('foo {{missing "nothing"}} bar', defaultfiller),
         "foo nothing bar")
Example #8
0
 def test_missing_quoted_with_nested_default_single_quotes(self):
     self.assertEqual(
         viewfill('foo "/{{missing \'nothing\'}}" bar', defaultfiller),
         "foo \"/nothing\" bar")
Example #9
0
 def test_missing_with_default_single_quotes(self):
     self.assertEqual(
         viewfill("foo {{missing \'nothing\'}} bar", defaultfiller),
         "foo nothing bar")