Ejemplo n.º 1
0
    def __init__(self, context, request):
        self.context = context
        self.request = request

        jquery.need()
        modernizr.need()
        bootstrap.need()
Ejemplo n.º 2
0
Archivo: resume.py Proyecto: toway/mba
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,
            })
Ejemplo n.º 3
0
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,
            }
Ejemplo n.º 4
0
Archivo: infobox.py Proyecto: toway/mba
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}
Ejemplo n.º 5
0
Archivo: review.py Proyecto: toway/mba
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)                
                })       
Ejemplo n.º 6
0
Archivo: meetups.py Proyecto: toway/mba
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}
Ejemplo n.º 7
0
Archivo: banners.py Proyecto: toway/mba
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)
Ejemplo n.º 8
0
Archivo: image.py Proyecto: toway/mba
    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}
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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()
Ejemplo n.º 12
0
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
    })
Ejemplo n.º 13
0
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
    })
Ejemplo n.º 14
0
def home(request):
    resp = request.response
    resp.content_type = 'text/html'
    resp.body = '''\
<html>
<head>
</head>
<body>
</body>
</html>
'''
    jquery.need()
    return resp
Ejemplo n.º 15
0
def home(request):
    resp = request.response
    resp.content_type = 'text/html'
    resp.body = b'''
<html>
<head>
</head>
<body>
</body>
</html>
'''
    jquery.need()
    return resp
Ejemplo n.º 16
0
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}
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
Archivo: search.py Proyecto: toway/mba
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
            })
Ejemplo n.º 19
0
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:
Ejemplo n.º 20
0
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()
Ejemplo n.º 21
0
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)
            }
Ejemplo n.º 22
0
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}
Ejemplo n.º 23
0
Archivo: resume.py Proyecto: toway/mba
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),
    })
Ejemplo n.º 24
0
Archivo: person.py Proyecto: toway/mba
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")
Ejemplo n.º 25
0
Archivo: review.py Proyecto: toway/mba
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}
Ejemplo n.º 26
0
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
            }
Ejemplo n.º 27
0
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}
Ejemplo n.º 28
0
Archivo: search.py Proyecto: toway/mba
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, 
        })
Ejemplo n.º 29
0
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}
Ejemplo n.º 30
0
Archivo: meetup.py Proyecto: toway/mba
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}
Ejemplo n.º 31
0
Archivo: widget.py Proyecto: toway/mba
 def serialize(self, field, cstruct, **kw):
     jquery.need()
     jqueryui.need()
     mba_widget.need()
     kw['position'] = self.position
     return TextInputWidget.serialize(self, field, cstruct, **kw)
Ejemplo n.º 32
0
 def needs_jquery():
     jquery.need()
     return render_template('index.html')