예제 #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
파일: routes.py 프로젝트: mgomez0/tech-blog
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
파일: routes.py 프로젝트: mgomez0/tech-blog
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
파일: views.py 프로젝트: Applaud/blog
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