def login(): name = request.form.get("user-name") email = request.form.get("user-email") password = request.form.get("user-password") hashed_password = hashlib.sha256(password.encode()).hexdigest() content = "Welcome" date = datetime.datetime.now() user = db.query(ToDo).filter_by(email=email).first() if not user: user = ToDo(name=name, email=email, password=hashed_password, content=content, date=date) db.add(user) db.commit() if hashed_password != user.password: return "Wrong Password" else: session_token = str(uuid.uuid4()) user.session_token = session_token db.add(user) db.commit() response = make_response(redirect("/task")) response.set_cookie("session_token", session_token, httponly=True, samesite='Strict') return response
def fill_with_test_data(session): ''' Fill the DB with test data. The means: 1. delete all data 2. fill DB with test data ''' # delete all todos session.query(ToDo).delete() session.commit() start = time() # read all test data and add them to the DB with open('fakedata.csv', 'r', encoding='utf-8-sig') as csv_file: reader = DictReader(csv_file) for row in reader: todo = ToDo( topic=row['Topic'], done=strtobool(row['Done']), due_date=datetime.datetime.strptime(row['DueDate'], '%d.%m.%Y'), description=row['Description'], ) if session.query(ToDo).filter( ToDo.topic == todo.topic).count() > 0: print('Topic already exists: ' + todo.topic + ' ' + todo.due_date.strftime('%d.%m.%Y')) session.add(todo) print('Runtime: ', time() - start) session.commit()
def update_job_status(): """Move job status from active to archive""" # redirect if user is not logged in if not session: return redirect('/') else: # get job_id, job_code from POST and user_id from cookie job_id = request.form['job_id'] job_code = request.form['job_code'] user_id = session['user_id'] last_job_event = JobEvent.query.filter( JobEvent.job_id == job_id).order_by(desc('date_created')).first() last_todo = ToDo.query.filter( ToDo.job_event_id == last_job_event.job_event_id).first() last_todo.active_status = False db.session.commit() # create job event today = datetime.now() job_event = JobEvent(user_id=user_id, job_id=job_id, job_code=job_code, date_created=today) db.session.add(job_event) todo_for_event = { '1': '1', '2': '2', '3': '3', '4': '3', '5': '4', '6': '5', '7': '6', '8': '7' } todo_code = todo_for_event[job_code] find_code = ToDoCode.query.filter( ToDoCode.todo_code == todo_code).first() num_days = find_code.sugg_due_date due_date = today + timedelta(days=num_days) # activate todo for event new_todo = ToDo(job_event_id=job_event.job_event_id, todo_code=todo_code, date_created=today, date_due=due_date, active_status=True) db.session.add(new_todo) # find job in database and archive if necessary job = Job.query.filter(Job.job_id == job_id).first() if int(job_code) > 5: job.active_status = False db.session.commit() return redirect('/dashboard/jobs')
def task(): session = request.cookies.get("session_token") user = db.query(ToDo).filter_by(session_token=session).first() name = user.name if request.method == "POST": task_content = request.form.get("content") new_content = ToDo(name=name, content=task_content, session_token=session) db.add(new_content) db.commit() return redirect("/task") else: tasks = db.query(ToDo).filter_by(name=name).all() return render_template("task.html", tasks=tasks)
def add_task_to_list(todo_list): """ Argument: instance of class ToDoList Return: none Function contain generate id module and add name and descritpion tasks, make from it instance of class ToDo. """ unique_id = True while unique_id is True: new_id = generate_id_for_task() unique_id = todo_list.check_if_id_already_exist(new_id) name_of_new_task = add_name() description_of_task = add_description() new_task = ToDo(new_id, name_of_new_task, description_of_task) todo_list.add_task_to_list(new_task)
def update_contact_status(): """ Adds new contact events to database """ # redirect if user is not logged in if not session: return redirect('/') else: # get contact_id, contact_code from POST and user_id from cookie contact_id = request.form['contact_id'] contact_code = request.form['contact_code'] user_id = session['user_id'] # create job event today = datetime.now() contact_event = ContactEvent(user_id=user_id, contact_id=contact_id, contact_code=contact_code, date_created=today) db.session.add(contact_event) db.session.commit() todo_for_event = {'1': '8', '2': '8', '3': '9', '4': '8', '5': '9'} todo_code = todo_for_event[contact_code] find_code = ToDoCode.query.filter( ToDoCode.todo_code == todo_code).first() num_days = find_code.sugg_due_date due_date = today + timedelta(days=num_days) # activate todo for event new_todo = ToDo(contact_event_id=contact_event.contact_event_id, todo_code=todo_code, date_created=today, date_due=due_date, active_status=True) db.session.add(new_todo) db.session.commit() return redirect('/dashboard/contacts')
def __init__(self): self.to_do = ToDo()
class ToDoController(): def __init__(self): self.to_do = ToDo() def workflow(self): if len(sys.argv) == 1: self.to_do.print_usage() elif len(sys.argv) == 2 and sys.argv[1] == "-l": self.to_do.list_tasks() elif len(sys.argv) == 2 and sys.argv[1] == "-a": print("Unable to add: no task provided") elif sys.argv[1] == "-a": self.to_do.add_new_task() elif len(sys.argv) == 2 and sys.argv[1] == "-r": print("Unable to remove: no index provided") elif sys.argv[1] == "-r" and sys.argv[2] == "apple": print("Unable to remove: index is not a number") elif sys.argv[1] == "-r": self.to_do.remove_task() elif len(sys.argv) == 2 and sys.argv[1] == "-c": print("Unable to check: no index provided") elif sys.argv[1] == "-c" and sys.argv[2] == "apple": print("Unable to check: index is not a number") elif sys.argv[1] == "-c": self.to_do.check_task() else: print("Unsupported argument" + "\n") self.to_do.print_usage()
def process_contact_form(): """Allow user to add a contact""" # redirect if user is not logged in if not session: return redirect('/') else: # get user_id from session user_id = session['user_id'] # get data from post request fname = request.form['fname'] lname = request.form['lname'] if request.form['email']: email = request.form['email'] else: email = "" if request.form['phone']: phone = "".join((request.form['phone']).split('-')) else: phone = "" if request.form['notes']: notes = request.form['notes'] else: notes = "" # look for company_id and find existing company # or get new company_name and create company object, add, commit if request.form['company_id']: company_id = int(request.form['company_id']) company = Company.query.filter( Company.company_id == company_id).first() elif request.form['company_name']: company_name = request.form['company_name'] company = Company(name=company_name) db.session.add(company) db.session.commit() # create new contact and commit to db new_contact = Contact(fname=fname, lname=lname, email=email, phone=phone, company_id=company.company_id, notes=notes) db.session.add(new_contact) db.session.commit() # create initial contact event contact_code = request.form['contact_event'] today = datetime.now() contact_event = ContactEvent(user_id=user_id, contact_id=new_contact.contact_id, contact_code=contact_code, date_created=today) db.session.add(contact_event) db.session.commit() todo_for_event = {'1': '8', '2': '8', '3': '9', '4': '8', '5': '9'} todo_code = todo_for_event[contact_code] find_code = ToDoCode.query.filter( ToDoCode.todo_code == todo_code).first() num_days = find_code.sugg_due_date due_date = today + timedelta(days=num_days) # activate todo for event new_todo = ToDo(contact_event_id=contact_event.contact_event_id, todo_code=todo_code, date_created=today, date_due=due_date, active_status=True) db.session.add(new_todo) db.session.commit() flash( '{} {} added to your contacts'.format(new_contact.fname, new_contact.lname), 'success') return redirect('/dashboard/contacts')
def process_job_form(): """Allow user to add a job""" # redirect if user is not logged in if not session: return redirect('/') else: # get user_id from session user_id = session['user_id'] # get data from form job_title = request.form['job_title'] job_status = request.form['job_status'] # look for optional data and add if it exists if request.form['job_link']: job_link = request.form['job_link'] if not job_link: job_link = None elif job_link[:4] != 'http': job_link = ''.join(['http://', job_link]) else: job_link = "" if request.form['job_notes']: job_notes = request.form['job_notes'] else: job_notes = "" # look for company_id and find existing company # or get new company_name and create company object, add, commit if request.form['company_id']: company_id = int(request.form['company_id']) company = Company.query.filter( Company.company_id == company_id).first() elif request.form['company_name']: company_name = request.form['company_name'] company = Company(name=company_name) db.session.add(company) db.session.commit() # create a new job object, add, commit job = Job(title=job_title, link=job_link, company_id=company.company_id, active_status=True, notes=job_notes) db.session.add(job) db.session.commit() # create a job event to kick off job status, add, commit today = datetime.now() job_event = JobEvent(user_id=user_id, job_id=job.job_id, job_code=job_status, date_created=today) db.session.add(job_event) db.session.commit() todo_for_event = { '1': '1', '2': '2', '3': '3', '4': '3', '5': '4', '6': '5', '7': '6', '8': '7' } todo_code = todo_for_event[job_status] find_code = ToDoCode.query.filter( ToDoCode.todo_code == todo_code).first() num_days = find_code.sugg_due_date due_date = today + timedelta(days=num_days) # activate todo for event new_todo = ToDo(job_event_id=job_event.job_event_id, todo_code=todo_code, date_created=today, date_due=due_date, active_status=True) db.session.add(new_todo) db.session.commit() # return to active jobs and show confirmation flash('{} added to your jobs.'.format(job_title), 'success') return redirect('/dashboard/jobs')
def todo_put(): todo = ToDo(request.json['title'], request.json['description']) db_driver.insert(todo) response.status = 201