Last active
January 13, 2018 14:39
-
-
Save scmmishra/41c3e9a3d4c0227beeeac0a9e576fddd to your computer and use it in GitHub Desktop.
flask
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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