Example #1
0
def create_job(user_id):
    """Used by users to create job posts"""
    if not g.user:
        flash("Access unauthorized.", "danger")
        return redirect("/")
    if g.user and session[CURR_USER_KEY] == user_id:
        genres = Genre.query.all()
        regions = Region.query.all()
        # list of tuples for selectfield
        region_list = [(i.id, i.city) for i in regions]
        genre_list = [(j.id, j.genre) for j in genres]
        form = JobForm()
        #passing selectfield choice into the form
        form.region_id.choices = region_list
        form.genre_id.choices = genre_list
        if form.validate_on_submit():
            job = JobPost(title=form.title.data,
                          description=form.description.data,
                          pay=form.pay.data,
                          date=form.date.data,
                          region_id=form.region_id.data,
                          user_id=user_id,
                          genre_id=form.genre_id.data)

            db.session.add(job)
            db.session.commit()
            return redirect(f"/users/{user_id}")
        return render_template("jobs/job-form.html", form=form)
    else:
        flash("Access unauthorized.", "danger")
        return redirect("/")
Example #2
0
def add_job(request):
    try:
        form = JobForm(request.POST or None)
        if form.is_valid():
            required_skills = set(form.cleaned_data["required_skills"])
            optional_skills = set(form.cleaned_data["optional_skills"]) - required_skills
            with transaction.atomic():
                employer = Employer.objects.get(user=request.user)
                job = Job(
                    employer=employer,
                    description=form.cleaned_data["description"],
                    category=form.cleaned_data["category"],
                    years_of_experience=form.cleaned_data["years_of_experience"],
                    other=form.cleaned_data["other"],
                )
                job.save()
                for skill in required_skills:
                    skill = RequiredJobSkill(job=job, skill=skill)
                    skill.save()
                if optional_skills:
                    for skill in optional_skills:
                        skill = OptionalJobSkill(job=job, skill=skill)
                        skill.save()
            match_job.delay(job.id)

            messages.success(request, "Job saved successfully. You'll receive matching candidates soon")
            return HttpResponseRedirect("/")
        return render(request, "jobs/add_job.html", {"form": form})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
Example #3
0
def create_job(request, job_code=None, template = 'job/edit_job.html'):
    jobForm = None 
    JobLocationInlineFormSet = inlineformset_factory(Job, JobLocation, max_num=1, extra=1)

    if request.method == 'POST':        
        jobForm = JobForm(data=request.POST, user=request.user)
        if jobForm.is_valid():
            job = jobForm.save(commit=False)
            formset = JobLocationInlineFormSet(data=request.POST, instance=job)
            if formset.is_valid:
                job = jobForm.save()
                formset.save()

                job_created.send(sender=job.__class__, job=job)
                return redirect(reverse('employer_dashboard'))
        else:
            formset = JobLocationInlineFormSet(data=request.POST)
            formset.is_valid
    else:
        jobForm = JobForm(user=request.user)
        employer = EmployerProfile.objects.get(user=request.user)
        formset = JobLocationInlineFormSet()
        for subform in formset:
            subform.initial = {
                'business_name': employer.business_name,
                'business_address1': employer.business_address1,
                'business_address2': employer.business_address2,
                'city': employer.city,
                'zip_code': employer.zip_code,
            }
    return render_to_response(template,
                              {'form' : jobForm,
                               'formset' : formset, } ,
                              context_instance=RequestContext(request))
Example #4
0
def new_job():
    form = JobForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        job = Jobs()
        job.job = form.title.data
        job.team_leader = form.leader_id.data
        job.work_size = form.work_size.data
        job.collaborators = form.collaborators.data
        job.is_finished = form.is_finished.data
        job.creator = current_user.id

        category_id = form.category.data
        category = session.query(CategoryJob).filter(
            CategoryJob.id == category_id).first()
        job.categories.append(category)
        session.commit()

        try:
            current_user.jobs.append(job)
        except:
            pass
        session.merge(current_user)
        session.commit()
        return redirect('/')
    return render_template('new_job.html', title='New job', form=form)
Example #5
0
def add_job():
    form = JobForm()
    if form.validate_on_submit():
        session = db_session.create_session()
        job = Jobs()
        job.job = form.title.data
        job.team_leader = form.leader_id.data
        job.work_size = form.work_size.data
        job.collaborators = form.collaborators.data
        job.is_finished = form.is_finished.data
        job.creator = current_user.id

        category_id = form.category.data
        category = session.query(CategoryJob).filter(
            CategoryJob.id == category_id).first()
        job.categories.append(category)
        session.commit()

        try:
            current_user.jobs.append(job)
        except sqlalchemy.orm.exc.DetachedInstanceError:
            pass
        except sqlalchemy.exc.InvalidRequestError:
            pass
        session.merge(current_user)
        session.commit()
        return redirect('/')
    return render_template('add_job.html', title='Adding a job', form=form)
Example #6
0
def job(request, profile_id):
    if request.method == "POST":
        form = JobForm(request.POST, request.FILES)
        if form.is_valid():
            # found_user = Profile.objects.get(psrn=profile_id)
            a = form.save()
            a.psrn = profile_id

            print "yo"
            a.save()
            aform = AcadsForm()
            args = {}
            args.update(csrf(request))
            args["form"] = aform
            args["profile_id"] = profile_id
            return render_to_response("acads.html", args)
    else:
        form = JobForm()

    args = {}
    args.update(csrf(request))

    args["form"] = form
    args["profile_id"] = profile_id
    return render_to_response("job.html", args)
Example #7
0
    def post(self, request, *args, **kwargs):
        form = JobForm(request.POST, request.FILES)
        if form.is_valid():
            now = datetime.datetime.now()
            name = request.POST['name']
            description = request.POST['description']
            interval = request.POST['interval']
            interval_options = request.POST['interval_options']
            arguments = request.POST['arguments']
            active = False
            try:
                request.POST['active']
                active = True
            except:
                pass

            file = request.FILES['file']
            file_content = file.read()
            file_name = str(now.year) + str(now.month) + str(now.day) + str(now.hour) + str(now.minute) + str(now.second) + str(now.microsecond) + name.replace(' ', '-') + '.py'
            f = open(BASE_DIR + '/job_files/' + file_name, 'w')
            f.write(file_content)
            f.close()

            #Save job
            new_job = Job(name=name, description=description, interval=interval, interval_options=interval_options, arguments=arguments, active=active, file_name=file_name)
            new_job.save()

            res = 'Job created'

        return render_to_response(self.template_name, locals(), context_instance=RequestContext(request))
Example #8
0
def edit_job(request, job_code, template = 'job/edit_job.html'):
    form = None 
    job = Job.objects.get(job_code=job_code)
    JobLocationInlineFormSet = inlineformset_factory(Job, JobLocation, max_num=1, extra=1)
    
    ''' Check if user has permission to edit this job '''
    if job.employer.user != request.user:
        redirect(view_job, job_code)  
    
    if request.method == 'POST':
        form = JobForm(data=request.POST, user=request.user, instance=job)
        formset = JobLocationInlineFormSet(data=request.POST, instance=job)
        if formset.is_valid():
            formset.save()

            if form.is_valid():
                job = form.save()
                return redirect(reverse('employer_dashboard'))
    else:
        form = JobForm(instance=job, user=request.user)
        formset = JobLocationInlineFormSet(instance=job)
    return render_to_response(template, 
                              {'form' : form,
                               'formset': formset,
                               'job_code' : job_code}, 
                              context_instance=RequestContext(request))
Example #9
0
def add(request):
    #########################################################################################
    # 用户操作行为安全保护

    # 计时器
    timer = time.time() - request.session.get('time_stamp', 0)

    # 危险操作次数
    action_times = request.session.get('action_times', 0)

    # 错误次数是否大于最大
    if action_times >= 1:
        if not check_verify(request):
            return render('verify.html',
                          locals(),
                          context_instance=RequestContext(request))
        else:

            # 重置标志位
            reset(request)
    #########################################################################################
    current_page = 'jobs'

    # 检查用户选择的城市是否存在
    if check_city(request.GET.get('city_name', False)):
        request.session['job_city'] = request.GET.get('city_name')
    else:
        return index(request=request)

    # 打印表单
    if request.method == 'GET':
        form = JobForm()
        return render('jobs_add.html',
                      locals(),
                      context_instance=RequestContext(request))

    # 处理提交数据
    form = JobForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        new_job = Job()
        new_job.title = data['title']
        new_job.city = request.session.get('job_city', '北京')
        new_job.company = data['company']
        new_job.website = data['website']
        new_job.email = data['email']
        new_job.content = data['content']
        try:
            new_job.save()
        except Exception, e:
            return HttpResponse('保存招聘信息时出现错误:' + str(e))
        else:
            set(request)
            msg = '提交成功,正在等待管理员审核...'
            # 发送信号
            new_job_was_post.send(sender=new_job.__class__, job=new_job)
        return render('posted.html',
                      locals(),
                      context_instance=RequestContext(request))
Example #10
0
def add(request):
    #########################################################################################
    # 用户操作行为安全保护

    # 计时器
    timer = time.time() - request.session.get('time_stamp',0)

    # 危险操作次数
    action_times = request.session.get('action_times',0)

    # 错误次数是否大于最大
    if action_times >= 1:
        if not check_verify(request):
            return render('verify.html',locals(),context_instance=RequestContext(request))
        else:

            # 重置标志位
            reset(request)
    #########################################################################################
    current_page = 'jobs'

    # 检查用户选择的城市是否存在
    if check_city(request.GET.get('city_name',False)):
        request.session['job_city'] = request.GET.get('city_name')
    else:
        return index(request=request)

    # 打印表单
    if request.method == 'GET':
        form = JobForm()
        return render('jobs_add.html',locals(),context_instance=RequestContext(request))

    # 处理提交数据
    form = JobForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        new_job = Job()
        new_job.title = data['title']
        new_job.city = request.session.get('job_city','北京')
        new_job.company = data['company']
        new_job.website = data['website']
        new_job.email = data['email']
        new_job.content = data['content']
        try:
            new_job.save()
        except Exception,e:
            return HttpResponse('保存招聘信息时出现错误:'+str(e))
        else:
            set(request)
            msg = '提交成功,正在等待管理员审核...'
            # 发送信号
            new_job_was_post.send(
                sender = new_job.__class__,
                job = new_job
            )
        return render('posted.html',locals(),context_instance=RequestContext(request))
Example #11
0
def edit(job_id):
    job_obj = Job.query.get_or_404(job_id)
    if job_obj.company_id != current_user.id and not current_user.is_admin():
        abort(404)
    form = JobForm(obj=job_obj)
    if form.validate_on_submit():
        form.update_job(job_obj)
        flash('职位更新成功', 'success')
        return redirect_job_index()
    return render_template('job/edit.html', form=form, job_id=job_id)
Example #12
0
def index():
    form = JobForm()
    if request.method == "POST" and form.validate_on_submit():
        obj = create_request(**form.data)
        flash('Application has been added successfully')
        if obj:
            return redirect(url_for('content_list'))
    return render_template('index.html', **locals())

    print "+++++", form.errors
Example #13
0
    def get(self, request, request_job_id):
        '''
            Method for getting a Job based on the id provided.
        '''
        params = dict((key, val) for key, val in request.QUERY_PARAMS.iteritems())
        params['request_job_id'] = request_job_id
        form = JobForm(params)

        if not form.is_valid():
            raise BadRequestException()

        return Response(form.submit(request))
Example #14
0
    def get(self, request, request_job_id):
        '''
            Method for getting a Job based on the id provided.
        '''
        params = dict(
            (key, val) for key, val in request.QUERY_PARAMS.iteritems())
        params['request_job_id'] = request_job_id
        form = JobForm(params)

        if not form.is_valid():
            raise BadRequestException()

        return Response(form.submit(request))
Example #15
0
def edit_job(id):
    form = JobForm()
    if request.method == "GET":
        session = db_session.create_session()
        if current_user.id == 1:
            job = session.query(Jobs).filter(Jobs.id == id).first()
        else:
            job = session.query(Jobs).filter(
                Jobs.id == id, Jobs.creator == current_user.id).first()
        if job:
            form.title.data = job.job
            form.leader_id.data = job.team_leader
            form.work_size.data = job.work_size
            form.collaborators.data = job.collaborators
            form.is_finished.data = job.is_finished
            form.category.data = job.categories[0].id
        else:
            abort(404)
    if form.validate_on_submit():
        session = db_session.create_session()
        if current_user.id == 1:
            job = session.query(Jobs).filter(Jobs.id == id).first()
        else:
            job = session.query(Jobs).filter(
                Jobs.id == id, Jobs.creator == current_user.id).first()
        if job:
            job.job = form.title.data
            job.team_leader = form.leader_id.data
            job.work_size = form.work_size.data
            job.collaborators = form.collaborators.data
            job.is_finished = form.is_finished.data

            category_id = form.category.data
            category = session.query(CategoryJob).filter(
                CategoryJob.id == category_id).first()
            job.categories[0] = category
            session.commit()

            try:
                current_user.jobs.append(job)
            except sqlalchemy.orm.exc.DetachedInstanceError:
                pass
            except sqlalchemy.exc.InvalidRequestError:
                pass

            session.commit()
            return redirect('/')
        else:
            abort(404)
    return render_template('add_job.html', title='Job edit', form=form)
Example #16
0
def add_jobs(request):
    emp = employee.get_employee_by_user(userid=request.user.id)
    if request.method == 'POST':
        form = JobForm(request.POST, cid=emp.company.id)
        if form.is_valid():
            try:
                job = form.save()
                return render(request, 'job_detail.html', {'job': job})
            except Exception as ex:
                print ex
    else:
        form = JobForm(cid=emp.company.id)
    return render(
        request,
        'add_job.html',
        {'form': form, 'cid': emp.company.id, 'eid': emp.id})
Example #17
0
def multi_molecule(request, string):
    if request.REQUEST.get("random"):
        amount = int(request.REQUEST.get("random"))
        string = ','.join(name_expansion(string, rand=amount))

    job_form = JobForm.get_form(request, "{{ name }}")
    mol_form = MoleculeForm(request.REQUEST)

    job_is_valid = job_form.is_valid(request.method)
    mol_is_valid = mol_form.is_valid()

    if job_is_valid and mol_is_valid:
        return job_form.get_results(request, string, mol_form)
    elif request.is_ajax():
        job_form_html = render_crispy_form(job_form,
                                           context=RequestContext(request))
        mol_form_html = render_crispy_form(mol_form,
                                           context=RequestContext(request))
        a = {
            "success": False,
            "job_form_html": job_form_html,
            "mol_form_html": mol_form_html,
        }
        return HttpResponse(json.dumps(a), content_type="application/json")

    c = {
        "pagename": string,
        "job_form": job_form,
        "mol_form": MoleculeForm(),
        "gjf": "checked",
        "autoflip": request.REQUEST.get("autoflip"),
    }
    return render(request, "chem/multi_molecule.html", c)
Example #18
0
def molecule_detail(request, molecule):
    job_form = JobForm.get_form(request, molecule)
    mol_form = MoleculeForm(request.REQUEST)

    job_is_valid = job_form.is_valid(request.method)
    mol_is_valid = mol_form.is_valid()

    if job_is_valid and mol_is_valid:
        return job_form.get_results(request, molecule, mol_form)
    elif request.is_ajax():
        job_form_html = render_crispy_form(job_form,
                                           context=RequestContext(request))
        mol_form_html = render_crispy_form(mol_form,
                                           context=RequestContext(request))
        a = {
            "success": False,
            "job_form_html": job_form_html,
            "mol_form_html": mol_form_html,
        }
        return HttpResponse(json.dumps(a), content_type="application/json")

    a = get_molecule_info_status(molecule)
    a["job_form"] = job_form
    a["mol_form"] = MoleculeForm()
    return render(request, "chem/molecule_detail.html", a)
Example #19
0
def multi_molecule(request, string):
    if request.REQUEST.get("random"):
        amount = int(request.REQUEST.get("random"))
        string = ','.join(name_expansion(string, rand=amount))

    job_form = JobForm.get_form(request, "{{ name }}")
    mol_form = MoleculeForm(request.REQUEST)

    job_is_valid = job_form.is_valid(request.method)
    mol_is_valid = mol_form.is_valid()

    if job_is_valid and mol_is_valid:
        return job_form.get_results(request, string, mol_form)
    elif request.is_ajax():
        job_form_html = render_crispy_form(
            job_form, context=RequestContext(request))
        mol_form_html = render_crispy_form(
            mol_form, context=RequestContext(request))
        a = {
            "success": False,
            "job_form_html": job_form_html,
            "mol_form_html": mol_form_html,
        }
        return HttpResponse(json.dumps(a), content_type="application/json")

    c = {
        "pagename": string,
        "job_form": job_form,
        "mol_form": MoleculeForm(),
        "gjf": "checked",
        "autoflip": request.REQUEST.get("autoflip"),
    }
    return render(request, "chem/multi_molecule.html", c)
Example #20
0
def molecule_detail(request, molecule):
    job_form = JobForm.get_form(request, molecule)
    mol_form = MoleculeForm(request.REQUEST)

    job_is_valid = job_form.is_valid(request.method)
    mol_is_valid = mol_form.is_valid()

    if job_is_valid and mol_is_valid:
        return job_form.get_results(request, molecule, mol_form)
    elif request.is_ajax():
        job_form_html = render_crispy_form(
            job_form, context=RequestContext(request))
        mol_form_html = render_crispy_form(
            mol_form, context=RequestContext(request))
        a = {
            "success": False,
            "job_form_html": job_form_html,
            "mol_form_html": mol_form_html,
        }
        return HttpResponse(json.dumps(a), content_type="application/json")

    a = get_molecule_info_status(molecule)
    a["job_form"] = job_form
    a["mol_form"] = MoleculeForm()
    return render(request, "chem/molecule_detail.html", a)
Example #21
0
def edit_job(job_id):
    job = JobModel.get_by_id(int(job_id))
    if not job:
        flash(_('no such job'), 'error')
        return redirect(url_for('exhibitor.jobs'))
    form = JobForm(request.form, obj=job)
    if request.method == 'POST' and form.validate():
        try:
            job.title = form.title.data
            job.type = form.type.data
            job.enterprise = ndb.key(form.enterprise.data)
            job.content = form.content.data
            job.put()
            flash('job modified successfully!', 'success')
        except CapabilityDisabledError:
            flash('fail to modify job', 'error')
    return render_template('exhibitors/edit_job.html', form=form, job=job)
Example #22
0
def new_job():
    form = JobForm(request.form)
    enterprises = EnterpriseModel.query()
    form.enterprises.choices = [(e.key.urlsafe(), e.name) for e in enterprise]
    if request.method == 'POST' and form.validate():
        user = flask_login.current_user
        job = JobModel(title=form.title.data,
                       type=form.type.data,
                       enterprise=ndb.Key(form.enterprise.data),
                       content=form.content.data,
                       poster=user.key)
        try:
            job.put()
            return redirect(url_for('exhibitor.jobs'))
        except CapabilityDisabledError:
            return render_template('exhibitors/new_job.html', form=form)
    return render_template('exhibitors/new_job.html', form=form)
Example #23
0
def edit_job(job_id):
    job = JobModel.get_by_id(int(job_id))
    if not job:
        flash(_('no such job'), 'error')
        return redirect(url_for('exhibitor.jobs'))
    form = JobForm(request.form, obj=job)
    if request.method == 'POST' and form.validate():
        try:
            job.title = form.title.data
            job.type = form.type.data
            job.enterprise = ndb.key(form.enterprise.data)
            job.content = form.content.data
            job.put()
            flash('job modified successfully!', 'success')
        except CapabilityDisabledError:
            flash('fail to modify job', 'error')
    return render_template('exhibitors/edit_job.html', form=form, job=job)
Example #24
0
def new_job():
    form = JobForm(request.form)
    enterprises = EnterpriseModel.query()
    form.enterprises.choices = [(e.key.urlsafe(), e.name) for e in enterprise]
    if request.method == 'POST' and form.validate():
        user = flask_login.current_user
        job = JobModel(
            title = form.title.data,
            type = form.type.data,
            enterprise = ndb.Key(form.enterprise.data),
            content = form.content.data,
            poster = user.key
        )
        try:
            job.put()
            return redirect(url_for('exhibitor.jobs'))
        except CapabilityDisabledError:
            return render_template('exhibitors/new_job.html', form=form)
    return render_template('exhibitors/new_job.html', form=form)
def new_job():
    form = JobForm()
    if form.validate_on_submit():
        session = db.create_session()
        job = models.jobs.Jobs(job=form.job.data,
                               work_size=form.work_size.data,
                               start_date=form.start_date.data,
                               end_date=form.end_date.data,
                               collaborators=form.collaborators.data,
                               is_finished=form.is_finished.data,
                               team_leader=form.team_leader.data,
                               hazard_category=form.hazard_category.data)
        session.add(job)
        session.commit()
        return redirect('/jobs')
    return render_template('new_job.html',
                           title='New job',
                           form=form,
                           current_user=current_user)
Example #26
0
    def get(self, repo_id):
        form = JobForm(request.form)

        travispy = g.travispy
        repo = travispy.repo(repo_id)

        return render_template('job_form.html',
                               form=form,
                               repo_id=repo_id,
                               command='new',
                               slug=repo.slug)
def edit_job(id):
    form = JobForm()
    if request.method == "GET":
        session = db.create_session()
        job = session.query(models.jobs.Jobs).filter(
            models.jobs.Jobs.id == id,
            ((models.jobs.Jobs.user == current_user) |
             (models.jobs.Jobs.team_leader == 1))).first()
        if job:
            form.job.data = job.job
            form.work_size.data = job.work_size
            form.start_date.data = job.start_date
            form.end_date.data = job.end_date
            form.collaborators.data = job.collaborators
            form.is_finished.data = job.is_finished
            form.team_leader.data = job.team_leader
            form.hazard_category.data = job.hazard_category
        else:
            abort(404)
    if form.validate_on_submit():
        session = db.create_session()
        job = session.query(models.jobs.Jobs).filter(
            models.jobs.Jobs.id == id,
            ((models.jobs.Jobs.user == current_user) |
             (models.jobs.Jobs.team_leader == 1))).first()
        if job:
            job.job = form.job.data
            job.work_size = form.work_size.data
            job.start_date = form.start_date.data
            job.end_date = form.end_date.data
            job.collaborators = form.collaborators.data
            job.is_finished = form.is_finished.data
            job.team_leader = form.team_leader.data
            job.hazard_category = form.hazard_category.data
            session.commit()
            return redirect('/jobs')
        else:
            abort(404)
    return render_template('new_job.html',
                           title='Редактирование новости',
                           form=form)
Example #28
0
def home():
    """Render website's home page."""
    form = JobForm()

    if form.validate_on_submit():
        uniqid = generate_uniqid(10)
        jobdir = app.config['UPLOAD_FOLDER'] + "/" + uniqid + "/"
        os.makedirs(jobdir)

        mp3_filename = secure_filename(form.mp3.data.filename)
        mp3_new_name = jobdir + uniqid + ".mp3"
        form.mp3.data.save(mp3_new_name)
        pic_filename = secure_filename(form.pic.data.filename)
        _, pic_extension = os.path.splitext(pic_filename)
        pic_new_name = jobdir + uniqid + pic_extension
        form.pic.data.save(pic_new_name)
        video_output = jobdir + uniqid + ".mkv"

        task = tasks.make_video.apply_async(
            (uniqid, pic_new_name, mp3_new_name, video_output),
            countdown=app.config['PHOSIC_TASK_DELAY'],
            expires=app.config['PHOSIC_TASK_MAX_EXECUTION_TIME'])

        # Create database item
        job = models.Job(
            uniqid=uniqid,
            task_uuid=task.id,
            email=form.email.data,
            created=datetime.datetime.utcnow(),
            expires=datetime.datetime.utcnow() + datetime.timedelta(
                minutes=app.config["PHOSIC_JOB_EXPIRY_MINUTES"]),
            mp3_name=mp3_filename[:255],
            pic_name=pic_filename[:255],
        )
        db.session.add(job)
        db.session.commit()

        return redirect(url_for('jobs', job_id=job.uniqid))

    return render_template('home.html', form=form)
Example #29
0
def add(request):
    current_page = 'jobs'
    page_title = u'发布招聘信息'

    # 检查用户选择的城市是否存在
    if check_city(request.GET.get('city_name', False)):
        request.session['job_city'] = request.GET.get('city_name')
    else:
        return index(request=request)

    # 打印表单
    if request.method == 'GET':
        form = JobForm()
        return render('jobs_add.html',
                      locals(),
                      context_instance=RequestContext(request))

    # 处理提交数据
    form = JobForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        new_job = Job()
        new_job.title = data['title']
        new_job.city = request.session.get('job_city', '北京')
        new_job.company = data['company']
        new_job.website = data['website']
        new_job.email = data['email']
        new_job.content = data['content']
        try:
            new_job.save()
        except Exception, e:
            return HttpResponse('保存招聘信息时出现错误:' + str(e))
        else:
            msg = '提交成功,正在等待管理员审核...'
            # 发送信号
            new_job_was_post.send(sender=new_job.__class__, job=new_job)
        return render('posted.html',
                      locals(),
                      context_instance=RequestContext(request))
Example #30
0
def add(request):
    current_page = 'jobs'
    page_title   = u'发布招聘信息'

    # 检查用户选择的城市是否存在
    if check_city(request.GET.get('city_name',False)):
        request.session['job_city'] = request.GET.get('city_name')
    else:
        return index(request=request)

    # 打印表单
    if request.method == 'GET':
        form = JobForm()
        return render('jobs_add.html',locals(),context_instance=RequestContext(request))

    # 处理提交数据
    form = JobForm(request.POST)
    if form.is_valid():
        data = form.cleaned_data
        new_job = Job()
        new_job.title = data['title']
        new_job.city = request.session.get('job_city','北京')
        new_job.company = data['company']
        new_job.website = data['website']
        new_job.email = data['email']
        new_job.content = data['content']
        try:
            new_job.save()
        except Exception,e:
            return HttpResponse('保存招聘信息时出现错误:'+str(e))
        else:
            msg = '提交成功,正在等待管理员审核...'
            # 发送信号
            new_job_was_post.send(
                sender = new_job.__class__,
                job = new_job
            )
        return render('posted.html',locals(),context_instance=RequestContext(request))
Example #31
0
def upload_data(request):
    switch = {
        "logparse": parse_log,
        "longchain": long_chain_limit,
        "gjfreset": reset_gjf,
        "structureview": view_structure,
    }

    if request.method == "POST":
        upload_form = UploadForm(request.POST or None, files=request.FILES)
        if upload_form.is_valid():
            return switch[request.POST["options"]](request, upload_form)
    else:
        upload_form = UploadForm()
    c = {
        "upload_form": upload_form,
        "job_form": JobForm.get_form(request, "{{ name }}", initial=True),
    }
    return render(request, "chem/upload_log.html", c)
Example #32
0
def upload_data(request):
    switch = {
        "logparse": parse_log,
        "longchain": long_chain_limit,
        "gjfreset": reset_gjf,
        "structureview": view_structure,
        "percent": get_percent,
    }

    if request.method == "POST":
        upload_form = UploadForm(request.POST or None, files=request.FILES)
        if upload_form.is_valid():
            return switch[request.POST["options"]](request, upload_form)
    else:
        upload_form = UploadForm()
    c = {
        "upload_form": upload_form,
        "job_form": JobForm.get_form(request, "{{ name }}", initial=True),
    }
    return render(request, "chem/upload_log.html", c)
Example #33
0
def multi_job(request):
    form = JobForm.get_form(request, "{{ name }}")

    c = {
        "form": form,
    }
    if not form.is_valid(request.method):
        if request.is_ajax():
            job_form_html = render_crispy_form(
                form, context=RequestContext(request))
            a = {
                "success": False,
                "job_form_html": job_form_html,
                "mol_form_html": '',
            }
            return HttpResponse(json.dumps(a),
                                content_type="application/json")
        return render(request, "chem/multi_job.html", c)

    d = dict(form.cleaned_data)
    if request.method == "POST":
        cred = d.pop("credential")
        files = request.FILES.getlist("files")
        strings = [''.join(f.readlines()) for f in files]
        names = [os.path.splitext(f.name)[0] for f in files]
        a = cluster.interface.run_jobs(cred, names, strings, **d)
        do_html = request.REQUEST.get("html", False)
        if do_html:
            html = render_to_string("chem/multi_submit.html", a)
            temp = {"success": True, "html": html}
            return HttpResponse(json.dumps(temp),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps(a),
                                content_type="application/json")

    string = request.REQUEST.get('filenames', '').replace('\r\n', ',').replace('\n', ',')
    ret_zip = get_multi_job(string, form)
    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=output.zip"
    return response
Example #34
0
def multi_molecule_zip(request, string):
    try:
        autoflip = request.REQUEST.get("autoflip")
        molecules, warnings, errors, news = get_multi_molecule_status(
            string, autoflip=autoflip)
    except ValueError as e:
        logger.warn(str(e))
        c = {
            "error": str(e)
        }
        return render(request, "chem/multi_molecule.html", c)

    mol_form = MoleculeForm(request.REQUEST)
    mol_form.is_valid()
    if request.REQUEST.get("job"):
        job_form = JobForm.get_form(request, "{{ name }}")
        if not job_form.is_valid():
            f = lambda x: 'checked' if request.REQUEST.get(x) else ''
            c = {
                "pagename": string,
                "job_form": job_form,
                "mol_form": mol_form,
                "gjf": f("gjf"),
                "mol2": f("mol2"),
                "image": f("image"),
                "job": f("job"),
            }
            return render(request, "chem/multi_molecule.html", c)
    else:
        job_form = None

    selection = ("image", "mol2", "job", "gjf")
    options = [x for x in selection if request.REQUEST.get(x)]
    if request.REQUEST.get("new", ''):
        molecules = [x for i, x in enumerate(molecules) if news[i]]
    ret_zip = get_multi_molecule(molecules, options, mol_form, job_form)

    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=molecules.zip"
    return response
Example #35
0
def multi_job(request):
    form = JobForm.get_form(request, "{{ name }}")

    c = {
        "form": form,
    }
    if not form.is_valid(request.method):
        if request.is_ajax():
            job_form_html = render_crispy_form(form,
                                               context=RequestContext(request))
            a = {
                "success": False,
                "job_form_html": job_form_html,
                "mol_form_html": '',
            }
            return HttpResponse(json.dumps(a), content_type="application/json")
        return render(request, "chem/multi_job.html", c)

    d = dict(form.cleaned_data)
    if request.method == "POST":
        cred = d.pop("credential")
        files = request.FILES.getlist("files")
        strings = [''.join(f.readlines()) for f in files]
        names = [os.path.splitext(f.name)[0] for f in files]
        a = cluster.interface.run_jobs(cred, names, strings, **d)
        do_html = request.REQUEST.get("html", False)
        if do_html:
            html = render_to_string("chem/multi_submit.html", a)
            temp = {"success": True, "html": html}
            return HttpResponse(json.dumps(temp),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps(a), content_type="application/json")

    string = request.REQUEST.get('filenames',
                                 '').replace('\r\n', ',').replace('\n', ',')
    ret_zip = get_multi_job(string, form)
    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=output.zip"
    return response
Example #36
0
def multi_molecule_zip(request, string):
    try:
        autoflip = request.REQUEST.get("autoflip")
        molecules, warnings, errors, news = get_multi_molecule_status(
            string, autoflip=autoflip)
    except ValueError as e:
        logger.warn(str(e))
        c = {"error": str(e)}
        return render(request, "chem/multi_molecule.html", c)

    mol_form = MoleculeForm(request.REQUEST)
    mol_form.is_valid()
    if request.REQUEST.get("job"):
        job_form = JobForm.get_form(request, "{{ name }}")
        if not job_form.is_valid():
            f = lambda x: 'checked' if request.REQUEST.get(x) else ''
            c = {
                "pagename": string,
                "job_form": job_form,
                "mol_form": mol_form,
                "gjf": f("gjf"),
                "mol2": f("mol2"),
                "image": f("image"),
                "job": f("job"),
            }
            return render(request, "chem/multi_molecule.html", c)
    else:
        job_form = None

    selection = ("image", "mol2", "job", "gjf")
    options = [x for x in selection if request.REQUEST.get(x)]
    if request.REQUEST.get("new", ''):
        molecules = [x for i, x in enumerate(molecules) if news[i]]
    ret_zip = get_multi_molecule(molecules, options, mol_form, job_form)

    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=molecules.zip"
    return response
Example #37
0
def create():
    form = JobForm()

    print(form.validate_on_submit(), '---------------1------------')

    if form.validate_on_submit():
        company_id = current_user.id
        print('职位视图 调用--------')

        form.create_job(company_id)
        flash('职位创建成功', 'success')
        return redirect_job_index()

    print(' 职位视图结束-------')
    return render_template('job/create.html',
                           form=form,
                           active='manage',
                           panel='create')
Example #38
0
def reset_gjf(request, upload_form):
    job_form = JobForm.get_form(request, "{{ name }}")

    errors = []
    strings = []
    names = []
    for f in upload_form.cleaned_data["files"]:
        try:
            parser = fileparser.Log(f)

            name, _ = os.path.splitext(f.name)
            td = False
            if request.REQUEST.get("td_reset"):
                name += '_TD'
                td = True
            strings.append(parser.format_gjf(td=td))
            names.append(name)
        except Exception as e:
            logger.warn("There was an error when trying to reset a gjf: '%s'" % str(e))
            errors.append((f.name, e))

    if request.REQUEST.get("gjf_submit"):
        if not job_form.is_valid(request.method):
            if request.is_ajax():
                upload_form_html = render_crispy_form(upload_form,
                                                      context=RequestContext(request))
                job_form_html = render_crispy_form(job_form,
                                                   context=RequestContext(request))
                a = {
                    "success": False,
                    "job_form_html": job_form_html,
                    "upload_form_html": upload_form_html,
                }
                return HttpResponse(json.dumps(a),
                                    content_type="application/json")
            c = {
                "job_form": job_form,
                "upload_form": upload_form,
            }
            return render(request, "chem/upload_log.html", c)

        d = dict(job_form.cleaned_data)
        cred = d.pop("credential")
        a = cluster.interface.run_jobs(cred, names, strings, **d)
        a["failed"].extend(errors)
        do_html = request.REQUEST.get("html", False)
        if do_html:
            html = render_to_string("chem/multi_submit.html", a)
            temp = {"success": True, "html": html}
            return HttpResponse(json.dumps(temp),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps(a),
                                content_type="application/json")

    buff = StringIO()
    zfile = zipfile.ZipFile(buff, 'w', zipfile.ZIP_DEFLATED)
    for name, string in zip(names, strings):
        zfile.writestr("%s.gjf" % name, string)
    if errors:
        temp = ['%s - %s' % (name, error) for (name, error) in errors]
        zfile.writestr("errors.txt", '\n'.join(temp))
    zfile.close()
    buff.flush()
    ret_zip = buff.getvalue()
    buff.close()

    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=output.zip"
    return response
Example #39
0
def reset_gjf(request, upload_form):
    job_form = JobForm.get_form(request, "{{ name }}")

    errors = []
    strings = []
    names = []
    for f in upload_form.cleaned_data["files"]:
        try:
            parser = fileparser.Log(f)

            name, _ = os.path.splitext(f.name)
            td = False
            if request.REQUEST.get("td_reset"):
                name += '_TD'
                td = True
            strings.append(parser.format_gjf(td=td))
            names.append(name)
        except Exception as e:
            logger.warn("There was an error when trying to reset a gjf: '%s'" %
                        str(e))
            errors.append((f.name, e))

    if request.REQUEST.get("gjf_submit"):
        if not job_form.is_valid(request.method):
            if request.is_ajax():
                upload_form_html = render_crispy_form(
                    upload_form, context=RequestContext(request))
                job_form_html = render_crispy_form(
                    job_form, context=RequestContext(request))
                a = {
                    "success": False,
                    "job_form_html": job_form_html,
                    "upload_form_html": upload_form_html,
                }
                return HttpResponse(json.dumps(a),
                                    content_type="application/json")
            c = {
                "job_form": job_form,
                "upload_form": upload_form,
            }
            return render(request, "chem/upload_log.html", c)

        d = dict(job_form.cleaned_data)
        cred = d.pop("credential")
        a = cluster.interface.run_jobs(cred, names, strings, **d)
        a["failed"].extend(errors)
        do_html = request.REQUEST.get("html", False)
        if do_html:
            html = render_to_string("chem/multi_submit.html", a)
            temp = {"success": True, "html": html}
            return HttpResponse(json.dumps(temp),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps(a), content_type="application/json")

    buff = StringIO()
    zfile = zipfile.ZipFile(buff, 'w', zipfile.ZIP_DEFLATED)
    for name, string in zip(names, strings):
        zfile.writestr("%s.gjf" % name, string)
    if errors:
        temp = ['%s - %s' % (name, error) for (name, error) in errors]
        zfile.writestr("errors.txt", '\n'.join(temp))
    zfile.close()
    buff.flush()
    ret_zip = buff.getvalue()
    buff.close()

    response = HttpResponse(ret_zip, content_type="application/zip")
    response["Content-Disposition"] = "attachment; filename=output.zip"
    return response
Example #40
0
def add_edit_item(request, model_name, add_edit, edit_id):
    """Add/Edit page for the inventory"""
    if add_edit == "add":
        edit_id = None
    if _checkModel(model_name):
        directory = "asset_inventory/add_edit_Pages/"
        # Adding or Editing a Job
        if model_name == "Job":
            templateFile = directory + "Job.html"
            post_data = request.POST or None

            try:
                Job_Instance = Job.objects.get(pk=edit_id)
            except Job.DoesNotExist:
                Job_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(reverse("asset_inventory_add_edit_item", args=["Job", "add", "new"]))

            Job_Form = JobForm(post_data, instance=Job_Instance)

            if Job_Form.is_valid():
                Job_Occurance = Job_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Job"]))
            return render_to_response(templateFile, {"form": Job_Form}, context_instance=RequestContext(request))
        # Adding or Editing a Location
        elif model_name == "Location":
            templateFile = directory + "Location.html"
            post_data = request.POST or None

            try:
                Location_Instance = Location.objects.get(pk=edit_id)
            except Location.DoesNotExist:
                Location_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(
                        reverse("asset_inventory_add_edit_item", args=["Location", "add", "new"])
                    )

            Location_Form = LocationForm(post_data, instance=Location_Instance)

            if Location_Form.is_valid():
                Location_Occurance = Location_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Location"]))

            return render_to_response(templateFile, {"form": Location_Form}, context_instance=RequestContext(request))

        # Adding or Editing a Person
        elif model_name == "Person":
            templateFile = directory + "Person.html"
            post_data = request.POST or None

            try:
                Person_Instance = Person.objects.get(pk=edit_id)
            except Person.DoesNotExist:
                Person_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(reverse("asset_inventory_add_edit_item", args=["Person", "add", "new"]))

            Person_Form = PersonForm(post_data, instance=Person_Instance)

            if Person_Form.is_valid():
                Person_Occurance = Person_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Person"]))

            return render_to_response(templateFile, {"form": Person_Form}, context_instance=RequestContext(request))

        # Adding or Editing a Purchase
        elif model_name == "Purchase":
            templateFile = directory + "Purchase.html"
            post_data = request.POST or None

            try:
                Purchase_Instance = Purchase.objects.get(pk=edit_id)
            except Purchase.DoesNotExist:
                Purchase_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(
                        reverse("asset_inventory_add_edit_item", args=["Purchase", "add", "new"])
                    )

            Purchase_Form = PurchaseForm(post_data, instance=Purchase_Instance)

            if Purchase_Form.is_valid():
                Purchase_Occurance = Purchase_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Purchase"]))

            return render_to_response(templateFile, {"form": Purchase_Form}, context_instance=RequestContext(request))
        # Adding or Editing a Status
        elif model_name == "Status":
            templateFile = directory + "Status.html"
            post_data = request.POST or None

            try:
                Status_Instance = Status.objects.get(pk=edit_id)
            except Status.DoesNotExist:
                Status_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(reverse("asset_inventory_add_edit_item", args=["Status", "add", "new"]))

            Status_Form = StatusForm(post_data, instance=Status_Instance)

            if Status_Form.is_valid():
                Status_Occurance = Status_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Status"]))

            return render_to_response(templateFile, {"form": Status_Form}, context_instance=RequestContext(request))
        # Adding or Editing a Esign
        elif model_name == "Esign":
            templateFile = directory + "Esign.html"
            post_data = request.POST or None

            try:
                Esign_Instance = Esign.objects.get(pk=edit_id)
            except Esign.DoesNotExist:
                Esign_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(reverse("asset_inventory_add_edit_item", args=["Esign", "add", "new"]))

            Esign_Form = EsignForm(post_data, instance=Esign_Instance)

            if Esign_Form.is_valid():
                Esign_Occurance = Esign_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Esign"]))

            return render_to_response(templateFile, {"form": Esign_Form}, context_instance=RequestContext(request))
        # Adding or Editing a Device
        elif model_name == "Device":
            templateFile = directory + "Device.html"
            post_data = request.POST or None

            try:
                Device_Instance = Device.objects.get(pk=edit_id)
            except Device.DoesNotExist:
                Device_Instance = None
                if add_edit == "edit":
                    return HttpResponseRedirect(reverse("asset_inventory_add_edit_item", args=["Device", "add", "new"]))

            Device_Form = DeviceForm(post_data, instance=Device_Instance)

            if Device_Form.is_valid():
                Device_Occurance = Device_Form.save()
                return HttpResponseRedirect(reverse("asset_inventory_list_model", args=["Device"]))

            return render_to_response(templateFile, {"form": Device_Form}, context_instance=RequestContext(request))
    # This is a catch all response, if some unforseen error manages
    # to occur with the calling of add/edit pages
    else:
        render_to_response(reverse("homepage"))
Example #41
0
def edit_job(keyurl):
    key = ndb.Key(urlsafe=keyurl)
    job = key.get()
    if not job:
        flash(_('no such job'), 'error')
        return redirect(url_for('admin.jobs'))
    form = JobForm(request.form, obj=job)
    enterprises = EnterpriseModel.query()
    mails = EmailModel.query()

    form.enterprise.choices = [(e.key.urlsafe(), e.name) for e in enterprises]
    grouped_emails = {e.key.urlsafe(): [] for e in enterprises}
    for m in mails:
        key = m.enterprise.urlsafe()
        if key in grouped_emails:
            grouped_emails[key].append({'url': m.key.urlsafe(), 'email': m.email})

    form.enterprise_email.choices = [(i['url'], i['email']) for value in grouped_emails.values() for i in value]

    if request.method == 'POST' and form.validate():
        job.type = form.type.data
        job.is_online = form.is_online.data
        mails = []
        for item in form.enterprise_email.data:
            mail = ndb.Key(urlsafe=item)
            mails.append(mail)

        job.enterprise_email = mails
        job.enterprise = ndb.Key(urlsafe=form.enterprise.data)

        for lang in ['fr', 'en', 'zh']:
            job.meta[lang]['published'] = getattr(form, "publish_"+lang).data
            job.meta[lang]['title'] = getattr(form, "title_"+lang).data
            job.meta[lang]['content'] = getattr(form, "content_"+lang).data

        job.published = job.meta['en']['published'] or job.meta['fr']['published'] or job.meta['zh']['published']
        job.default_lang = form.default_lang.data
        job.cv_required = form.cv_required.data
        try:
            job.put()
            return redirect(url_for('admin.jobs'))
        except CapabilityDisabledError:
            flash('error', 'error')
    elif request.method == 'GET':
        #GET handle goes here
        #in case of no enterprise when importing
        if job.enterprise:
            form.enterprise.data = job.enterprise.urlsafe()
            form.enterprise_email.choices = [(i['url'], i['email']) for i in grouped_emails[form.enterprise.data]]

        if job.is_online:
            form.is_online.data = True
            form.apply_url.data = job.apply_url
        else:
            form.is_online.data = False
            urls = []
            for e in job.enterprise_email:
                urls.append(e.urlsafe())
            form.enterprise_email.data = urls

        for lang in ['fr', 'en', 'zh']:
            v = getattr(form, "publish_"+lang)
            v.data = job.meta[lang]['published']

            v = getattr(form, "title_"+lang)
            v.data = job.meta[lang]['title']

            v = getattr(form, "content_"+lang)
            v.data = job.meta[lang]['content']

    return render_template('admin/edit_job.html', form=form, keyurl=keyurl, grouped_emails= json.dumps(grouped_emails))
Example #42
0
def new_job():
    """
    create new job infos
    """
    form = JobForm(request.form)
    enterprises = EnterpriseModel.query()
    mails = EmailModel.query()

    form.enterprise.choices = [(e.key.urlsafe(), e.name) for e in enterprises]
    if len(form.enterprise.choices) == 0:
        #no enterprise, create one at first
        flash('there is no enterprise, please create one before add new job', 'error')
        return redirect(url_for('admin.new_enterprise'))

    grouped_emails = {e.key.urlsafe(): [] for e in enterprises}
    for m in mails:
        key = m.enterprise.urlsafe()
        if key in grouped_emails:
            grouped_emails[key].append({'url': m.key.urlsafe(), 'email': m.email})

    form.enterprise_email.choices = [(i['url'], i['email']) for value in grouped_emails.values() for i in value]

    if request.method == 'POST' and form.validate():
        user = flask_login.current_user
        enterprise = ndb.Key(urlsafe=form.enterprise.data)
        mails = []
        for item in form.enterprise_email.data:
            mail = ndb.Key(urlsafe=item)
            mails.append(mail)

        fr = {
            'published': form.publish_fr.data,
            'title': form.title_fr.data,
            'content': form.content_fr.data
        }
        en = {
            'published': form.publish_en.data,
            'title': form.title_en.data,
            'content': form.content_en.data
        }
        zh = {
            'published': form.publish_zh.data,
            'title': form.title_zh.data,
            'content': form.content_zh.data
        }
        meta = {
            "en": en,
            "fr": fr,
            "zh": zh
        }
        job = JobModel(
            type=form.type.data,
            is_online=form.is_online.data,
            enterprise=enterprise,
            enterprise_email=mails,
            meta=meta,
            published=fr["published"] or en["published"] or zh["published"],
            default_lang=form.default_lang.data,
            cv_required=form.cv_required.data,
       #     poster = user.key
        )
        try:
            job.put()
            return redirect(url_for('admin.jobs'))
        except CapabilityDisabledError:
            flash('add job error!', 'error')
    return render_template('admin/new_job.html', form=form, grouped_emails = json.dumps(grouped_emails))