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("学校不存在或不是全称")
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)
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)