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)
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(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 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))
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))