def __init__(self, context, request): self.context = context self.request = request jquery.need() modernizr.need() bootstrap.need()
def resume_view(context, request): jquery.need() user = get_user(request) if not user: raise UserNotFount() if "add_resume" in request.POST: title = request.POST['resume_title'] if title.strip() != '': resume = resources.Resume(title=title, user=user) #DBSession.add(resume) #DBSession.flush() #return HTTPFound(location='/resume_edit2/%d' % resume.id) elif "operator" in request.POST: ops = request.POST['operator'] print ops if ops == 'del_resume': id = request.POST['operator_id'] resume = DBSession.query(resources.Resume).get(id) if resume and resume.user_id == user.id: DBSession.delete(resume) return wrap_user(request,{ 'resumes':user.resumes, 'pcs':user.position_items, })
def job_detail_view(context, request): jquery.need() pos_id = request.matchdict['id'] pos_id = int(pos_id) user = get_user(request) interest = "" if user.interest: interest = user.interest industry = "" if user.industry: industry = user.industry if interest == "" and industry == "": pos_like = DBSession.query(Position).all()[0:5] else: pos_like = DBSession.query(Position).join(CompanyInfo).filter( or_(Position.title.like(interest) , CompanyInfo.industry.like(industry)) )[0:5] pos = DBSession.query(Position).get(pos_id) return { 'pos': pos, 'pos_like': pos_like, }
def get_messages(type, context, request): jquery.need() cur_user = get_user(request) if not cur_user: return HTTPFound(location="/login?came_from=%s" % request.url) messages = [] if type == 'all_messages': messages = DBSession.query(Message).filter_by(reciever_id=cur_user.id).all() elif type == 'system_messages': messages = DBSession.query(Message).filter( and_( Message.reciever_id==cur_user.id, or_(Message.type==0 , Message.type==1 , Message.type==10) )).all() elif type == 'friend_messages': messages = DBSession.query(Message).filter_by(reciever_id=cur_user.id, type=2).all() elif type == 'view_invitation_person': messages = DBSession.query(Message).filter_by(reciever_id=cur_user.id, type=11).all() elif type == 'view_invitation_meetup': messages = DBSession.query(Message).filter_by(reciever_id=cur_user.id, type=12).all() elif type == 'view_invitation_code': messages = view_or_generate_inviation_code(user) return {'type': type, 'messages': messages}
def view_review(context, request): jquery.need() contextbody = jinja2.Markup(context.body) user = get_user(request) if request.POST : if user is None: request.session.flash(u"请先登陆..","info") came_from = request.url return HTTPFound("/login?came_from=%s" % came_from) if 'submit' in request.POST: comment_content = request.params.get("review-comment-input") comment = Comment() comment.type = comment.TYPE_MEETUP_REVIEW comment.user_id = user.id comment.document_id = context.id # ACTION!!!: There is a SQL injection risk here! should be prevented comment.content = comment_content DBSession.add( comment) DBSession.flush() return wrap_user2(request, {'context':context, 'contextbody': contextbody, 'comments_count': len(context.comments) })
def view_my_meetups(context, request): user = get_user(request) jquery.need() my_participate = None if user is not None: my_participate = DBSession.query(Participate).filter_by(user_id=user.id).limit(5) return {'my_meetups': my_participate}
def admin_home_banners(context, request): jquery.need() user = get_user(request) if not user: return HTTPFound(location="/login?came_from=%s" % request.url) if 'method' in request.POST: # mt stands for meetup-type try: method = request.POST['method'] # del-banner if method == 'del-banner': mt_id = int(request.POST['banner-id']) to_op_mt = DBSession.query(Banner).filter_by(id=mt_id).first() banner_id = request.POST.get('banner-id', None) if not banner_id : return RetDict(errcode=RetDict.ERR_CODE_WRONG_PARAM) try: banner_id = int(banner_id) except ValueError,e: return RetDict(errcode=RetDict.ERR_CODE_WRONG_PARAM) banner = DBSession.query(Banner).filter_by(id=banner_id).first() if not banner: return RetDict(errcode=RetDict.ERR_CODE_WRONG_PARAM) DBSession.delete(banner) msg = u"成功删除BANNER %d" % banner_id request.session.flash(msg, 'success') return RetDict(retval=msg) except Exception,ex: err_msg = "错误:%s" % ex request.session.flash(err_msg, 'danger') return RetDict(errmsg=err_msg)
def view(self): """ :result: Empty dictionary to be handed to the image.pt template for rendering. :rtype: dict """ jquery.need() return {'image_id': self.context.id}
def query_infomations(request): jquery.need() # user = get_user(request) pageid = int(request.matchdict.get('id',1) ) retobj = view_info_entry(pageid, INFO_NUM_PER_PAGE) retobj.update({'urlprifix': '/infomations'}) return retobj
def job_companyinfo_view(context, request): jquery.need() try: id = request.params['id'] id = int(id) company = DBSession.query(CompanyInfo).get(id) except: pass return {'company':company}
def update(self): multiple_inheritance_js.need() p2_js.need() cookies_js.need() jquery.need() jqueryui.need() window_js.need() windowmanager_js.need() SetmanagerLibrary.need() xmlDOM.need() SetmanagerLayoutResources.need() html5_upload.need()
def view_position_list(request, page_index=1, num_per_page=10): jquery.need() start = (page_index-1) * num_per_page count = DBSession.query(Position).count() positions = DBSession.query(Position).slice(start, num_per_page).all() return wrap_user2(request, { 'positions': positions, 'total_count': count, 'total_page': count/ num_per_page + 1, 'page_index': page_index })
def view_company_list(request, page_index=1, num_per_page=10): jquery.need() start = (page_index-1) * num_per_page count = DBSession.query(CompanyInfo).count() companies = DBSession.query(CompanyInfo).slice(start, num_per_page).all() return wrap_user2(request, { 'companies': companies, 'total_count': count, 'total_page': count/ num_per_page + 1, 'page_index': page_index })
def home(request): resp = request.response resp.content_type = 'text/html' resp.body = '''\ <html> <head> </head> <body> </body> </html> ''' jquery.need() return resp
def home(request): resp = request.response resp.content_type = 'text/html' resp.body = b''' <html> <head> </head> <body> </body> </html> ''' jquery.need() return resp
def admin_meetup_particinpate_view(context, request): id = request.matchdict['id'] meetup = DBSession.query(Act).get(id) if meetup is None: return Response(u"不存在的活动") if 'delete' in request.POST: # 取消选中的人参加活动 todel = request.POST.getall('participate_check') principals = get_principals() for mid in todel: # print 'mid:%s, len mid:%d'% ( mid, len(mid) ) to_cancel_user = principals.get(int(mid)) # if to_cancel_user in meetup.parts: # meetup.parts.remove(to_cancel_user) enrolled_user = DBSession.query(Participate).filter_by(user_id=int(mid), act_id=meetup.id).first() if enrolled_user is not None : # print meetup DBSession.delete(enrolled_user) request.session.flash(u"已取消选中人报名活动!" , 'success') DBSession.flush() elif 'approve_meetup_auth' in request.POST: # 添加活动认识 toauth = request.POST.getall('participate_check') for mid in toauth: to_auth_user = DBSession.query(MbaUser).filter_by(id=mid).first() print to_auth_user if to_auth_user is not None: to_auth_user.auth_meetup = True request.session.flash(u"已成功给‘%s’添加活动认证" % to_auth_user.real_name , 'success') DBSession.flush() jquery.need() return {'meetup': meetup}
def retail2_view(context, request): schema = Person().bind(request=request) cstruct = schema.serialize() rendered_form = None jquery.need() jquery_form.need() if 'Test' in request.POST: # hear is ajax test print request.POST.items() return Response( '<div>hurr</div>', headers=[('X-Relocate', '/'), ('Content-Type','text/html')] ) return cstruct
def search_information(request, page_index=1, num_per_page=10): jquery.need() start = (page_index-1) * num_per_page vdict = ['', 'infomation', 'act', 'position'] vmodel = [Infomation, Act, Position] q = request.GET.get('q', '') v = request.GET.get('v', '1,2,3') if 'q' in request.POST: q = request.POST['q'] qs = ['%'+qq+'%' for qq in q.split()] vs = [vdict[int(vv)] for vv in v.split(',') if vv != ""] f = DBSession.query(Document).filter(or_(*[Document.type == vv for vv in vs])) if q: f = f.filter( or_(*[Document.title.like(term) for term in qs])) #print 'f', f count = f.count() results = f.slice(start, num_per_page).all() ''' count1 = DBSession.query(Document).filter(Document.type == 'infomation') \ .filter(or_(*[Document.title.like(term) for term in qs])).count() count2 = DBSession.query(Document).filter(Document.type == 'act') \ .filter(or_(*[Document.title.like(term) for term in qs])).count() count3 = DBSession.query(Document).filter(Document.type == 'position') \ .filter(or_(*[Document.title.like(term) for term in qs])).count() ''' counts = [] for model in vmodel: model_f = DBSession.query(model) if q: model_f = model_f.filter(or_(*[Document.title.like(term) for term in qs])) counts.append(model_f.count()) return wrap_user2(request, { 'infos': results , 'count': count , 'count1': counts[0] , 'count2': counts[1] , 'count3': counts[2] , 'total_count': count , 'total_page': count/ num_per_page + 1 , 'page_index': page_index })
def view_meetup_types(context, request): jquery.need() user = get_user(request) if not user: return HTTPFound(location="/login?came_from=%s" % request.url) err_msg = u"" if 'method' in request.POST: # mt stands for meetup-type try: method = request.POST['method'] # add-mt, del-mt, mdf-mt if method == 'add-mt': new_type_title = request.POST['mt-title'] DBSession.add( MeetupType(title=new_type_title)) request.session.flash((u"成功添加:'%s'" % new_type_title), 'success') else: mt_id = int(request.POST['mt-id']) to_op_mt = DBSession.query(MeetupType).filter_by(id=mt_id).first() mt_title = request.POST['mt-title'] if not to_op_mt: raise Exception(u"错误的参数") if method == 'del-mt': DBSession.delete(to_op_mt) request.session.flash(_(u"成功删除'%s'" % mt_title), 'success') elif method == 'mdf-mt': to_op_mt.title = mt_title request.session.flash(_(u"修改成功!"), 'success') else: err_msg = u"错误的方法" request.session.flash(_(u"错误的参数")) except Exception,ex: err_msg = "%s" % ex request.session.flash(_(u"错误:'%s'" % err_msg), 'danger') finally:
def handle(obj, event): resource.framework.need() resource.favicon.need() resource.style.need() jquery.need() resource.javascript.need() resource.framework_js.need() resource.elastic_textarea.need() resource.datatables_js.need() resource.tabletools_js.need() resource.tabletools_css.need() resource.tabletools_js_zeroclipboard.need() resource.qtip_js.need() resource.qtip_css.need() resource.bootstrap_button.need() resource.bootstrap_dropdown.need()
def formtest2_view(context, request): class Schema1(colander.Schema): name1=colander.SchemaNode( colander.String(), #widget = deform.widget.TextInputWidget(category='structural') widget=SchoolWidget() ) jquery.need() jquery_form.need() schema1 = Schema1() form = FormCustom(schema1, template='form2' , buttons=('submit',),formid="form1") html = form.render() return { 'form': jinja2.Markup(html) }
def view_my_meetups(context, request): user = get_user(request) jquery.need() generated = DBSession.query(InvitationCode).filter_by(sender_id=user.id).all() if not generated: # TODO: 根据用户组的权限生成相应数量的注册码,暂时为10个 # print user.groups count = 10 toadd = [] import hashlib import datetime def generate_invitation_code(ii): # TODO: F**k! I don't care about the code collision right now! code = str(user.id * 100 + ii) strcode = hashlib.md5(code).hexdigest() return strcode[:6].upper() now = datetime.datetime.now(tz=None) for i in range(count): code = generate_invitation_code(i) expiration = now + datetime.timedelta(days = 7*(i+1)) toadd.append( InvitationCode(code=code, sender_id=user.id, receiver_id=None, expiration=expiration ) ) DBSession.add_all(toadd) DBSession.flush() generated = DBSession.query(InvitationCode).filter_by(sender_id=user.id).all() return {'invitationcode': generated}
def resume_edit2(context, request): jquery.need() jqueryui.need() jquery_form.need() #deform_js.need() timepicker.need() ui_bootstrap_theme.need() resume_edit_js.need() user = get_user(request) if not user: raise UserNotFount() resume_id = request.matchdict['id'] resume_id = int(resume_id) person_schema = PersonInfo().bind(request=request) if "person_info" in request.POST: try: person_info = person_schema.deserialize(request.POST) person2user(user, person_info) person_info['__result'] = 0 except colander.Invalid as e: print e # "1" means validate error in serve person_info = {} person_info['__result'] = 1 return Response(json.dumps(person_info, cls=MyEncoder)) elif "education" in request.POST: return edit_education(request, user, resume_id) elif "experience" in request.POST: return edit_job(request, user, resume_id) elif "project" in request.POST: return edit_project(request, user, resume_id) resume = DBSession.query(resources.Resume).filter_by(user=user, id=resume_id).first() return wrap_user(request,{ 'resume_id':resume_id, 'person_info':person_schema.serialize(user2person(user)), 'edu':EducationsWidget(resume_id, resume.educations), 'exp':JobsWidget(resume_id, resume.jobs), 'prj': ProjectWidget(resume_id, resume.projects), })
def view_person(request): jquery.need() jqueryui.need() jquery_form.need() curr_user = get_user(request) if not curr_user: return HTTPFound(location="/login?came_from=%s" % request.url) if "hd_id" in request.POST: try: post = request.POST userid = int(post['hd_id']) user = DBSession.query(Student).get(userid) if curr_user.id != user.id: return Response("ERROR") #user.email = post['email'] user.phone = post['phone'] user.company = post['company'] user.industry = post['industry'] city = DBSession.query(City).filter_by(name=post['city_name']).first() if city: user.city_id = city.id else: user.city_name = post['city_name'] user.school = post['school'] user.special_skills = [i.strip() for i in post['special_skills'].split(",") ] user.interests = [i.strip() for i in post['interests'].split(",") ] user.between = [i.strip() for i in post['between'].split(",") ] user.introduction = post['introduction'] user.real_name = post['real_name'] user.title = post['title'] person_info_widget = PersonInfoWidget(user, cur_user=curr_user) return Response(person_info_widget.render()) except Exception,ex: print "Error:%s" % ex # raise ex return Response("ERROR")
def view_review_entry(page_index=1, num_per_page=10): jquery.need() queried = DBSession.query(Review) count = queried.count() start = (page_index-1) * num_per_page result = DBSession.query(Review).slice(start,num_per_page) part = [ { 'id': it.id, 'name': it.name, 'title': it.title } for it in result ] for i in range(len(part)): part[i]['index'] = i+1 total_page = count / num_per_page + 1 return {'reviews': part, 'total_count': count , 'total_page':total_page, 'num_per_page':num_per_page, 'page_index': 1}
def job_view(context, request): jquery.need() user = get_user(request) if not user: raise UserNotFount() #TODO one user one resume if not user.resume: user.resume = Resume(title=u'默认简历') DBSession.flush() pos_normals = DBSession.query(Position).order_by(Position.salary.desc())[0:5] pos_huntings = DBSession.query(Position).order_by(Position.create_date.desc())[0:5] interest = "" if user.interest: interest = user.interest industry = "" if user.industry: industry = user.industry if interest == "" and industry == "": pos_like = DBSession.query(Position).all()[0:5] else: pos_like = DBSession.query(Position).join(CompanyInfo).filter( or_(Position.title.like(interest) , CompanyInfo.industry.like(industry)) )[0:5] pos_apply = DBSession.query(Position).join(PositionResume).filter(PositionResume.resume_id==user.id) api = MbaTemplateAPI(context, request) manager_info = api.render_template('manager_info.jinja2', pos_apply = pos_apply, collects = user.positions); return { 'api':api, 'pos_normals':pos_normals, 'pos_huntings':pos_huntings, 'pos_like': pos_like, 'manager_info':manager_info, 'resume_id': user.resume.id }
def view_info_entry(page_index=1, num_per_page=10): jquery.need() queried = DBSession.query(Infomation).filter_by(status=Infomation.STATUS_PUBLIC) count = queried.count() start = (page_index-1) * num_per_page result = DBSession.query(Infomation).filter_by(status=Infomation.STATUS_PUBLIC).slice(start,num_per_page) part = [ { 'id': it.id, 'name': it.name, 'title': it.title } for it in result ] for i in range(len(part)): part[i]['index'] = i+1 total_page = count / num_per_page + 1 return {'infomations': part, 'total_count': count , 'total_page':total_page, 'num_per_page':num_per_page, 'page_index': 1}
def search_huoban(request, page_index=1, num_per_page=10): jquery.need() start = (page_index-1) * num_per_page q = request.GET.get('q', '') if 'q' in request.POST: q = request.POST['q'] city = request.GET.get('c','') if 'c' in request.POST: city = request.POST['c'] hangye = request.GET.get('h','') if 'h' in request.POST: hangye = request.POST['h'] qs = ['%'+qq+'%' for qq in q.split() if qq != ""] cities = ['%'+cc+'%' for cc in city.split(',') if cc != ""] hangs = ['%'+hh+'%' for hh in hangye.split(',') if hh != ""] f = DBSession.query(Student).join(City) if len(qs) > 0: qf = [Student.real_name.like(term) for term in qs] + [Student.name.like(term) for term in qs] f = f.filter(or_(*qf)) if len(hangs) > 0: f = f.filter(or_(*[Student.industry.like(term) for term in hangs])) if len(cities) > 0: f = f.filter(or_(*[City.name.like(term) for term in cities])) #print 'f', f count = f.count() results = f.slice(start, num_per_page).all() return wrap_user2(request, { 'students': results, 'count': count, })
def i_authentications(request): user = get_user(request) if not user : return HTTPFound('/login?came_from=%s' % request.url) jquery.need() # bootstrap.need() if 'auth_type' in request.POST: auth_type = request.POST.get('auth_type') if auth_type == 'auth_expert': user.auth_expert = user.AUTH_STATUS_REQ_FOR_AUTH reason = request.POST.get("apply-reason","") oldreason = DBSession.query(ExpertAuthReq).filter_by(user_id=user.id).all() for r in oldreason: DBSession.delete(r) req = ExpertAuthReq(user_id=user.id, reason=reason) DBSession.add(req) elif auth_type == 'auth_info': user.auth_info = user.AUTH_STATUS_REQ_FOR_AUTH authentications = [ ( 'auth_info', u'资料认证', u'管理员确认后即可获得该认证', user.auth_info ), ( 'auth_meetup', u'活动认证', u'成功参加一次志友汇活动即可获得该认证', user.auth_meetup ), ( 'auth_friend', u'校友认证', u'与10名校友成功交换名片即可获得该认证', user.auth_friend ), ( 'auth_honesty', u'诚信认证', u'资料认证、活动认证、校友认证任意两项或以上通过即可获得该认证', user.auth_honesty ), ( 'auth_expert', u'专家认证', u'管理员确认的专家可获得该认证', user.auth_expert ) ] return {'authentications': authentications}
def view_meetup_entry(page_index=1, num_per_page=10): jquery.need() count = DBSession.query(Act).filter(Act.status!=Act.STATUS_DELETED).count() start = (page_index-1) * num_per_page result = DBSession.query(Act).filter(Act.status!=Act.STATUS_DELETED).slice(start,num_per_page) part = [ { 'id': it.id, 'name': it.name, 'title': it.title, 'status': it.status, 'headline': it.headline } for it in result ] for i in range(len(part)): part[i]['index'] = i+1 total_page = count / num_per_page + 1 return {'meetups': part, 'total_count': count , 'total_page':total_page, 'num_per_page':num_per_page, 'page_index': 1}
def serialize(self, field, cstruct, **kw): jquery.need() jqueryui.need() mba_widget.need() kw['position'] = self.position return TextInputWidget.serialize(self, field, cstruct, **kw)
def needs_jquery(): jquery.need() return render_template('index.html')