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' )
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
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')
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' )
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')
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()))
def test_missing_with_default(self): self.assertEqual( viewfill('foo {{missing "nothing"}} bar', defaultfiller), "foo nothing bar")
def test_missing_quoted_with_nested_default_single_quotes(self): self.assertEqual( viewfill('foo "/{{missing \'nothing\'}}" bar', defaultfiller), "foo \"/nothing\" bar")
def test_missing_with_default_single_quotes(self): self.assertEqual( viewfill("foo {{missing \'nothing\'}} bar", defaultfiller), "foo nothing bar")