Example #1
0
 def post(self):
     prop = self.get_argument("property",None)
     proptype = self.get_argument("propertype",None)
     if proptype == "username":
         user_id = get_id_by_name(self.db, self.rd, prop)
         if user_id:
             self.write("已被占用")
         else: 
             self.write("可以使用")
     if proptype == "email":
         user_id = self.db.get("select id from fd_People where email = %s", prop)
         if user_id:
             self.write("该邮箱已被人注册")
         else: 
             self.write("可以使用")
     if proptype == "domain":
         user_id = self.db.get("select id from fd_People where domain = %s", prop)
         if user_id:
             self.write("已被占用")
         else: 
             self.write("可以使用")
     if proptype == "college":
         college_id = self.db.get("select id from fd_College where name = %s", prop)
         if college_id:
             self.write("可以注册")
         else: 
             self.write("学校不存在或不是全称")
Example #2
0
 def post(self):
     user = self.get_argument("user",None)
     actto = self.get_argument("actto",None)
     acttype = self.get_argument("acttype",None)
     user_id = get_id_by_name(self.db, self.rd, user)
     if len(actto) < 8 or not user_id or int(user_id) != self.current_user.id:
         raise tornado.web.HTTPError(405)
     acttype = int(acttype)
     actto = decode(actto)
     # don't remove in db now because data is not got wholy in redis,just mark it
     if acttype == 1:
         self.db.execute("update fd_Status set status_ = 1 where id = %s", actto)
     elif acttype == 2:
         self.db.execute("update fd_Note set status_ = 2 where id = %s", actto)
     elif acttype == 3:
         self.db.execute("update fd_Link set status_ = 2 where id = %s", actto)
     elif acttype == 4:
         doc_id = self.db.get("select doc_id,name,user_id from fd_Doc where id = %s", actto)
         if not doc_id:
             raise tornado.web.HTTPError(500)
         tld = doc_id.name.split(".").pop()
         prepath = "/data/static/usrdoc/%s/%s.%s" % (doc_id.user_id, doc_id.doc_id, tld)
         jpgpath = "/work/Dormforge/static/usrdoc/%s/%s.jpg" % (doc_id.user_id, doc_id.doc_id)
         swfpath = "/work/Dormforge/static/usrdoc/%s/%s.swf" % (doc_id.user_id, doc_id.doc_id)
         if os.path.exists(prepath) and os.path.exists(jpgpath) and os.path.exists(swfpath):
             os.remove(prepath)
             os.remove(jpgpath)
             os.remove(swfpath)
             self.db.execute("update fd_Doc set status_ = 2 where id = %s", actto)
     del_activity(self.rd, user_id, acttype, actto)
Example #3
0
 def post(self, setting):
     template_values = {}
     errors = 0
     username_error = 0
     domain_error = 0
     template_values['setting'] = setting
     if setting == 'account':
         page_title = '账户设置'
         username_error = 0
         username_error_messages = ['',
                 u'一个月之内只能修改一次用户名',
                 u'请输入用户名',
                 u'用户名不能超过16个字符',
                 u'用户名不能少于2个字符',
                 u'该用户名已被占用',
                 ]
         username = self.get_argument("name", None)
         lastuc = self.db.get("select chtimedelta from fd_Change where user_id = %s and chtype = 1", self.current_user.id)
         if lastuc:
             lastdelta = lastuc.chtimedelta
             timedelta = lastdelta - int(time.time())
             if username != self.current_user.name and timedelta < 2592000: #24*60*60*30
                 errors = errors + 1
                 username_error = 1
         if username_error != 1:
             if len(username) == 0:
                 errors = errors + 1
                 username_error = 2
             elif len(username) > 16:
                 errors = errors + 1
                 username_error = 3
             elif len(username) < 2:
                 errors = errors + 1
                 username_error = 4
             else:
                 if username != self.current_user.name:
                     user_id = get_id_by_name(self.db, self.rd, username)
                     if user_id:
                         errors = errors + 1
                         username_error = 5
                     else:
                         self.rd.delete("u:name:%s" % self.current_user.name)
                         self.rd.delete("u:%s" % self.current_user.id)
                         self.db.execute("update fd_People set name = %s where id = %s", username, self.current_user.id)
                         pubdate = time.strftime('%y-%m-%d %H:%M', time.localtime())
                         pubdelta = int(time.time())
                         if lastuc:
                             self.db.execute("update fd_Change set chtime = %s,chtimedelta = %s where user_id = %s and chtype = %s", pubdate, pubdelta, self.current_user.id, 1)
                         else:
                             self.db.execute("insert into fd_Change set chtime = %s, chtimedelta = %s, user_id = %s, chtype = %s", pubdate, pubdelta, self.current_user.id, 1)
                         self.current_user.name = username
         domain_error_messages = ['',
                 u'一个月之内只能修改一次个性域名',
                 u'请输入个性域名',
                 u'个性域名不能超过16个字符',
                 u'个性域名不能少于2个字符',
                 u'个性域名不符合规则,请使用a-zA-Z0-9_',
                 u'该个性域名已被占用']
         domain = self.get_argument("domain", None)
         lastdc = self.db.get("select chtimedelta from fd_Change where user_id = %s and chtype = 2", self.current_user.id)
         if lastdc:
             lastdelta = lastdc.chtimedelta
             timedelta = lastdelta - int(time.time())
             if domain != self.current_user.domain and timedelta < 2592000: #24*60*60*30
                 errors = errors + 1
                 domain_error = 1
         if domain_error != 1:
             if len(domain) == 0:
                 errors = errors + 1
                 domain_error = 2
             elif len(domain) > 16:
                 errors = errors + 1
                 domain_error = 3
             elif len(domain) < 2:
                 errors = errors + 1
                 domain_error = 4
             else:
                 if domain != self.current_user.domain:
                     p = re.compile(r"([a-zA-Z0-9_])+", re.IGNORECASE)
                     if not p.search(domain):
                         errors = errors + 1
                         domain_error = 5
                     else:
                         domain_id = self.db.get("select id from fd_People where domain = %s", domain)
                         if domain_id:
                             errors = errors + 1
                             domain_error = 6
                         else:
                             self.db.execute("update fd_People set domain = %s where id = %s", domain, self.current_user.id)
                             pubdate = time.strftime('%y-%m-%d %H:%M', time.localtime())
                             pubdelta = int(time.time())
                             if lastdc:
                                 self.db.execute("update fd_Change set chtime = %s,chtimedelta = %s where user_id = %s and chtype = %s", pubdate, pubdelta, self.current_user.id, 2)
                             else:
                                 self.db.execute("insert into fd_Change set chtime = %s, chtimedelta = %s, user_id = %s, chtype = %s", pubdate, pubdelta, self.current_user.id, 2)
                             self.current_user.domain = domain
         template_values['username'] = self.current_user.name
         template_values['domain'] = self.current_user.domain
         template_values['username_error'] = username_error
         template_values['domain_error'] = domain_error
         if username_error:
             template_values['newname'] = username
             template_values['username_error_message'] = username_error_messages[username_error]
         if domain_error:
             template_values['newdomain'] = domain
             template_values['domain_error_message'] = domain_error_messages[domain_error]
     elif setting == 'avatar':
         page_title = '头像设置'
         avatar_error = 0
         avatar_error_messages = ['',
                 u'请选择图片',
                 u'图片格式不正确',
                 u'图片不能大于2MB',
                 ]
         if not self.request.files:
             errors = errors + 1
             avatar_error = 1
         else:
             f = self.request.files['avatar'][0]
             if f['filename'].split(".").pop().lower() not in ["jpg", "png", "gif", "jpeg"]:
                 errors = errors + 1
                 avatar_error = 2
             else:
                 if len(f['body']) > 1024*1024*2:
                     errors = errors + 1
                     avatar_error = 3
                 else:
                     picsize = ["s", "m", "l", "xl"]
                     picsizedict = {"xl":150,"l":100,"m":50,"s":25}
                     rawname = f['filename']
                     tempdstname = ''.join([str(int(time.time())), '.', rawname.split('.').pop()])
                     dstname = ''.join([self.current_user.uuid_, '.jpg'])
                     shard = str(self.current_user.id % 40)
                     thbname = "thumb_" + tempdstname
                     tf = tempfile.NamedTemporaryFile()
                     tf.write(f['body'])
                     tf.seek(0)
                     for ps in picsize:
                         img = Image.open(tf.name)
                         imgsize = picsizedict[ps]
                         img.thumbnail((imgsize,imgsize),resample=1)
                         imgpath = "/work/Dormforge/static/usrimg/%s" % shard
                         img = img.convert("RGB")
                         try:
                             img.save("%s/%s_%s" % (imgpath, ps, dstname))
                         except IOError:
                             os.makedirs(imgpath)
                             img.save("%s/%s_%s" % (imgpath, ps, dstname))
                     tf.close()
         if errors != 0:
             template_values['errors'] = errors
             template_values['avatar_error'] = avatar_error
             template_values['avatar_error_message'] = avatar_error_messages[avatar_error]
             template_values['page_title'] = page_title
             template_values['id'] = self.current_user.id
             template_values['uuid'] = self.current_user.uuid_
             return self.render("settings.html", template_values=template_values)
     elif setting == 'passwd':
         page_title = '修改密码'
         #password verify
         password_error = 0
         password_error_messages = ['',
             u'请输入当前密码',
             u'请输入新密码',
             u'请输入新密码确认',
             u'密码长度不能超过 32 个字符',
             u'两次输入的密码不一致',
             u'当前密码不正确',
             ]
         old = self.get_argument("old", None)
         new = self.get_argument("new", None)
         confirm = self.get_argument("confirm", None)
         if not old or len(old) == 0:
             errors = errors + 1
             password_error = 1
         else:
             if not new or len(new) == 0:
                 errors = errors + 1
                 password_error = 2
             else:
                 if not confirm or len(confirm) == 0:
                     errors = errors + 1
                     password_error = 3
                 else:
                     old = old.strip()
                     new = new.strip()
                     confirm = confirm.strip()
                     if len(confirm) > 32:
                         errors = errors + 1
                         password_error = 4
                     else:
                         if confirm != new:
                             errors = errors + 1
                             password_error = 5
                         else:
                             if not validate_password(self.current_user.password.decode('hex'), old):
                                 errors = errors + 1
                                 password_error = 6
         if errors != 0:
             template_values['old'] = old
             template_values['new'] = new
             template_values['confirm'] = confirm
             template_values['errors'] = errors
             template_values['password_error'] = password_error
             template_values['password_error_message'] = password_error_messages[password_error]
             template_values['page_title'] = page_title
             return self.render("settings.html", template_values=template_values)
         if new != old:
             hashed = encrypt_password(new).encode('hex')
             self.db.execute("update fd_People set password = %s where id = %s", hashed, self.current_user.id)
     template_values['errors'] = errors
     if errors == 0:
         template_values['success'] = 1
     template_values['page_title'] = page_title
     template_values['id'] = self.current_user.id
     template_values['uuid'] = self.current_user.uuid_
     return self.render("settings.html", template_values=template_values)