Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repos:
- repo: https://gitlab.com/pycqa/flake8
rev: '' # pick a git hash / tag to point to
hooks:
- id: flake8
3 changes: 1 addition & 2 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,4 @@

app = web.Application()
setup_routes(app)
web.run_app(app,host='127.0.0.1')

web.run_app(app, host='127.0.0.1')
19 changes: 10 additions & 9 deletions routes.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
from aiohttp import web
from views import homepagehandler,gethandler,getidhandler,putidhandler,postidhandler,deleteidhandler
from views import gethandler, getidhandler, \
putidhandler, postidhandler, deleteidhandler


def setup_routes(app):
app.add_routes([
web.get('/',homepagehandler),
web.get('/students',gethandler),
web.get('/students/{id}',getidhandler),
web.put('/students/{id}',putidhandler),
web.post('/students/{id}',postidhandler),
web.delete('/students/{id}',deleteidhandler)
])
app.add_routes([
web.get('/students', gethandler),
web.get('/students/{id}', getidhandler),
web.put('/students/{id}', putidhandler),
web.post('/students/{id}', postidhandler),
web.delete('/students/{id}', deleteidhandler)
])
97 changes: 97 additions & 0 deletions test_1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
from aiohttp import web
from routes import setup_routes
import views
from os import rename, remove


def help_open():
rename('DataBase.txt', 'DataBaseConst.txt')
with open("DataBase.txt", 'w') as f:
testData = ['1 name1 surname1\n',
'2 name2 surname2\n',
'3 name3 surname3']
print(*testData, file=f, sep='')
app = web.Application()
setup_routes(app)
return app


def help_close():
remove('DataBase.txt')
rename('DataBaseConst.txt', 'DataBase.txt')


async def test_to_json():
assert await views.to_json('1 2 3') == dict(id='1', name='2', surname='3')


async def test_postinfo():
pass


async def test_gethandler(aiohttp_client):
app = help_open()
client = await aiohttp_client(app)
resp = await client.get('/students')
help_close()
assert resp.status == 200
text = await resp.text()
testtext1 = '[{"id": "1", "name": "name1", "surname": "surname1"}, '
testtext2 = '{"id": "2", "name": "name2", "surname": "surname2"}, '
testtext3 = '{"id": "3", "name": "name3", "surname": "surname3"}]'
testtext = testtext1 + testtext2 + testtext3
assert testtext == text


async def test_getidhandler(aiohttp_client):
app = help_open()
client = await aiohttp_client(app)
resp = await client.get('/students/2')
help_close()
assert resp.status == 200
text = await resp.text()
assert '{"id": "2", "name": "name2", "surname": "surname2"}' == text


async def test_postidhandler(aiohttp_client):
params = {'name': 'name4', 'surname': 'surname4'}
app = help_open()
client = await aiohttp_client(app)
resp = await client.post('/students/2', data=params)
help_close()
assert resp.status == 409
text = await resp.text()
assert 'user with this id exists' == text
app = help_open()
client = await aiohttp_client(app)
resp = await client.post('/students/4', data=params)
help_close()
assert resp.status == 200
text = await resp.text()
assert '{"id": "4", "name": "name4", "surname": "surname4"}' == text


async def test_deleteidhandler(aiohttp_client):
app = help_open()
client = await aiohttp_client(app)
resp = await client.delete('/students/3')
help_close()
assert resp.status == 204


async def test_putidhandler(aiohttp_client):
params = {'name': 'name5', 'surname': 'surname5'}
app = help_open()
client = await aiohttp_client(app)
resp = await client.put('/students/5', data=params)
help_close()
assert resp.status == 200
text = await resp.text()
assert '{"id": "5", "name": "name5", "surname": "surname5"}' == text
app = help_open()
client = await aiohttp_client(app)
resp = await client.post('/students/4', data=params)
help_close()
assert resp.status == 200
text = await resp.text()
assert '{"id": "4", "name": "name5", "surname": "surname5"}' == text
75 changes: 40 additions & 35 deletions views.py
Original file line number Diff line number Diff line change
@@ -1,66 +1,71 @@
from aiohttp import web
import asyncio


def to_json(string):
a=['id','name','surname']
string=string.split()
data=dict(zip(a,string))
return (data)
async def to_json(string):
a = ['id', 'name', 'surname']
string = string.split()
data = dict(zip(a, string))
return data


async def postinfo(request):
data = await request.post()
name=data['name']
surname=data['surname']
return name,surname
data = await request.post()
name = data['name']
surname = data['surname']
return name, surname

def homepagehandler(request):
return web.FileResponse('website/index.html')

def gethandler(request):
async def gethandler(request):
with open('DataBase.txt') as dbfile:
data = list()
for user in dbfile:
data.append(to_json(user))
data.append(await to_json(user))
return web.json_response(data)

def getidhandler(request):

async def getidhandler(request):
with open('DataBase.txt') as dbfile:
for user in dbfile:
data=to_json(user)
if user.split()[0]==request.match_info['id']:
data = await to_json(user)
if user.split()[0] == request.match_info['id']:
return web.json_response(data)


async def postidhandler(request):
a=''
a = ''
with open('DataBase.txt') as dbfile:
for user in dbfile:
a+=user
if user.split()[0]==request.match_info['id']:
return web.Response(status=409,text='user with this id exists')
with open('DataBase.txt','w') as dbfilewr:
data=await postinfo(request)
newstud=request.match_info['id']+' '+data[0]+' '+data[1]
print(a+newstud,file=dbfilewr)
a += user
if user.split()[0] == request.match_info['id']:
return web.Response(
status=409,
text='user with this id exists'
)
with open('DataBase.txt', 'w') as dbfilewr:
data = await postinfo(request)
newstud = request.match_info['id'] + ' ' + data[0] + ' ' + data[1]
print(a + newstud, file=dbfilewr)
with open('DataBase.txt') as dbfile:
return web.json_response(to_json(dbfile.readlines()[-1]))
return web.json_response(await to_json(dbfile.readlines()[-1]))


def deleteidhandler(request):
a=''
a = ''
with open('DataBase.txt') as dbfile:
for user in dbfile:
if user[0] == request.match_info['id']:
with open('DataBase.txt', 'w') as dbfilewr:
b=dbfile.read()
print((a+b)[:-1],file=dbfilewr)
a+=user
return
b = dbfile.read()
print((a + b)[:-1], file=dbfilewr)
return web.Response(status=204)
a += user
return


async def putidhandler(request):
id=request.match_info['id']
info=await postinfo(request)
id = request.match_info['id']
with open('DataBase.txt') as dbfile:
for user in dbfile:
if user.split()[0]==id:
deleteidhandler(request)
if user.split()[0] == id:
await deleteidhandler(request)
return await postidhandler(request)