Exemplo n.º 1
0
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
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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')
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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()
Exemplo n.º 9
0
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')
Exemplo n.º 10
0
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')
Exemplo n.º 11
0
def todo_put():
    todo = ToDo(request.json['title'], request.json['description'])
    db_driver.insert(todo)
    response.status = 201