Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.93 KB | None | 0 0
  1. params = dict(username = self.user.username,
  2. AttributeError: 'NoneType' object has no attribute 'username'
  3.  
  4. class User(ndb.Model):
  5. username = ndb.StringProperty(required = True)
  6. nickname = ndb.StringProperty(required = True)
  7. pw_hash = ndb.StringProperty(required = True)
  8. profile_img_key = ndb.BlobKeyProperty()
  9.  
  10. @classmethod
  11. def by_id(cls, id):
  12. return cls.get_by_id(id)
  13.  
  14. class Handler(webapp2.RequestHandler):
  15. def initialize(self, *a, **kw):
  16. webapp2.RequestHandler.initialize(self, *a, **kw)
  17. uid = self.read_secure_cookie('user_id')
  18. # all handlers get self.user
  19. self.user = uid and User.by_id( int(uid) )
  20.  
  21. def read_secure_cookie(self, cookie_name):
  22. cookie_val = self.request.cookies.get(cookie_name)
  23. return cookie_val and check_secure_val(cookie_val)
  24.  
  25. class MyInfoHandler(Handler, blobstore_handlers.BlobstoreUploadHandler):
  26. def get(self):
  27. if not self.user:
  28. self.redirect('/blog/login')
  29.  
  30. upload_url = blobstore.create_upload_url('/blog/myinfo')
  31.  
  32. # required variables
  33. params = dict(username = self.user.username,
  34. upload_url = upload_url
  35. )
  36.  
  37. # check for optional variables
  38. if self.user.nickname:
  39. params['nickname'] = self.user.nickname
  40. if self.user.profile_img_key:
  41. params['profile_img_url'] = '/blog/serve/%s' % self.user.profile_img_key
  42.  
  43. # fill in input fields with params
  44. self.render('myinfo.html', **params)
  45.  
  46. def post(self):
  47. if not self.user:
  48. self.redirect('/blog/login')
  49.  
  50. self.nickname = self.request.get('nickname')
  51.  
  52. params = dict(username = self.user.username,
  53. nickname = self.nickname,
  54. )
  55.  
  56. upload_files = self.get_uploads('profile_img')
  57. if upload_files:
  58. blob_key = upload_files[0].key()
  59. params['profile_img_url'] = '/blog/serve/%s' % blob_key
  60.  
  61. error_found = False
  62. if not error_found:
  63. update_entity(self.user, **params)
  64. params['help'] = "Successfully updated!"
  65. else:
  66. params['help'] = "Check your information again"
  67.  
  68. self.render('myinfo.html', **params)
  69.  
  70. def update_entity(ent, **params):
  71. for name, value in params.items():
  72. setattr(ent, name, value)
  73. ent.put()
  74.  
  75. class ServeHandler(Handler, blobstore_handlers.BlobstoreDownloadHandler):
  76. def get(self, resource):
  77. resource = str(urllib.unquote(resource))
  78. blob_info = blobstore.BlobInfo.get(resource)
  79. self.send_blob(blob_info)
  80.  
  81. <form class="form-horizontal" action="{{ upload_url }}" role="form" method="post" enctype="multipart/form-data">
  82. <h2>My info</h2>
  83.  
  84. <div class="form-group">
  85. <div class="col-xs-offset-3">
  86. <img src="{{ profile_img_url }}" />
  87. </div>
  88. </div>
  89. <!-- profile image upload -->
  90. <div class="form-group">
  91. <label class="control-label col-xs-3">Profile image:</label>
  92. <div class="col-xs-3">
  93. <input class="btn btn-default btn-file" type="file" name="profile_img">
  94. </div>
  95. </div>
  96. <div class="form-group">
  97. <label class="control-label col-xs-3">Username:</label>
  98. <label class="col-xs-3">{{username}}</label>
  99. <span class="help-block error">{{username_error}}</span>
  100. </div>
  101. <div class="form-group">
  102. <label class="control-label col-xs-3">Nickname:</label>
  103. <div class="col-xs-3">
  104. <input class="form-control" type="text" name="nickname" value="{{nickname}}">
  105. </div>
  106. <span class="help-block error">{{nickname_error}}</span>
  107. </div>
  108. <div class="form-group">
  109. <div class="col-xs-offset-3 col-xs-2">
  110. <input class="btn btn-lg btn-primary" type="submit" name="submit" value="Update">
  111. <div class="help-block">{{help}}</div>
  112. </div>
  113. </div>
  114. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement