def post(self): uid = self.SESSION['uid'] perm = self.SESSION['perm'] pid = self.get_argument('pid', None) if pid: r = self._edit(pid) else: r = self._save() if uid == pid: s = Staff() s.whois('_id', uid) self.SESSION['nick']=s.nick if s.nick and '@' not in s.nick else s.email self.SESSION['ulogo']=s.avatar if r[0]: self._set_perm(r[1]) if (perm[0][0] in [0x01, 0x02]) and (uid != pid): self.redirect('/space/perm/') else: self.redirect('/space/') else: l = self.PARAMS.keys() + self.ARGS d = {'pid':None, 'pm':PERM_CLASS['NORMAL'], 'warning': r[1]} for n in l:d[n] = None s = Staff() rp = s._api.get(pid) if (not rp[0]) or (not rp[1]): rp = (True, d) rp[1]['isself'] = uid == pid rp[1]['warning'] = r[1] return self.render('perm/new.html', **rp[1])
def post(self): m = self.get_argument('email', None) if m is None:return self.write(json.dumps({'error':'请输入邮箱'})) p = self.get_argument('password', None) if p is None:return self.write(json.dumps({'error':'请输入密码'})) c = self.get_argument('cache', None) s = Staff() r = s.login(m, p) if r[0]: uid = r[1]['_id'] self.SESSION['uid']=uid self.SESSION['nick']=r[1]['nick'] if r[1]['nick'] and '@' not in r[1]['nick'] else r[1].get('email', None) self.SESSION['ulogo']=r[1].get('avatar', None) self.SESSION['perm']=r[1]['pm'] self.redirect('/') else: self.write(json.dumps({'error':r[1]}))
def post(self): m = self.get_argument('email', None) if m is None:return self.render('login.html', **{'warning': '请输入邮箱', 'm':m}) p = self.get_argument('password', None) if p is None:return self.render('login.html', **{'warning': '请输入密码', 'm':m}) c = self.get_argument('cache', None) s = Staff() r = s.login(m, p) if r[0]: uid = r[1]['_id'] self.SESSION['uid']=uid self.SESSION['nick']=r[1]['nick'] if r[1]['nick'] and '@' not in r[1]['nick'] else r[1].get('email', None) self.SESSION['ulogo']=r[1].get('avatar', None) self.SESSION['perm']=r[1]['pm'] self.redirect('/') else: self.render_alert(r[1])
def __init__(self): DB_CON.register([ProjectDoc]) datastore = DB_CON[DB_NAME] col_name = ProjectDoc.__collection__ collection = datastore[col_name] doc = collection.ProjectDoc() self.p = Permission() self.stf = Staff() API.__init__(self, col_name=col_name, collection=collection, doc=doc)
def __init__(self): DB_CON.register([ItemDoc]) datastore = DB_CON[DB_NAME] col_name = ItemDoc.__collection__ collection = datastore[col_name] doc = collection.ItemDoc() self.rpl = Reply() self.stf = Staff() self.alt = Alert() API.__init__(self, col_name=col_name, collection=collection, doc=doc)
def _save(self): uid = self.SESSION['uid'] kwargs = {'belong':uid} params = self.PARAMS.copy() pm = self.get_argument('pm', None) if pm == u'MANAGER': kwargs['level'] = u'manager' params.pop('profession') elif pm == u'EDITOR': kwargs['level'] = u'editor' else: return (False, '请选择权限') for k, v in params.items(): o = self.get_argument(k, None) if o: kwargs[k]=o else: return (False, v) for k in self.ARGS: o = self.get_argument(k, None) if o:kwargs[k]=o s = Staff() return s.register(**kwargs)
def post(self, she): uid = self.SESSION['uid'] perm = self.SESSION['perm'] vpwd = self.get_argument('verifypwd', None) opwd = self.get_argument('oldpwd', None) newpwd = self.get_argument('newpwd', None) repwd = self.get_argument('repwd', None) if newpwd != repwd:return self.render("perm/cpwd.html", pid=she, warning='重复密码不匹配') s = Staff() newpwd = unicode(md5(newpwd).hexdigest()) if vpwd: s.whois("_id", uid) vpwd = unicode(md5(vpwd).hexdigest()) if (s.password != vpwd):return self.render('perm/cpwd.html', pid=she, **{'warning': '密码不正确'}) s._api.change_pwd(she, vpwd, newpwd, repwd) if opwd: s.whois("_id", she) opwd = unicode(md5(opwd).hexdigest()) if (s.password != opwd):return self.render('perm/cpwd.html', pid=she, **{'warning': '密码不正确'}) s._api.change_pwd(she, opwd, newpwd, repwd) if (perm[0][0] in [0x01, 0x02]) and (uid != she): self.redirect('/space/perm/') else: self.redirect('/space/')
class ItemAPI(API): def __init__(self): DB_CON.register([ItemDoc]) datastore = DB_CON[DB_NAME] col_name = ItemDoc.__collection__ collection = datastore[col_name] doc = collection.ItemDoc() self.rpl = Reply() self.stf = Staff() self.alt = Alert() API.__init__(self, col_name=col_name, collection=collection, doc=doc) def save(self, owner, vid, vtype, logo, *works, **kwargs): ''' 保存作品 ''' return super(ItemAPI, self).create(owner=owner, vid=vid, vtype=vtype, logo=logo, works=list(works), **kwargs) def remove(self, id): ''' 删除单个作品 ''' r = self.one(_id=id) if (r[0] and r[1]): vtype, vid = r[1].get('vtype', None), r[1].get('vid', None) super(ItemAPI, self).remove(id) return (True, vtype, vid) return (False, 'item not exist') def edit(self, id, **kwargs): ''' 编辑作品 ''' kwargs['isOverWrite']=True return super(ItemAPI, self).edit(id, **kwargs) def _gnick(self, owner): self.stf.whois('_id', owner) return self.stf.nick def _gename(self, owner): self.stf.whois('_id', owner) return self.stf.engname def _alt_count(self, owner, project): return self.alt._api.list(owner, project)[1] def _output(self, result=[], cuid=DEFAULT_CUR_UID): ''' 作品格式化输出 ''' now = datetime.now() output_map = lambda i: {'eid':i['_id'], 'refer_id':i['added'].get('refer_id', None), 'logo':i.get('logo', None), 'vid':i.get('vid', None), 'vtype':i.get('vtype', None), 'added_id':i['added_id'], 'owner':i['owner'], 'nick':self._gnick(i['owner']), 'is_own':(cuid==i['owner'] if i['owner'] else True), 'works':i['works'], 'cnt':self.rpl._api._count(i['_id']), 'created':self._escape_created(now, i['created']), 'name':i['added'].get('name', None), 'client':i['added'].get('client', None), 'title':i['added'].get('title', None), 'content':i['added'].get('content', None), 'year':i['added'].get('year', None), 'acnt':self._alt_count(cuid, i['_id'])} if isinstance(result, dict): return output_map(result) return map(output_map, result) def get(self, id, cuid=DEFAULT_CUR_UID): ''' 获取单个作品 ''' r = self.one(_id=id) if (r[0] and r[1]):return (True, self._output(result=r[1], cuid=cuid)) return r def copy(self, id, **kwargs): ''' 考呗一个作品 ''' r = self.get(id) if r[0] and r[1]: if r[1].has_key('title') and r[1]['title']: title = r[1]['title'] elif r[1].has_key('name') and r[1]['name']: title = r[1]['name'] return self.save(kwargs['owner'], kwargs['vid'], kwargs['vtype'], r[1]['logo'], *r[1]['works'], refer_id=r[1]['eid'], nick=kwargs['nick'], title=title) return r def page(self, cuid=DEFAULT_CUR_UID, owner=None, vid=None, vtype=None, page=1, pglen=5, cursor=None, limit=20, order_by='added_id', order=-1): ''' 分页显示作品 ''' kwargs = {} if owner:kwargs['owner']=owner if vid:kwargs['vid']=vid if vtype:kwargs['vtype']=vtype kwargs['page']=page kwargs['pglen']=pglen if cursor:kwargs['cursor']=cursor kwargs['limit']=limit kwargs['order_by']=order_by kwargs['order']=order r = super(ItemAPI, self).page(**kwargs) if r[0]: kw = {'result':r[1]} if cuid:kw['cuid']=cuid l = self._output(**kw) return (True, l, r[2]) else: return (False, r[1])
class ProjectAPI(API): def __init__(self): DB_CON.register([ProjectDoc]) datastore = DB_CON[DB_NAME] col_name = ProjectDoc.__collection__ collection = datastore[col_name] doc = collection.ProjectDoc() self.p = Permission() self.stf = Staff() API.__init__(self, col_name=col_name, collection=collection, doc=doc) def save(self, owner, title, description, members, **kwargs): ''' 新建项目 ''' return super(ProjectAPI, self).create(owner=owner, title=title, description=description, members=list(members), **kwargs) def remove(self, id): ''' 删除项目 ''' return super(ProjectAPI, self).remove(id) def edit(self, id, **kwargs): ''' 编辑项目 ''' return super(ProjectAPI, self).edit(id, **kwargs) def _perm(self, uid, pid): return self.p._api.get_owner_value(uid, u'project', cid=pid) def _gnick(self, owner): self.stf.whois('_id', owner) return self.stf.nick def _output(self, result=[], cuid=DEFAULT_CUR_UID): ''' 项目格式化输出 ''' now = datetime.now() output_map = lambda i: {'pid':i['_id'], 'added_id':i['added_id'], 'pm':self._perm(cuid, i['_id']), 'owner':i['owner'], 'nick':self._gnick(i['owner']), 'is_own':(cuid==i['owner'] if i['owner'] else True), 'title':i['title'], 'works':i.get('works', []), 'description':i.get('description', None), 'members':i['members'], 'created':self._escape_created(now, i['created']), 'time_meta':i['created']} if isinstance(result, dict): return output_map(result) return map(output_map, result) def get(self, id, cuid=DEFAULT_CUR_UID): ''' 获取单个项目 ''' r = self.one(_id=id) if (r[0] and r[1]):return (True, self._output(result=r[1], cuid=cuid)) return r def page(self, cuid=DEFAULT_CUR_UID, owner=None, page=1, pglen=5, cursor=None, limit=20, order_by='added_id', order=-1): ''' 分页显示项目 ''' kwargs = {} if owner:kwargs['owner']=owner kwargs['page']=page kwargs['pglen']=pglen if cursor:kwargs['cursor']=cursor kwargs['limit']=limit kwargs['order_by']=order_by kwargs['order']=order r = super(ProjectAPI, self).page(**kwargs) if r[0]: kw = {'result':r[1]} if cuid:kw['cuid']=cuid l = self._output(**kw) return (True, l, r[2]) else: return (False, r[1]) def query(self, cuid=DEFAULT_CUR_UID, owner=None, limit=None, order_by='added_id', order=-1): ''' 显示项目列表 ''' kwargs = {} if owner:kwargs['owner']=owner kwargs['limit']=limit kwargs['order_by']=order_by kwargs['order']=order r = super(ProjectAPI, self).find(**kwargs) if r[0]: kw = {'result':r[1]} if cuid:kw['cuid']=cuid l = self._output(**kw) return (True, l) else: return (False, r[1])