Exemplo n.º 1
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)
Exemplo n.º 2
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)
Exemplo n.º 3
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)
Exemplo n.º 4
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)
Exemplo n.º 5
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))
Exemplo n.º 6
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))