สร้างหน้าลงทะเบียนเข้าใช้งาน สำหรับ AuthKit OpenID
Posted March 04, 2009 at Pylons66
ผมใช้ AuthKit และ OpenID บนโปรแกรมของผมที่เขียนด้วย พอเริ่มจะได้ได้แล้วผมก็อยากจะแก้หน้าลงทะเบียนเข้าใช้งาน (Sign in) สักหน่อย. จริงๆ แล้วก็แก้ได้ง่ายๆ เพราะว่าใช้วิธีคล้ายๆ กับการสร้างหน้าลงทะเบียนเข้าใช้งานใหม่สำหรับ AuthKit + form นอกจากจะเขียนถึงตัวอย่างแล้ว ผมก็จะพยายามอธิบายด้วยนิดหน่อย สมมุติว่าใช้ AuthKit + OpenID ได้อยู่แล้วจะแก้หน้าลงทะเบียนเข้าใช้ใหม่ผมก็เริ่มแก้ไขจาก development.ini ให้ชี้ไปที่ template ใหม่ authkit.openid.template.obj = topenid.lib.signin:make_template นอกจากนั้นก็เพิ่ม 2 ไฟล์เข้าไป ได้แก่ topenid/lib/signin.py และ topenid/template/signin.html topenid/lib/signin.py: # This file is based on example from http://jimmyg.org/2007/08/14/pylons-mako-templates-in-authkit/ from pylons.templating import Buffet from pylons import config import topenid.lib.helpers as h class MyBuffet(Buffet): [...]
Authkit: การแก้หน้าลงทะเบียนเข้าอย่างง่าย
Posted March 01, 2009 at Pylons66
หลังจากที่ผมใช้ AuthKit แบบใช้ form มาสักพัก มันก็เป็นหน้าขาวๆ ธรรมดาก็เลย อยากเปลี่ยนหน้านั้นให้ดูเหมือนหน้าอื่นๆ ผู้ใช้จะได้ไม่งงด้วย การทำอย่างนั้นก็ก็ต้องมีวิธีพิเศษนิดหน่อย ซึ่งในที่สุดก็หาวิธีได้จาก http://jimmyg.org/2007/08/14/pylons-mako-templates-in-authkit/ และคำแนะพร้อม code ของ @sirn แต่เพิ่มเก็บไว้ดูเอง ผมก็เลยทำตัวอย่างที่ง่ายขึ้นอีก เพื่อความเข้าใจมากกว่าเพื่อเอาไปใช้จริงๆ ขั้นตอนในการแก้ฟอร์มที่ใช้ลงทะเบียนเข้าคือ แก้ In development.ini เพิ่ม “authkit.form.template.obj” เข้าไป authkit.setup.enable = true authkit.setup.method = form, cookie authkit.form.authenticate.user.type = basaasa.users.authkit_elixir_driver:UsersFromDatabase authkit.form.authenticate.user.data = basaasa.model authkit.cookie.secret = SomeSec authkit.cookie.signoutpath = /auth/signout authkit.form.template.obj = basaasa.lib.auth:make_template #เพิ่ม เพิ่ม auth.py เข้าไปใน /basaasa/lib auth.py: def make_template(): return """ Signin
BasaAsa: Signin
ใช้ OpenID ด้วย AuthKit อย่างง่าย
Posted March 01, 2009 at Pylons66
ผมพยายามจะเขียนตัวอย่างการทำให้เว็บเข้าใช้ได้ด้วย OpenID โดยใช้ AuthKit 0.4.3 และ Pylons 0.9.7 โดยพยายามดัดแปลงตัวอย่างของ AuthKit มา เริ่มเแรกผมก็สร้าง app ขึ้นมาใหม่เลยชื่อ topenid แล้วก็แก้ไขตามขั้นตอนต่อไปนี้ development.ini: ผมเพิ่มบรรทัดข้างล่างเข้าไปใน development.ini authkit.setup.enable = true authkit.setup.method = openid, cookie authkit.openid.store.type = file authkit.openid.store.config = authkit.openid.charset = UTF-8 authkit.openid.path.signedin = /auth/signin authkit.cookie.signoutpath = /auth/signout authkit.openid.store.baseurl = http://localhost:5000 authkit.cookie.secret = somesecret ใน topenid/config/middleware.py ... import authkit.authenticate # เพิ่มบรรทัดนี้ ... app = PylonsApp() app = authkit.authenticate.middleware(app, app_conf) # เพิ่มบรรทัดนี้ ... topenid/controllers/auth.py import logging from [...]
แยก Python environment สำหรับ Pylons
Posted October 27, 2008 at Pylons66
ในเครื่องแม่ข่ายเครื่องหนึ่งอาจจะเป็นไปได้ว่ามีคนใช้ Pylons, Django, Turbogears แถมยังอาจจะใช้ package ของ Python ที่แตกต่างๆ กัน. ถ้าลงทุก package ที่ทุกคนต้องการไว้ในส่วนกลางหมดก็เป็นไปได้ว่าอาจจะมีบาง package ขัดแย้งกัน โดยเฉพาะโปรแกรมเดียวกันที่ต่าง version กัน. มากไปกว่านั้นก็อาจจะต้องกวนให้ sys admin ช่วย install ให้บ่อยๆ ด้วย หรือจะให้ทุกคนลง package ในส่วนกลางได้เองหมด ก็อาจจะกระทบกับเสถียรภาพโดยรวมของระบบ. อย่ากระนั้นเลยใช้ virtualenv มาแยก Python environment ของแต่ละคนเลยดีกว่า. ผมก็เลยลองลง virtualenv ใช้กับ Apache + mod_wsgi + mod_userdir บน Ubuntu 8.04 บนเครื่องส่วนตัวของผมเองดู. ใน entry นี้ผมสมมุติว่าใช้ Apache + mod_wsgi + mod_userdir ได้อยู่แล้วนะครับ [...]
ดาวน์โหลดแฟ้มจาก Gmail ด้วย libgmail / ftp
Posted September 21, 2008 at Pylons66
ง่าย ๆ ไม่ซับซ้อน แค่เรียกตัว ftp daemon (Gmail-FTP proxy) ให้ทำงาน, แล้วก็ใช้โปรแกรม FTP อะไรก็ได้ไปดึงแฟ้มมา. โดยแฟ้มที่จะดึงมาได้นั้น จะต้องเป็นแฟ้มแนบ (attachment) ที่อยู่ในจดหมายที่ติดป้ายว่า ‘ftp’. ตัวโปรแกรม ftp daemon ที่ว่านี้ คือสคริปต์ไพธอน (Python) เล็ก ๆ ที่ชื่อว่า gmailftpd.py มันอยู่ในแพคเกจ libgmail-docs ของ libgmail. ก่อนจะใช้งาน gmailftpd นี้ เราจำเป็นต้องมี libgmail กับ mechanize ลงอยู่ในเครื่องก่อน. ถ้าใช้ Ubuntu/Debian ก็สั่ง sudo apt-get install python-libgmail python-mechanize ได้เลย. วิธีใช้งาน เราก็เรียก ftp daemon ขึ้นมาก่อน ให้มันทำหน้าที่เป็นเซิร์ฟเวอร์. เรียกใช้ gmailftpd.py โดยสั่ง python [...]
Pylons และ Dependencies
Posted September 15, 2008 at Pylons66
หลังจากเราสร้าง Project ด้วยคำสั่ง paster กันไปแล้ว ทีนี้ก็มาถึงเรื่องของ dependencies แล้วล่ะ ใน Pylons ปกติผมเห็นแต่ คน เค้า ใช้ SQLAlchemy กันทีนี้ก็คือถ้าจะลงก็ใช้ easy_install ได้ easy_install SQLAlchemy ทดลองด้วยการเรียกใช้ Interactive Python Shell แล้วพิมพ์ตาม ต้องได้ผลตามนี้ >import sqlalchemy >sqlalchemy.version ‘0.5.0beta3’ ทีนี้ก็ใช้งาน SQLAlchemy ได้แล้วล่ะ แต่เดี๋ยวก่อน ถ้าเกิดเราไม่รู้ว่าต้องลงอะไรบ้างล่ะ เช่นตอนที่สร้าง project เราเลือกใช้ template อื่นนอกจาก Mako เช่น Jinja เราก็จะต้องมาลง Jinja ด้วย แต่ช้าก่อนถ้าเราลองสั่ง paster ดู จะได้ผลลัพธ์ดังนี้ Traceback (most recent call last): File “/home/wien/bin/paster”, [...]
Pylons, รับน้อง, Routing
Posted September 15, 2008 at Pylons66
รำลึกอดีตให้ฟังหน่อยนึงว่าหลังจากเข้าไปร่วมงาน NWA แล้วผมก็โดนเวทล้างสมองของ Sirn ให้หันมามอง Pylons เลยลองเล่นดูนิดหน่อย แต่ก็ไม่วายโดนรับน้องจนได้ ถ้าเราติดตั้ง Pylons ด้วย easy_install โดยไม่ระบุเวอร์ชัน ตัว Easy_install จะลง เป็นเวอร์ชัน 0.9.7rc1 ให้โดยอัตโนมัติ ซึ่งใน 0.9.7 นั่นมันจะมี Breaking Change อยู่จำนวนหนึ่ง แต่ในวิกิของ Pylons ยังไม่มีข้อมูลนี้ บังเอิญว่าผมดันไปเลือกใช้ 0.9.7 โดยไม่รู้อิโหน่อิเหน่ ค้นวิธีแก้ยังไงก็ไม่เจอ สถานการณ์แบบนี้ผมเรียกว่า ซวย ครับ หนึ่งใน Breaking Change ที่โดนแน่ๆคือเรื่อง Webhelper แต่นั่นเป็นเรื่องที่เราจะไม่พูดกันครั้งนี้ เพราะครั้งนี้เราจะบอกถึง Breaking Change ที่ทำให้ผมเซ้งเซ็งอีกเรื่องแทน นั่นคือ Routing เป็นยังไงมาติดตามดู เนื่องจากเป็นเด็กใหม่ เราก็ต้องทำตัวเป็นเด็กใหม่ที่ดีด้วยการศึกษาตาม Getting started ที่เค้าทำมาให้ หลังจากกำลังภายในของผมเริ่มหมดไปกับการถาม sirn และ vsatayamas ไปแล้ว ผมก็ฟันฝ่าตัว [...]
Welcome to Pylons
Posted September 10, 2008 at Pylons66
ลง Pylons ใช้มันก็ง่ายๆครับ ก่อนอื่นลง Setuptools ให้เรียบร้อยก่อน ใครใคร่ลงแบบไหนก็ตามสบาย ตัวผมเองเลือกลงแบบ virtual python ลองทำดูไม่ยากอะไร พอลง setuptools เสร็จก็ได้เวลาลง pylons ด้วยการพิมพ์ easy_install Pylons==0.9.6.2 เพื่อบอกว่าจะเอา 0.9.6.2 มา แต่ถ้าไม่ระบุเวอร์ชันก็จะได้ล่าสุด ณ ปัจจุบันคือ 0.97rc1 มาแทน รอซักพัก พอเห็นพร้อมท์ขึ้นมาอีกทีก็แปลว่าลงเสร็จแล้ว ลองสร้าง Project ดูด้วย paste paster create -t pylons helloproject ตอบคำถามเรื่อง template กับ SQLAlchemy ผ่านก็จะได้ project มาหนึ่งอันชื่อ helloproject ไม่ต้องพูดพร่ำทำเพลง เปิดขึ้นมารันซะ cd helloproject paster serve —reload development.ini ถ้ารันได้ก็ลองวิ่งไปที่ http://localhost:5000/ ต้องเห็นหน้าตาประมาณนี้ (รูปจาก vee’s blog) ต่อไปสร้าง controller ด้วยคำสั่ง paster controller hello แล้วลองเข้า http://localhost:5000/hello/index ดู ต้องมีคำว่า Hello [...]
Hello world!
Posted September 08, 2008 at Pylons66
Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!