Skip to content

Instantly share code, notes, and snippets.

@scmmishra
Last active January 13, 2018 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scmmishra/41c3e9a3d4c0227beeeac0a9e576fddd to your computer and use it in GitHub Desktop.
Save scmmishra/41c3e9a3d4c0227beeeac0a9e576fddd to your computer and use it in GitHub Desktop.
flask
class Survey(flask_db.Model):
name = CharField()
department = TextField()
year = TextField()
tags = TextField()
timestamp = DateTimeField(default=datetime.datetime.now, index=True)
def save(self, *args, **kwargs):
ret = super(Survey, self).save(*args, **kwargs)
return ret
@classmethod
def public(cls):
return Survey.select()
@app.route('/survey/', methods=['GET', 'POST'])
def survey():
return add_survey_entry(Survey(name='', department=''), 'survey.html')
def recommend(tag_list):
# Entry is another model I am querying from
# query = Entry.public().where((Entry.tags.contains('Future')) | (Entry.tags.contains('transport')))
query = Entry.public().where(Entry.tags.contains('Future'))
return object_list(
'list.html',
query,
check_bounds=False)
def add_survey_entry(survey, template):
if request.method == 'POST':
survey.name = request.form.get('name') or ''
survey.department = request.form.get('department') or ''
survey.year = request.form.get('year') or ''
temp = request.form.getlist('tags_input')
temp2=[]
for x in temp:
temp2.append(x.split('_', 1)[-1])
survey.tags = ', '.join(temp2) or ''
if not (survey.name):
flash('Name required.', 'danger')
else:
# Wrap the call to save in a transaction so we can roll it back
# cleanly in the event of an integrity error.
try:
with database.atomic():
survey.save()
except IntegrityError:
flash('Error: this name is already in use.', 'danger')
else:
flash('survey saved successfully.', 'success')
return recommend(survey.tags)
return render_template(template)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment