Пример #1
0
 def put(self, user_id, entryId):
     """
     Method: PUT
     Modifies an entry by it's Id
     URL path: mydiary/v1/entries/<int:entryId>
     """
     user_id = user_id[0]
     owner = Entry().verify_entry_owner(entryId, user_id)
     data = self.parser.parse_args()
     title = data['title']
     content = data['content']
     updated_data = (title, content)
     entry = Entry().get_entry_id(entryId)
     if entry is None:
         return {'message':"Entry does not exist"}, 404
     if entry:
         entry_Date = Entry().entry_date(entryId)[0]
         today_date = date.today().strftime("%d-%m-%Y")
         if today_date == entry_Date:
             if Entry().verify_title(title, user_id) == True:
                 return{'message':"Title already exist, use a different one."}, 400
             if owner:
                 Entry().update_entry(updated_data, entryId)
                 return{"message":"Entry Updated successfully"}, 200
             else:
                 return{"message":"You are not allowed to update this entry"}, 403
         else:
             return{'message':'Entry cannot be updated because it was not created today'}, 400
Пример #2
0
def oracle_create():

    logger.debug("start oracle_create")
    form = OracleCreateForm()

    if request.method == 'GET':
        logger.debug("start oracle_create GET")
        return render_template(ORACLE_PATH + '/create.html', form=form)

    logger.debug("start oracle_create POST")
    form = OracleCreateForm(request.form)

    if request.method == 'POST' and form.validate():
        session['username'] = request.form['username']
        session['email'] = request.form['email']

        #logger.debug("UT_ENTRYTEMP insert")
        entry = Entry.dict()
        entry['UNAME'] = session['username']
        entry['UKANA'] = mojimoji.zen_to_han(session['username'])
        entry['UEMAIL'] = session['email']

        if Entry.insert(entry):
            flash("登録できました。", "success")
        else:
            flash("登録できませんでした。", "danger")

        return redirect("/sample/oracle/")

    return render_template(ORACLE_PATH + 'create.html', form=form)
Пример #3
0
 def delete(self, user_id, entry_id):
     '''Method for deleting an entry'''
     user_entry = Entry.get(user_id=user_id, entry_id=entry_id)
     if user_entry:
         Entry.delete(table='entries', id=user_entry[0])
         return {"message": "Entry has been deleted"}, 200
     return {"message": "Entry does not exist"}, 404
Пример #4
0
def detail(slug):
    if session.get('logged_in'):
        query = Entry.select()
    else:
        query = Entry.public()
    entry = get_object_or_404(query, Entry.slug == slug)
    return render_template('detail.html', entry=entry)
Пример #5
0
 def test_save_method_saves_entries(self):
     """Tests if the save method saves entries to the database"""
     entries = [self.entry1, self.entry2, self.entry3]
     for entry in entries:
         Entry().save(entry)
     data = Entry().verify_title('python', 1)
     self.assertEquals(data, True)
Пример #6
0
def oracle_index():

    form = OracleIndexForm()

    if request.method == 'GET':
        entries = Entry.select_status(0)
        return render_template(ORACLE_PATH + 'index.html',
                               form=form,
                               entries=entries,
                               entry_status_list=ENTRY_STATUS_LIST)

    form = OracleIndexForm(request.form)

    if request.method == 'POST' and form.validate():
        if request.form['status'] != '0':
            entries = Entry.select_status(request.form['status'])
        else:
            entries = Entry.select_status(0)
        return render_template(ORACLE_PATH + 'index.html',
                               form=form,
                               entries=entries,
                               entry_status_list=ENTRY_STATUS_LIST)

    return render_template(ORACLE_PATH + 'index.html',
                           form=form,
                           entry_status_list=ENTRY_STATUS_LIST)
Пример #7
0
def oracle_delete(id):

    logger.debug("start oracle_delete")
    form = OracleDeleteForm()

    if request.method == 'GET':
        entry = Entry.select_id(id)
        #プルダウン/ラジオボタンは最初に設定しないとフォームがクリアされてしまう
        form.status.default = int(entry.USTATUS)
        form.sex.default = int(entry.USEX)
        print(form.status.default)
        form.process()
        form.entryno.data = entry.UENTRYNO
        form.username.data = entry.UNAME
        form.userkana.data = entry.UKANA
        form.email.data = entry.UEMAIL

        return render_template('/sample/oracle/delete.html',
                               form=form,
                               entry=entry)

    logger.debug("start oracle_delete POST")
    form = OracleDeleteForm(request.form)

    if request.method == 'POST':

        if Entry.delete(id):
            flash("削除できました。", "success")
        else:
            flash("削除できませんでした。", "danger")

        return redirect(ORACLE_PATH)

    return render_template(ORACLE_PATH + 'delete.html', form=form)
Пример #8
0
    def post(self, user_id):
        '''Method for adding entry'''
        args = EntryResource.parser.parse_args()
        title = args.get('title', '')
        description = args.get('description', '')

        if is_blank(title) or is_blank(description):
            return {'message': 'All fields are required'}, 400
        entry =  Entry(title=title, user_id=user_id, description=description)
        entry = entry.save()
        return {'message': 'Entry has been published', 'entry': entry}, 201
Пример #9
0
def index():
    search_query = request.args.get('q')
    if search_query:
        query = Entry.search(search_query)
    else:
        query = Entry.public().order_by(Entry.timestamp.desc())

    return object_list('index.html',
                       query,
                       search=search_query,
                       check_bounds=False)
Пример #10
0
 def test_repr_entry(self, mock_get_settings):
     mock_get_settings.return_value = ListSettings(start_day_of_week=-1,
                                                   days_to_display=7)
     a = push_dummy_user('a', 'a')
     list_ = push_dummy_list(a, 'list_')
     d = list_.get_or_create_days()[0]
     e = Entry(day_id=d.id)
     db.session.add(e)
     db.session.commit()
     self.assertEqual(e.__repr__(),
                      '<Entry 1 of Day {} in List list_>'.format(d.day))
Пример #11
0
def add_new_entry():
    entry_json = json.loads(request.data)
    new_entry = Entry(response=entry_json['response'])

    user = User.query.get(entry_json['user_id'])
    prompt = Prompt.query.get(entry_json['prompt_id'])
    new_entry.user = user
    new_entry.prompt = prompt

    db.session.add(new_entry)
    db.session.commit()
    return 'Success'
Пример #12
0
def index():
    entries = Entry.query.all()
    form = EntryForm()
    if form.validate_on_submit():
        entry = Entry()
        entry.title = form.title.data
        entry.body = form.body.data
        db.session.add(entry)
        db.session.commit()
        return redirect(url_for('main.index'))

    return render_template('main/index.html',
                           form=EntryForm(),
                           entries=entries)
Пример #13
0
 def delete(entryId):
     """
     Method: DELETE
     Deletes an entry by it's Id
     URL path: mydiary/v1/entries/<int:entryId>
     """
     try:
         entry_id = Entry().get_entry_id(entryId)
         if entry_id is None:
             return {'message': "Entry does not exist"}, 404
         else:
             Entry().delete_entry(entryId)
         return {'message': 'Your entry was successfully deleted'}, 200
     except:
         return {"Server Response": "An internal error occured"}, 500
Пример #14
0
 def test_delete_list(self, mock_get_settings):
     mock_get_settings.return_value = ListSettings(
         start_day_of_week=-1, days_to_display=7)
     a = push_dummy_user('a', 'a')
     b = push_dummy_user('b', 'b')
     list_ = push_dummy_list(a, 'list_')
     d = list_.get_or_create_days()
     e = Entry(day_id=d[0].id)
     ls = ListSettings(list_id=list_.id, user_id=a.id)
     s = ListPermission(
         list_id=list_.id, permission_level='member', user_id=b.id)
     db.session.add_all([e, ls, s])
     db.session.commit()
     self.assertEqual(List.query.first(), list_)
     self.assertEqual(Entry.query.first(), e)
     self.assertEqual(Day.query.first(), d[0])
     self.assertEqual(ListSettings.query.first(), ls)
     self.assertEqual(ListPermission.query.filter_by(
         user_id=b.id).first(), s)
     db.session.delete(list_)
     db.session.commit()
     self.assertEqual(List.query.first(), None)
     self.assertEqual(Entry.query.first(), None)
     self.assertEqual(Day.query.first(), None)
     self.assertEqual(ListSettings.query.first(), None)
     self.assertEqual(ListPermission.query.first(), None)
Пример #15
0
 def test_delete_user(self):
     a = push_dummy_user('a', 'a')
     b = push_dummy_user('b', 'b')
     list_ = push_dummy_list(a, 'list_')
     d = list_.get_or_create_days()
     e = Entry(day_id=d[0].id)
     ls = ListSettings(list_id=list_.id, user_id=a.id)
     s = ListPermission(list_id=list_.id, user_id=b.id)
     db.session.add_all([e, ls, s])
     db.session.commit()
     self.assertEqual(User.query.first(), a)
     self.assertEqual(List.query.first(), list_)
     self.assertEqual(Entry.query.first(), e)
     self.assertEqual(Day.query.first(), d[0])
     self.assertEqual(ListSettings.query.first(), ls)
     self.assertEqual(ListPermission.query.filter_by(
         user_id=b.id).first(), s)
     db.session.delete(a)
     db.session.commit()
     self.assertEqual(User.query.first(), b)
     self.assertEqual(List.query.first(), None)
     self.assertEqual(Entry.query.first(), None)
     self.assertEqual(Day.query.first(), None)
     self.assertEqual(ListSettings.query.first(), None)
     self.assertEqual(ListPermission.query.filter_by(
         user_id=a.id).first(), None)
Пример #16
0
def add_entry():
    """
    Presents a form to add a new entry to the database.
    Requires the user to be logged in.
    """
    if not current_user.is_authenticated:
        flash('Please login or register to add entries.')
        return redirect(url_for('index'))

    s = Session()

    if request.method == 'POST':
        date = request.form['date']
        content = request.form['content']

        if not date:
            flash('Date is required!')
        else:
            try:
                new_entry = Entry(date=date,
                                  content=content,
                                  user_id=current_user.get_id())
                s.add(new_entry)
                s.commit()
                s.close()
                return redirect(url_for('index'))
            except Exception as e:
                s.close()
                return render_template('404_page.html', message=str(e))

    s.close()
    return render_template('entries/add_entry_form.html')
Пример #17
0
 def test_can_get_all_entries(self):
     '''Test can get all diary entries'''
     self.user1.save()
     self.entry1.save()
     entry = Entry.get(user_id=1)
     self.assertIsInstance(entry, dict)
     self.assertEqual(1, len(entry))
Пример #18
0
def generate_fake(user_count=7, battle_count=21, entry_count=100, vote_count=200):
    """
    Generate fake users and battles.
    Gets 'model_count' arguments which means create not more than 'count' objects of class 'Model'
    """
    from random import seed
    from app.helpers import (try_add, generate_fake_user, generate_fake_battle,
                             generate_fake_entry, generate_fake_vote)

    user_count, battle_count, entry_count, vote_count = int(user_count), int(battle_count), \
                                                        int(entry_count), int(vote_count)

    seed()
    try_add(*(generate_fake_user() for _ in range(user_count)))

    # Because there is a small chance of collisions
    user_count = len(User.query.all())
    print("User count is", user_count)

    try_add(*(generate_fake_battle() for _ in range(battle_count)))

    battle_count = len(Battle.get_list())
    print("Battle count is", battle_count)

    try_add(*(generate_fake_entry() for _ in range(entry_count)))

    entry_count = len(Entry.get_list())
    print("Entry count is", entry_count)

    try_add(*(generate_fake_vote() for _ in range(vote_count)))

    vote_count = len(Vote.query.all())
    print("Vote count is", vote_count)
Пример #19
0
def add():
    year = db.Column(db.String(64), index=True, nullable=False)
    model = db.Column(db.String(120), index=True, nullable=False)
    extcolor = db.Column(db.String(120), index=True, nullable=False)
    intcolor = db.Column(db.String(120), index=True, nullable=False)
    transmission = db.Column(db.String(120), index=True, nullable=False)
    price = db.Column(db.String(120), index=True, nullable=False)
    contact = db.Column(db.String(120), index=True, nullable=False)


    if request.method == 'POST':
        form = request.form
        year = form.get('year')
        model = form.get('model')
        extcolor = form.get('extcolor')
        intcolor = form.get('intcolor')
        transmission = form.get('transmission')
        price = form.get('price')
        contact = form.get('contact')
        if not year or model or extcolor or intcolor or transmission or price or contact:
            entry = Entry(year = year, model = model, extcolor = extcolor, intcolor = intcolor, transmission = transmission, price = price, contact = contact)
            db.session.add(entry)
            db.session.commit()
            return redirect('/')

    return "of the jedi"

# @app.errorhandler(Exception)
# def error_page(e):
#     return "of the jedi"
Пример #20
0
 def delete(self, user_id, entry_id):
     '''Method for deleting an entry'''
     user_entry = Entry.get(user_id=user_id, id=entry_id)
     if isinstance (user_entry, Entry):
         user_entry.delete()
         return {"message": "Entry has been deleted"}, 200
     return {"message": "Entry does not exist"}, 404 
Пример #21
0
def seed_entries():
    user = User.query.first()
    journal = Journal.query.first()
    category = Category.query.first()

    # Maybe implement python based AWS logic for adding pics
    # demo = Entry(
    #     body = 'My first journal entry, How remarkable',
    #     date = datetime.datetime.now(),
    #     page_layout = 'layout_two',
    #     user_id = user.id,
    #     journal_id = journal.id,
    #     category_id = category.id
    # )

    # db.session.add(demo)
    # db.session.commit()

    paragraph = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Eget mauris pharetra et ultrices neque ornare aenean euismod elementum. Tincidunt nunc pulvinar sapien et ligula ullamcorper malesuada proin. Et odio pellentesque diam volutpat. Adipiscing elit ut aliquam purus sit amet luctus venenatis. Pellentesque habitant morbi tristique senectus et. Aliquam ultrices sagittis orci a scelerisque purus semper eget duis. Vitae nunc sed velit dignissim sodales ut eu sem integer. Donec ac odio tempor orci. Erat nam at lectus urna duis convallis convallis. Eu non diam phasellus vestibulum. Tempor nec feugiat nisl pretium fusce id velit ut. Nam at lectus urna duis convallis convallis tellus id interdum. Sed euismod nisi porta lorem mollis aliquam ut. Sed ullamcorper morbi tincidunt ornare. Interdum posuere lorem ipsum dolor sit amet. Mauris rhoncus aenean vel elit scelerisque mauris pellentesque. Senectus et netus et malesuada fames. Neque sodales ut etiam sit amet nisl purus in. Eget felis eget nunc lobortis mattis aliquam faucibus purus.'

    for num in range(1, 15):
        random_number = randint(1, 3)
        demo2 = Entry(body=paragraph * random_number,
                      date=f'2021-02-{num}',
                      page_layout='layout_one',
                      user_id=user.id,
                      journal_id=journal.id,
                      category_id=category.id)
        db.session.add(demo2)
        db.session.commit()
Пример #22
0
    def setUp(self):
        main('testing')
        
        self.app = create_app('testing')
        with self.app.app_context():
            from app.models import User, Entry
        self.client = self.app.test_client()

        self.entry_model = Entry
        self.user_model = User
       
        self.user_data = {
                    "username":"******", 
                    "email":"*****@*****.**",
                    "password":"******"
                    }
        self.entry_data = {
                    "title": "Freaky friday",
                    "description": "Fun fun fun fun fun fun"
                    }

        self.user1 = User(
            username='******',
            email='*****@*****.**',
            password='******')

        self.entry1 = Entry(
            title='I saved a dog',
            description='The dog was cute',
            user_id=1)

        self.test_user = User(
            username='******',
            email='*****@*****.**',
            password='******')
Пример #23
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()

        u = User(username='******',
                 email="*****@*****.**",
                 password='******',
                 join_time=datetime.utcnow())
        e1 = Entry(entry="e1", entry_time=datetime.utcnow(), user=u)
        e2 = Entry(entry="e2", entry_time=datetime.utcnow(), user=u)
        t1 = Tag(tag="t1")
        t2 = Tag(tag="t2")
        # add it to the database
        db.session.add_all([u, e1, t1, t2])
Пример #24
0
    def setUp(self):
        """Initialize app and define test variables"""
        self.app = create_app('testing')
        self.client = self.app.test_client()
        self.app_context = self.app.app_context()
        self.app_context.push()
        self.user_data = {
            "username": "******",
            "email": "*****@*****.**",
            "password": "******"
        }
        self.entry_data = {
            "title": "Freaky friday",
            "description": "Fun fun fun fun fun fun"
        }

        self.user1 = User(username='******',
                          email='*****@*****.**',
                          password='******')
        self.entry1 = Entry(title='I saved a dog',
                            description='The dog was cute',
                            user_id=1)
        self.test_user = User(username='******',
                              email='*****@*****.**',
                              password='******')
Пример #25
0
def created_entry():
    form = EntryForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate_on_submit():
        # content = request.json
        new_entry = Entry(
            body = form.data['body'],
            date = datetime.datetime.now(),
            page_layout = form.data['page_layout'],
            user = current_user,
            journal_id = form.data['journal_id'],
            category_id = form.data['category_id']
        )
        db.session.add(new_entry)
        db.session.commit()
        return new_entry.to_dict()
    return {'errors': validation_errors_to_error_messages(form.errors)}
Пример #26
0
def add():
    if request.method == 'POST':
        form = dict(request.form)
        del form[pkey]
        entry = Entry(**form)
        db.session.add(entry)
        db.session.commit()
        return redirect('/')
Пример #27
0
 def test_can_delete_an_entry(self):
     '''Test can delete an entry'''
     self.user1.save()
     self.entry1.save()
     entry = Entry.get(user_id=1, id=1)
     self.assertEqual(1, len(db.entries[1]))
     entry.delete()
     self.assertEqual(0, len(db.entries[1]))
Пример #28
0
    def setUp(self):
        self.app = create_app('testing')
        self.app_ctx = self.app.app_context()
        self.app_ctx.push()
        db.create_all()
        self.client = self.app.test_client()
        if User.query.get(1) is None:
            admin = User("admin", Role.Admin)
            admin.set_password("admin")
            db.session.add(admin)
            db.session.commit()

            manager = User("manager", Role.Manager)
            manager.set_password("manager")
            db.session.add(manager)
            db.session.commit()

            entry = Entry(date=datetime.date(2018, 4, 13),
                          distance=10,
                          time=datetime.time(hour=1, minute=1, second=30),
                          latitude=50.11,
                          longitude=36.11,
                          user_id=admin.id)
            db.session.add(entry)
            db.session.commit()

            weather = Weather()
            weather.get_weather(entry.id, entry.latitude, entry.longitude,
                                entry.date)
            db.session.add(weather)
            db.session.commit()

            entry = Entry(date=datetime.date(2018, 4, 14),
                          distance=0.2,
                          time=datetime.time(minute=5, second=30),
                          latitude=50.22,
                          longitude=35.22,
                          user_id=admin.id)
            db.session.add(entry)
            db.session.commit()

            weather = Weather()
            weather.get_weather(entry.id, entry.latitude, entry.longitude,
                                entry.date)
            db.session.add(weather)
            db.session.commit()
Пример #29
0
def oracle_update(id):

    logger.debug("start oracle_update")
    form = OracleUpdateForm()

    if request.method == 'GET':
        entry = Entry.select_id(id)
        #プルダウン/ラジオボタンは最初に設定しないとフォームがクリアされてしまう
        form.status.default = int(entry.USTATUS)
        form.sex.default = int(entry.USEX)
        print(form.status.default)
        form.process()
        form.entryno.data = entry.UENTRYNO
        form.username.data = entry.UNAME
        form.userkana.data = entry.UKANA
        form.email.data = entry.UEMAIL
        return render_template(ORACLE_PATH + 'update.html',
                               form=form,
                               entry=entry)

    logger.debug("start oracle_update POST")
    form = OracleUpdateForm(request.form)

    if request.method == 'POST' and form.validate():

        logger.debug("--- oracle_update POST  ---")
        #logger.debug("UT_ENTRYTEMP insert")
        entry = Entry.dict()
        entry['UENTRYNO'] = id
        entry['UNAME'] = request.form['username']
        entry['UKANA'] = mojimoji.zen_to_han(request.form['username'])
        entry['UEMAIL'] = request.form['email']
        entry['USEX'] = request.form['sex']
        entry['USTATUS'] = request.form['status']
        print(request.form['status'])
        logger.debug("--- oracle_update entry data  ---")

        if Entry.update(entry) and form.validate():
            flash("更新できました。", "success")
        else:
            flash("更新できませんでした。", "danger")

        return redirect("/sample/oracle/")

    return render_template(ORACLE_PATH + 'update.html', form=form)
Пример #30
0
def save_entry(request):
    print 'saving entry'
    entry_data = json.load(request)
    title = entry_data['title']
    if not pass_ok(entry_data['password']):
        return HttpResponse('password failure!')
    print 'password OK'
    normalized_title = entry_data['normalized_title']
    tagline = entry_data['tagline']
    body = entry_data['body']
    date = datetime.datetime.today()
    print 'date OK'
    entry = Entry(title=title, normalized_title=normalized_title,
                  tagline=tagline, body=body, date=date)
    print 'entry created'
    entry.save()
    print 'entry saved'
    return HttpResponse('success!')
Пример #31
0
 def get(self, user_id, entry_id=None):
     '''Methofd for getting both single and all entries'''
     if entry_id:
         user_entry = Entry.get(user_id=user_id, entry_id=entry_id)
         if user_entry:
             return {
                 'message': 'Entry found',
                 'entry': Entry.entry_dict(user_entry)
             }, 200
         else:
             return {'message': 'Entry not found'}, 404
     user_entries = Entry.get(user_id=user_id)
     if not user_entries:
         return {'message': 'No entries available'}, 404
     return {
         'message': 'Entries found',
         'entries': [Entry.entry_dict(entry) for entry in user_entries]
     }, 200