From 28e9710fb37d58fbe75b67c625eec3597d22b8f1 Mon Sep 17 00:00:00 2001 From: gurusharan2 Date: Mon, 17 Apr 2017 13:02:55 +0530 Subject: [PATCH] /blog added --- template.py | 239 ++++++++++++++++++++++-------------- template.pyc | Bin 17526 -> 17785 bytes templates/comment_edit.html | 2 +- templates/front.html | 18 +-- templates/login.html | 2 +- templates/permalink.html | 4 +- templates/post_edit.html | 13 ++ templates/signup.html | 2 +- templates/welcome.html | 2 +- 9 files changed, 174 insertions(+), 108 deletions(-) create mode 100644 templates/post_edit.html diff --git a/template.py b/template.py index 37887a3..83e137d 100644 --- a/template.py +++ b/template.py @@ -18,46 +18,56 @@ jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), autoescape=True) + def make_salt(): return ''.join(random.choice(string.letters) for x in xrange(5)) + def make_pw_hash(name, pw): salt = make_salt() h = hashlib.sha256(name + pw + salt).hexdigest() return '%s,%s' % (h, salt) + def valid_pw(name, pw, h): - ###Your code here + # Your code here salt = h.split(",")[1] if h.split(",")[0] == hashlib.sha256(name + pw + salt).hexdigest(): return True else: return False -def check_pw_hash(username,password,db_password): - salt=db_password.split(",")[1] + +def check_pw_hash(username, password, db_password): + salt = db_password.split(",")[1] pw = hashlib.sha256(username + password + salt).hexdigest() if db_password.split(",")[0] == pw: return True else: return False + def hash_str(s): - return hmac.new(secret,s).hexdigest() + return hmac.new(secret, s).hexdigest() + def make_secure_val(s): - return "%s|%s" %(s,hash_str(s)) + return "%s|%s" % (s, hash_str(s)) + def check_secure_val(h): val = h.split('|')[0] if h == make_secure_val(val): return val + def valid_username(username): return USER_RE.match(str(username)) + def check_username(username): - db_username = db.GqlQuery("select * from User where username = :username",username = username) + db_username = db.GqlQuery( + "select * from User where username = :username", username=username) name = db_username.get() if name: return 1 @@ -72,36 +82,45 @@ def valid_password(password): def valid_email(email): return email_re.match(email) -def login(username,password): - db_username = db.GqlQuery("select * from User where username =:username",username = username) - name = db_username.get() - if name: - if check_pw_hash(username,password,name.password): - return True - else: - return False + +def login(username, password): + db_username = db.GqlQuery( + "select * from User where username =:username", username=username) + name = db_username.get() + if name: + if check_pw_hash(username, password, name.password): + return True else: return False + else: + return False + + class Comment_db(db.Model): - post_id = db.IntegerProperty(required = True) - posted_by = db.StringProperty(required = True) - comment = db.TextProperty(required = True) + post_id = db.IntegerProperty(required=True) + posted_by = db.StringProperty(required=True) + comment = db.TextProperty(required=True) created = db.DateTimeProperty(auto_now_add=True) + + class User(db.Model): - username = db.StringProperty(required = True) - password = db.StringProperty(required = True) - email = db.StringProperty(required = True) + username = db.StringProperty(required=True) + password = db.StringProperty(required=True) + email = db.StringProperty(required=True) + class Blog(db.Model): title = db.StringProperty(required=True) post = db.TextProperty(required=True) created = db.DateTimeProperty(auto_now_add=True) - posted_by = db.StringProperty(required = True) + posted_by = db.StringProperty(required=True) likes = db.IntegerProperty(required=True) + class Like_db(db.Model): - post_id = db.IntegerProperty(required = True) - liked_by = db.StringProperty(required = True) + post_id = db.IntegerProperty(required=True) + liked_by = db.StringProperty(required=True) + class Handler(webapp2.RequestHandler): @@ -115,14 +134,16 @@ def render_str(self, template, **params): def render(self, template, **kw): self.response.out.write(self.render_str(template, **kw)) - def set_secure_cookie(self ,name ,val): - cookie_val=make_secure_val(val) + def set_secure_cookie(self, name, val): + cookie_val = make_secure_val(val) self.response.headers.add_header('Set-Cookie', - '%s=%s; Path=/' - %(name, cookie_val)) - def read_secure_cookie(self ,name): + '%s=%s; Path=/' + % (name, cookie_val)) + + def read_secure_cookie(self, name): cookie_val = self.request.cookies.get(name) return cookie_val and check_secure_val(cookie_val) + def check_login(self): username = self.request.cookies.get("username") if username == "None" or username == "" or username == None: @@ -130,6 +151,7 @@ def check_login(self): else: return True + class Signup(Handler): def get(self): @@ -142,8 +164,8 @@ def post(self): verify = self.request.get('verify') email = self.request.get('email') - params = dict(username = username, - email = email) + params = dict(username=username, + email=email) if not valid_username(username): params['error_username'] = "That's not a valid username." @@ -151,7 +173,7 @@ def post(self): distinct_username = check_username(username) if distinct_username == 1: - distinct_username = 0; + distinct_username = 0 params['error_username'] = "this username already exist" have_error = True @@ -170,42 +192,48 @@ def post(self): self.render('signup.html', **params) else: username = str(username) - password = str(make_pw_hash(username,password)) - a = User(username = username,password= password,email=email) + password = str(make_pw_hash(username, password)) + a = User(username=username, password=password, email=email) a.put() - username = self.set_secure_cookie("username",username) - self.redirect('/welcome') + username = self.set_secure_cookie("username", username) + self.redirect('/blog/welcome') class Welcome(Handler): + def get(self): username = self.read_secure_cookie('username') if username: - self.render('welcome.html', username = username) + self.render('welcome.html', username=username) else: - self.redirect('/signup') + self.redirect('/blog/signup') + class Login(Handler): + def get(self): self.render("login.html") def post(self): username = self.request.get('username') password = self.request.get('password') - if login(username,password): - self.set_secure_cookie("username",str(username)) - self.redirect('/welcome') + if login(username, password): + self.set_secure_cookie("username", str(username)) + self.redirect('/blog/welcome') else: - self.render("login.html",error = "invalid login") + self.render("login.html", error="invalid login") + class Logout(Handler): def get(self): self.response.headers.add_header('Set-Cookie', - 'username = ""; Path=/') + 'username = ""; Path=/') self.render("logout.html") -#Mainpage blog +# Mainpage blog + + class Mainpage(Handler): def get(self): @@ -217,40 +245,45 @@ def get(self): login = "logout" else: login = "login" - self.render("front.html",posts=posts,login = login,comment = comment ) + self.render("front.html", posts=posts, login=login, comment=comment) + class Like(Handler): - def get(self,post_id): + + def get(self, post_id): a = int(post_id) key = db.Key.from_path('Blog', int(post_id), parent=None) post = db.get(key) current_user = self.read_secure_cookie("username") if current_user: if post.posted_by == current_user: - self.render("like.html",error = "cannot like your own post") + self.render("like.html", error="cannot like your own post") else: - all_likes = db.GqlQuery("select * from Like_db where post_id =:post_id",post_id=int(post_id)) + all_likes = db.GqlQuery( + "select * from Like_db where post_id =:post_id", post_id=int(post_id)) flag = 0 if post.likes != 0: likes = all_likes.get() if likes.liked_by == current_user: - flag == 1 - self.render("like.html",error = "cannot like twice") + flag == 1 + self.render("like.html", error="cannot like twice") else: - a=Like_db(post_id=int(post_id),liked_by=current_user) + a = Like_db( + post_id=int(post_id), liked_by=current_user) a.put() post.likes += 1 post.put() - self.redirect("/") + self.redirect("/blog") else: - a=Like_db(post_id=int(post_id),liked_by=current_user) + a = Like_db(post_id=int(post_id), liked_by=current_user) a.put() post.likes += 1 post.put() - self.redirect("/") + self.redirect("/blog") else: self.render("signup.html") + class Newpage(Handler): def render_front(self, title="", post="", error=""): @@ -260,7 +293,7 @@ def get(self): if self.check_login(): self.render_front() else: - self.redirect("/login") + self.redirect("/blog/login") def post(self): title = self.request.get("title") @@ -269,109 +302,129 @@ def post(self): username = posted_by.split('|')[0] if title and post: post = post.replace('\n', '
') - b=0 - a = Blog(title =title, post=post,posted_by=username,likes=b) + b = 0 + a = Blog(title=title, post=post, posted_by=username, likes=b) a.put() a_id = a.key().id() self.redirect('/blog/'+str(a_id)) else: - self.render_front(title=title, post=post, error="enter the valid details") + self.render_front( + title=title, post=post, error="enter the valid details") + class Comment_submit(Handler): - def post(self,post_id): + def post(self, post_id): current_user = self.read_secure_cookie("username") if current_user == "": - self.redirect("/signup") + self.redirect("/blog/signup") else: comment = self.request.get('comment_textarea') if comment: - a = Comment_db(post_id=int(post_id),posted_by=current_user,comment = comment) + a = Comment_db( + post_id=int(post_id), posted_by=current_user, comment=comment) a.put() - self.redirect("/") + self.redirect("/blog") class Comment_edit(Handler): - def get(self,comment_id): + + def get(self, comment_id): a = int(comment_id) key = db.Key.from_path('Comment_db', int(comment_id), parent=None) comment_user = db.get(key) if comment_user.posted_by == self.read_secure_cookie("username"): - self.render("comment_edit.html" ,a= comment_user) + self.render("comment_edit.html", a=comment_user) else: - self.render("like.html",error = "sorry! but you can edit only your post") + self.render( + "like.html", error="sorry! but you can edit only your post") - def post(self,comment_id): + def post(self, comment_id): comment = self.request.get('comment_edit') a = int(comment_id) key = db.Key.from_path('Comment_db', int(comment_id), parent=None) comment_user = db.get(key) comment_user.comment = comment comment_user.put() - self.redirect("/") + self.redirect("/blog") + class Comment_delete(Handler): - def get(self,comment_id): + + def get(self, comment_id): a = int(comment_id) key = db.Key.from_path('Comment_db', int(comment_id), parent=None) comment_user = db.get(key) if comment_user.posted_by == self.read_secure_cookie("username"): comment_user.delete() + self.render("like.html", error="comment delete") + self.redirect("/blog") else: - self.render("like.html",error = "sorry! but you can edit only your post") + self.render( + "like.html", error="sorry! but you can edit only your post") + class Post_edit(Handler): - def get(self,post_id): + + def get(self, post_id): a = int(post_id) key = db.Key.from_path('Blog', int(post_id), parent=None) post_user = db.get(key) if post_user.posted_by == self.read_secure_cookie("username"): - self.render("comment_edit.html" ,a= post_user) + self.render("post_edit.html", a=post_user) else: - self.render("like.html",error = "sorry! but you can edit only your post") + self.render( + "like.html", error="sorry! but you can edit only your post") - def post(self,post_id): + def post(self, post_id): post = self.request.get('comment_edit') a = int(post_id) key = db.Key.from_path('Blog', int(post_id), parent=None) post_id = db.get(key) post_id.post = post post_id.put() - self.redirect("/") + self.redirect("/blog") + class Post_delete(Handler): - def get(self,Post_id): + + def get(self, Post_id): a = int(Post_id) key = db.Key.from_path('Blog', int(Post_id), parent=None) comment_user = db.get(key) if comment_user.posted_by == self.read_secure_cookie("username"): comment_user.delete() + self.render("like.html", error = "post deleted") + self.redirect("/blog") else: - self.render("like.html",error = "sorry! but you can edit only your post") + self.render( + "like.html", error="sorry! but you can edit only your post") + class Peralink(Handler): - def get(self,a_id): + + def get(self, a_id): a = int(a_id) key = db.Key.from_path('Blog', int(a_id), parent=None) post = db.get(key) if not post: self.write("error 404") else: - self.render("permalink.html",posts=post) - - -app = webapp2.WSGIApplication([('/', Mainpage), - ('/Newpage', Newpage), - ('/blog/([0-9]+)',Peralink), - ('/signup', Signup), - ('/welcome',Welcome), - ('/login',Login), - ('/logout',Logout), - ('/like/([0-9]+)',Like), - ('/comment/([0-9]+)',Comment_submit), - ('/comment_edit/([0-9]+)',Comment_edit), - ('/delete/([0-9]+)',Comment_delete), - ('/Post_edit/([0-9]+)',Post_edit), - ('/Post/([0-9]+)',Post_delete) - ], + self.render("permalink.html", posts=post) + + +app = webapp2.WSGIApplication([('/blog', Mainpage), + ('/blog/Newpage', Newpage), + ('/blog/([0-9]+)', Peralink), + ('/blog/signup', Signup), + ('/blog/welcome', Welcome), + ('/blog/login', Login), + ('/blog/logout', Logout), + ('/blog/like/([0-9]+)', Like), + ('/blog/comment/([0-9]+)', Comment_submit), + ('/blog/comment_edit/([0-9]+)', Comment_edit), + ('/blog/delete/([0-9]+)', Comment_delete), + ('/blog/Post_edit/([0-9]+)', Post_edit), + ('/blog/Post/([0-9]+)', Post_delete) + ], debug=True) diff --git a/template.pyc b/template.pyc index e96844661435f91772e8658a2d574e2be5c27278..9ed8a6f4200d1f8634832597377fa73002440a62 100644 GIT binary patch delta 1867 zcmbtVUrbwN6u+mmx4Ug=8MU|VEgR)ewWF}|U!a2(g)CVNu;>wZYR)8d~*l)wMa`Fj3z#Lw7tix$s5?A4@((QBtoX0`e zO<2Yb_d`JJkY0D3B1pQI*9irJo;|#v$LrD$@UHTaXH6#*GF|Z4*u)4f?0x|6<9z9d z@D5ga6@k1mnxDO6@ICgFjheqBIGqZI-;`a0HIytR_(}Of9!{v@D%`-0inRGhvev8C z%2=fYu#Stq7~E2R_k9KM8!As7hYiK&zo0Xv49qNZ+h+GIK@{1gO_l$)?*jIPqE5vBtjXJxqW>+Rk{>#qxO%y z%H6IDmFt~vKq<{D znFfkXFR)B4E>qXYRA+e^7oWY?OzDs&s&ynBb+;NC3;MU!Y_k5#M` UOV~=>dMq{^>at_9%K*B+0g!Z%+yDRo delta 1659 zcmah}ZERCz6uzgQyZv0Lz5No|#>TGJ(XkHLD64jkL?LYB;t-ioD=SO4t_9k$$qb8; z33fWsVch)#S6RsBDg%5J70r))t6l{aBO3(OV_Gb-7f$P z;9<`Xut(juq7xv6r@i080d@Ko86b!AzHgv_bJBSzs`vT*07oz#_yVS|J9q<*VRz`b zZ-fIn2rLHCD4J-QMI(L|x&kNE*TWwhOf{s#x!eALGL~1(!wkmiRFjp3Ki1{oEqthc z)cz(1F>nyT%k>NJ4u%}J;)RA8-Me@7Ik@nAW6AzD+nF>wb-FPG@FBj`l!c3`Y0Y~8 zSMY=8L$IKB$g>7Z3CJvpAKh_7{+zwq2n29IJ-F$y(2@*c?d_nwjlb}>NZx*pjrCO2 zLw7a-2>4>lj#pnkINKr#

F7rb|gNXhHY#ZY{$` zh6#o&fgZMxKf4&FaH_3O3h{qy>06+KI-u6Df{tB}U$yNqA17fzO~wYHRtv(JE0YY5 z;-y3Y!*Lg0Zuh}a{JwpcubBgJsTX++5NkNF{%n(;B{!W?$*n4)yrIE&f^Cuv{S3^P zauOd8CGnLFCTizvn-6=QB;gwVmtJX6M0w*5n8Y`_2Ha`kF_SP-BRoM#?R@7?m}uYkUql9p#P#u=zMkrMMB8GxN8Z0SMU0z znz}FVZm?6O7n=oL$*qva2a}`Ir%3v6#a&~o$fG9Oo0&M69?ob(F8T;v*{D3&+S0i< za(j`JjTW=R`SF9g?L;QGzc7|5R&KX$LtcgPk{%+L9nDlicsRuV!r<6gCSR(EC0(pZ zQ<+j$^roxWds(RQw%nK}v-)ZGbFhksfx`Dw;p?Dqw<%m%g^5#6VY%mY7f)QX sSVNCdpSz-{O<-HlOpi5a3WlYqR3kaHRVRfcm*kaf+OlJ6OAw5I0TyvpYXATM diff --git a/templates/comment_edit.html b/templates/comment_edit.html index 082eb41..d0e53cc 100644 --- a/templates/comment_edit.html +++ b/templates/comment_edit.html @@ -8,6 +8,6 @@ - cancel + cancel \ No newline at end of file diff --git a/templates/front.html b/templates/front.html index bf5d7b5..bcb1c02 100644 --- a/templates/front.html +++ b/templates/front.html @@ -30,10 +30,10 @@

my blog

@@ -50,12 +50,12 @@

{{ i.title }}

{{ i.post | safe}}

likes: {{ i.likes }}


-
+
@@ -75,8 +75,8 @@

comments

{% if i.key().id() == j.post_id %}

{{ j.comment }}

posted by - {{j.posted_by}}

- edit comment - delete comment + edit comment + delete comment {% endif %} {% endfor %} diff --git a/templates/login.html b/templates/login.html index 2c20e20..e0930d3 100644 --- a/templates/login.html +++ b/templates/login.html @@ -21,6 +21,6 @@

login

{{ error }}

-
not a user ?
+
not a user ?
\ No newline at end of file diff --git a/templates/permalink.html b/templates/permalink.html index ac2af94..126446c 100644 --- a/templates/permalink.html +++ b/templates/permalink.html @@ -21,8 +21,8 @@ } -

my blog

-

add a new post

+

my blog

+

add a new post


diff --git a/templates/post_edit.html b/templates/post_edit.html new file mode 100644 index 0000000..2578f70 --- /dev/null +++ b/templates/post_edit.html @@ -0,0 +1,13 @@ + + + + + + +
+ + +
+ cancel + + \ No newline at end of file diff --git a/templates/signup.html b/templates/signup.html index d02bae1..8d6bf89 100644 --- a/templates/signup.html +++ b/templates/signup.html @@ -65,7 +65,7 @@

sign up

-
already a user ?
+
already a user ?
\ No newline at end of file diff --git a/templates/welcome.html b/templates/welcome.html index 6b82881..fabcc51 100644 --- a/templates/welcome.html +++ b/templates/welcome.html @@ -5,6 +5,6 @@

welcome {{ username }}

-logout +logout