Skip to content

Commit

Permalink
Merge pull request #36 from Juerodriguez/fix-10-exportfiles
Browse files Browse the repository at this point in the history
Export data from Movimiento table.
  • Loading branch information
NicolasSandoval authored Jul 10, 2021
2 parents c49f76f + 9ccef39 commit 0aa15f6
Show file tree
Hide file tree
Showing 4 changed files with 85 additions and 17 deletions.
2 changes: 1 addition & 1 deletion conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def context(
current_video_name = context.current_video_name
current_video_path = current_video_name
updated_video_path = os.path.join(
video_path, f"{request.node.originalname}_{browser_name}.webm"
video_path, f"{request.node.originalname}_{browser_name}.mp4"
)
context.close()
os.rename(current_video_path, updated_video_path)
Expand Down
37 changes: 33 additions & 4 deletions controllers/expedientes.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
__author__ = "María Andrea Vignau (mavignau@gmail.com)"
__copyright__ = "(C) 2016 María Andrea Vignau. GNU GPL 3."


linked_tables = ['movimiento', 'agenda', 'parte']
import zipfile
import io
LINKED_TABLES = ['movimiento', 'agenda', 'parte']
ZIP_FILENAME = 'Movimiento.zip'
CHUNK_SIZE = 4096


@auth.requires_login()
Expand Down Expand Up @@ -50,7 +53,7 @@ def index():
constraints={
'expediente': (
db.expediente.created_by == auth.user.id)},
linked_tables=linked_tables,
linked_tables=LINKED_TABLES,
buttons_placement='right',
exportclasses=myexport,
advanced_search=False,
Expand All @@ -64,6 +67,28 @@ def index():
return locals()


@auth.requires_login()
def download():
tempfile = io.BytesIO()
temparchive = zipfile.ZipFile(tempfile, 'w', zipfile.ZIP_DEFLATED)
rows = db(db.movimiento.archivo != None).select()
try:
for file_id in rows:
file_single = file_id.archivo
if file_single:
file_loc = db.movimiento.archivo.retrieve_file_properties(file_single)['path']+ '/' + file_single
file_name = db.movimiento.archivo.retrieve_file_properties(file_single)['filename']
temparchive.write(file_loc, file_name)
finally:
temparchive.close()
tempfile.seek(0)

response.headers['Content-Type'] = 'application/zip'
response.headers['Content-Disposition'] = 'attachment; filename = %s' % ZIP_FILENAME
res = response.stream(tempfile, CHUNK_SIZE)
return res


def vista_expediente():
'muestra un panel a la izquierda que tiene los datos del expediente y permite navegar en él'
expte = SQLFORM(db.expediente,
Expand All @@ -81,11 +106,15 @@ def vista_expediente():
user_signature=True)
links = [A('Expediente', _href=url, _type='button',
_class='btn btn-default')]
for k in linked_tables:
for k in LINKED_TABLES:
args = ['expediente', '%s.expediente_id' % k, request.args[0]]
url = URL('index', args=args, user_signature=True)
text = SPAN(k.capitalize() + 's', _class='buttontext button')
links.append(A(text, _href=url, _type='button',
_class='btn btn-default'))
url = URL('download', args='movimiento.archivo') #Boton de descarga
text1="Descarga"
links.append(A(text1, _href=url, _type='button',
_class='btn btn-default'))

return dict(links=links, expte=expte)
44 changes: 32 additions & 12 deletions tests/test_user.py → tests/test_a_user.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
import pytest


def login(page):
page.click("text=Log In")
page.click(":nth-match(:text(\"Log In\"), 2)")
page.fill("input[name=\"email\"]", "example@example.com")
page.press("input[name=\"email\"]", "Tab")
page.fill("input[name=\"password\"]", "openlex1234")
page.click("input:has-text(\"Log In\")")


def test_register(page):
# ir a la página de inicio (ver pytest.ini para la url base)
page.goto("")
page.goto("http://127.0.0.1:8020/OpenLex/")
# desplegar el menu, ir a la página de registración (y confirmar url)
page.click("text=Log In")
page.click("text=Registrarse")
Expand All @@ -23,22 +35,30 @@ def test_register(page):
assert page.url.endswith("/dashboard/view#")
# confirmar que se creó el usuario:
assert page.inner_text("text=Bienvenido, Juan Perez")


def test_login(page):
# ADVERTENCIA: este test depende del anterior (sería bueno que sea independiente)
# ir a la página de inicio (ver pytest.ini para la url base)
page.goto("")
# desplegar el menu, ir a la página de registración (y confirmar url)
page.click("text=Log In")
page.click(":nth-match(:text(\"Log In\"), 2)")
assert page.url.endswith("/OpenLex/default/user/login?_next=/OpenLex/default/index")

# complear el formulario:
page.fill("input[name=\"email\"]", "example@example.com")
page.press("input[name=\"email\"]", "Tab")
page.fill("input[name=\"password\"]", "openlex1234")
page.click("input:has-text(\"Log In\")")

login(page)
# confirmar
assert page.url.endswith("/dashboard/view#")


@pytest.mark.skip(reason="Este test funciona en local pero falla en github, no toma el evento download")
def test_download(page):
page.goto("")
login(page)
page.goto("expedientes/index")
page.click("text=Movimientos")
with page.expect_download() as download_info:
# Perform the action that initiates download
page.click("text=Descarga")
download = download_info.value
# Wait for the download process to complete
name = download.suggested_filename
assert "Movimiento.zip" == name


19 changes: 19 additions & 0 deletions tests/test_b_expediente_updated.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
def test_upload_expedientes(page):
pattern = "movimiento.expediente_id"
page.goto("http://127.0.0.1:8020/OpenLex/")
login(page)
page.click("css=[alt=Expedientes]")
assert page.url.endswith("/expedientes/index")
page.click("text=Agregar")
page.fill("input[name=\"numero\"]", "1111")
page.press("input[name=\"numero\"]", "Tab")
page.fill("input[name=\"caratula\"]", "ssdd")
page.click("input:has-text(\"Enviar\")")

def login(page):
page.click("text=Log In")
page.click(":nth-match(:text(\"Log In\"), 2)")
page.fill("input[name=\"email\"]", "example@example.com")
page.press("input[name=\"email\"]", "Tab")
page.fill("input[name=\"password\"]", "openlex1234")
page.click("input:has-text(\"Log In\")")

0 comments on commit 0aa15f6

Please sign in to comment.