From b0c1a0e85828edcb198b5e8fe7e600a886a2dce8 Mon Sep 17 00:00:00 2001 From: Phuoc Cao Date: Wed, 29 Nov 2023 17:30:37 +0100 Subject: [PATCH] added view and erase log --- .gitignore | 68 +- cleanup_html/__init__.py | 11 - cleanup_html/routes.py | 3 - cleanup_html/static/pyramid-16x16.png | Bin 1319 -> 0 bytes cleanup_html/static/pyramid.png | Bin 12901 -> 0 bytes cleanup_html/static/theme.css | 32 - cleanup_html/templates/404.jinja2 | 8 - cleanup_html/templates/layout.jinja2 | 49 -- cleanup_html/templates/mytemplate.jinja2 | 8 - cleanup_html/views/__init__.py | 0 cleanup_html/views/default.py | 6 - cleanup_html/views/notfound.py | 7 - html_cleanup/routes.py | 1 + html_cleanup/static/temp/clean_all_gender.png | 5 + ...an_clean_Nantes_anthologie_cinema_viet.htm | 769 ++++++++++++++++++ .../static/temp/clean_proposed_file_name.html | 5 + html_cleanup/static/temp/errors_log | 5 +- html_cleanup/templates/home.jinja2 | 15 +- html_cleanup/templates/layout.jinja2 | 2 +- html_cleanup/templates/view_log.jinja2 | 19 + html_cleanup/views/default.py | 100 ++- setup.py | 2 +- 22 files changed, 895 insertions(+), 220 deletions(-) delete mode 100644 cleanup_html/__init__.py delete mode 100644 cleanup_html/routes.py delete mode 100644 cleanup_html/static/pyramid-16x16.png delete mode 100644 cleanup_html/static/pyramid.png delete mode 100644 cleanup_html/static/theme.css delete mode 100644 cleanup_html/templates/404.jinja2 delete mode 100644 cleanup_html/templates/layout.jinja2 delete mode 100644 cleanup_html/templates/mytemplate.jinja2 delete mode 100644 cleanup_html/views/__init__.py delete mode 100644 cleanup_html/views/default.py delete mode 100644 cleanup_html/views/notfound.py create mode 100644 html_cleanup/static/temp/clean_all_gender.png create mode 100644 html_cleanup/static/temp/clean_clean_Nantes_anthologie_cinema_viet.htm create mode 100644 html_cleanup/static/temp/clean_proposed_file_name.html create mode 100644 html_cleanup/templates/view_log.jinja2 diff --git a/.gitignore b/.gitignore index b24d71e..1de985c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,50 +1,22 @@ -# These are some examples of commonly ignored file patterns. -# You should customize this list as applicable to your project. -# Learn more about .gitignore: -# https://www.atlassian.com/git/tutorials/saving-changes/gitignore - -# Node artifact files -node_modules/ +*.egg +*.egg-info +*.pyc +*$py.class +*~ +*.sqlite +.coverage +coverage.xml +build/ dist/ - -# Compiled Java class files -*.class - -# Compiled Python bytecode -*.py[cod] - -# Log files -*.log - -# Package files -*.jar - -# Maven -target/ -dist/ - -# JetBrains IDE -.idea/ - -# Unit test reports -TEST*.xml - -# Generated by MacOS +.tox/ +nosetests.xml +env*/ +tmp/ +Data.fs* +*.sublime-project +*.sublime-workspace +.*.sw? +.sw? .DS_Store - -# Generated by Windows -Thumbs.db - -# Applications -*.app -*.exe -*.war - -# Large media files -*.mp4 -*.tiff -*.avi -*.flv -*.mov -*.wmv - +coverage +test diff --git a/cleanup_html/__init__.py b/cleanup_html/__init__.py deleted file mode 100644 index a3d5a64..0000000 --- a/cleanup_html/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from pyramid.config import Configurator - - -def main(global_config, **settings): - """ This function returns a Pyramid WSGI application. - """ - with Configurator(settings=settings) as config: - config.include('pyramid_jinja2') - config.include('.routes') - config.scan() - return config.make_wsgi_app() diff --git a/cleanup_html/routes.py b/cleanup_html/routes.py deleted file mode 100644 index 25504ad..0000000 --- a/cleanup_html/routes.py +++ /dev/null @@ -1,3 +0,0 @@ -def includeme(config): - config.add_static_view('static', 'static', cache_max_age=3600) - config.add_route('home', '/') diff --git a/cleanup_html/static/pyramid-16x16.png b/cleanup_html/static/pyramid-16x16.png deleted file mode 100644 index 979203112e76ba4cfdb8cd6f108f4275e987d99a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1319 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xd_B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxR5#hc&_u!9QqR!T z(8R(}N5ROz&{*HVSl`fC*U-qyz|zXlQ~?TIxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7KMf`)Hma%LWg zuL;)R>ucqiS6q^qmz?V9Vygr+LN7Bj#mdRl*wM}0&C<--)xyxw)!5S9(bdAp)YZVy zz`)Yd%><^`B|o_|H#M&WrZ)wl*Ab^)P+G_>0NU)5T9jFqn&MWJpQ`}&vsET;x0vHJ z52`l>w_7Z5>eUB2MjsTjNHGl)0wy026P|8?9C*r4%>yR)B4E1CQ{KVEz`!`m)5S5Q z;#SXOUk#T)k>lxKj4~&v95M;sSJp8lNikLV)bX~~P1`qaNLZPZ<6^QgASli8jmk<% zZdJ~1%}JBkHhu^^q;ghbe{lMjv_0X)ug#yI+xz_S{hiM(g*saf_f6Pt#!wis>2u+! z{;RjXUlmP?^Kq|yJMn}2uJ~!L3EU-*{+zn6Ya6$jYueOB4G#Lx+=R;oM4sqe*Sq0$ zQ2Nf{-BFQxlX@Dog;`l=SkyQh`W)n22F}BoCTQYYC=p8g*kiK(1`FEnD$cY`NZX8<>GJicU)2$Vj5iRl-7k*od z3K)m{Gsp@4JM)eDo7z=gtG;>hu{QvcXxLU8eD@D+$BKJ@RM`zyYKvG z-8a3ur|aAMt1Vr-yH|CEDauQLkO+_f002lzQdIf%fB4Ui0QY*V)U3(^0FZ<%L_`#& zL`1-fj&^1i)}{b}Bq%eIA9uoG!laCfFcwoR zb`OTl9xm%u?u}UK6Z+-0LfvF1uNzRlu;BSs+a-xXQEAzvn#Z125}lrEE$o@!cYog? z@lko^ANF`uyQDsu%o2*s(%P^-sbKEJ1>90;Svb?qHr@sbgo4>hFv21pO(baNe1U?G_am z$%uaYhJupCKc=2k-Lpftu1m0%A~@dHZKRf6W*s6Qm&D`7K|3 zP8#?(KABe7=AZNd-k*6CTcqHJ?f3yA6ws8mf*wHc;}7VpNW)zn=9RJ4PSI>0zxN+V zk#)jtw`7ILRrYRCqD>sB@)+LaZvtH~TpCmeT z5;T(}&;kNeCnT`+Is{plpj-ki?E!QC9#b�i5=5IxreNAbVsKKM4p@aIXvt)VjX~ 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 -

Pyramid Starter project

-

404 Page Not Found

- -{% endblock content %} diff --git a/cleanup_html/templates/layout.jinja2 b/cleanup_html/templates/layout.jinja2 deleted file mode 100644 index 4aadb90..0000000 --- a/cleanup_html/templates/layout.jinja2 +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - Cookiecutter Starter project for the Pyramid Web Framework - - - - - - - - - - - - - -
-
- {% block content %} -

No content

- {% endblock content %} -
-
- -
-
- - - - - - - - - diff --git a/cleanup_html/templates/mytemplate.jinja2 b/cleanup_html/templates/mytemplate.jinja2 deleted file mode 100644 index f2e7283..0000000 --- a/cleanup_html/templates/mytemplate.jinja2 +++ /dev/null @@ -1,8 +0,0 @@ -{% extends "layout.jinja2" %} - -{% block content %} -
-

Pyramid Starter project

-

Welcome to {{project}}, a Pyramid application generated by
Cookiecutter.

-
-{% endblock content %} diff --git a/cleanup_html/views/__init__.py b/cleanup_html/views/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/cleanup_html/views/default.py b/cleanup_html/views/default.py deleted file mode 100644 index a765fc8..0000000 --- a/cleanup_html/views/default.py +++ /dev/null @@ -1,6 +0,0 @@ -from pyramid.view import view_config - - -@view_config(route_name='home', renderer='cleanup_html:templates/mytemplate.jinja2') -def my_view(request): - return {'project': 'cleanup_html'} diff --git a/cleanup_html/views/notfound.py b/cleanup_html/views/notfound.py deleted file mode 100644 index 2a8fcd2..0000000 --- a/cleanup_html/views/notfound.py +++ /dev/null @@ -1,7 +0,0 @@ -from pyramid.view import notfound_view_config - - -@notfound_view_config(renderer='cleanup_html:templates/404.jinja2') -def notfound_view(request): - request.response.status = 404 - return {} diff --git a/html_cleanup/routes.py b/html_cleanup/routes.py index 25504ad..f33cc30 100644 --- a/html_cleanup/routes.py +++ b/html_cleanup/routes.py @@ -1,3 +1,4 @@ def includeme(config): config.add_static_view('static', 'static', cache_max_age=3600) config.add_route('home', '/') + config.add_route('view_log', '/view_log') diff --git a/html_cleanup/static/temp/clean_all_gender.png b/html_cleanup/static/temp/clean_all_gender.png new file mode 100644 index 0000000..23b4f73 --- /dev/null +++ b/html_cleanup/static/temp/clean_all_gender.png @@ -0,0 +1,5 @@ + + + +untitled + diff --git a/html_cleanup/static/temp/clean_clean_Nantes_anthologie_cinema_viet.htm b/html_cleanup/static/temp/clean_clean_Nantes_anthologie_cinema_viet.htm new file mode 100644 index 0000000..6a6db1b --- /dev/null +++ b/html_cleanup/static/temp/clean_clean_Nantes_anthologie_cinema_viet.htm @@ -0,0 +1,769 @@ + + + +untitled + + + + + + + + + +
+ + + + + + + +

+ +Festival des 3 Continents, Nantes 24.11 - 3.12 2023

+ + + + + + + +

+ +Anthologie du cinéma vietnamien

+ + + + + + + +

 

+ + + + + + + +

19 films vietnamiens + + + +de 1974 à 2022

+ + + + + + + +

 

+ + + + + + + +We will meet again

+ + + + + + + +

We will meet + + + +again / Đến hẹn lại lên - Tran Vu, 1974, 108’

+ + + + + + + +

Dimanche 26.11, + + + +18:30 - Vendredi 1.12, 13:45

+ + + + + + + +

 

+ + + + + + + +

Premier amour + + / Mối tình đầu - Hai Ninh, 1977, 112’

+ + + + + + + +

Samedi 25.11, 13:45 + + + +- Jeudi 30.11, 20:30

+ + + + + + + +

 

+ + + + + + + +

The faces of may + + / Tháng năm, những gương mặt- Dang Nhat Minh, 1975, 37’

+ + + + + + + +Nostalgie de la campagne

+ + + + + + + +

Nostalgie de la + + + +campagne / Thương nhớ đồng quê - Dang Nhat Minh, + + + +1995, 116’

+ + + + + + + +

Mercredi 29.11, + + + +20:30 - Vendredi 1.12, 17:00

+ + + + + + + +

 

+ + + + + + + +

Chom et Sa + + / Chom và Sa - Pham Ky Nam, 1979, 70’

+ + + + + + + +

Dimanche 26.11, + + + +10:00 - Lundi 27.11, 16:15

+ + + + + + + +

 

+ + + + + + + +

Hanoi through + + + +whose eyes ? / Hà Nội trong mắt ai - Tran Van + + + +Thuy, 1982, 45’

+ + + + + + + +

The story of kindness + + + +or How to behave / Chuyện tử tế - Tran Van + + + +Thuy, 1987, 43’

+ + + + + + + +

Mardi 28.11, 16:00 - + + + +Dimanche 3.12, 10:30

+ + + + + + + +

 

+ + + + + + + +

Brothers + + / Anh và em - Nguyen Huu Luyen & Tran Vu, 1986, 87’

+ + + + + + + +

Dimanche 26.11, 20:45 + + + +- Jeudi 30.11, 18:30

+ + + + + + + +

 

+ + + + + + + +

La fille du + + + +fleuve / Cô gái trên sông - Dang Nhat Minh, 1987, 100’

+ + + + + + + +

Samedi 25.11, 20:45 + + + +- Jeudi 30.11, 10:15

+ + + + + + + +

 

+ + + + + + + +

Troupe de cirque + + + +ambulant / Gánh xiếc rong - Viet Linh, 1988, 80’

+ + + + + + + +

Lundi 27.11, 17:30 - + + + +Dimanche 3.12, 17:30

+ + + + + + + +

 

+ + + + + + + +

Fairytale for a + + + +17-year-old girl /  Chuyện cổ tích cho tuổi 17 - + + + +Nguyen Xuan Son, 1988, 77’

+ + + + + + + +

Mercredi 29.11, + + + +13 :00 - Samedi 2.12, 13 :00

+ + + + + + + +

 

+ + + + + + + +

La lampe dans le + + + +rêve / Ngọn đèn trong mơ - Do Minh Tuan, 1988, 75’

+ + + + + + + +

Mardi 28.11, 10:15 - + + + +Vendredi 1.12, 18:45

+ + + + + + + +

 

+ + + + + + + +

Money, + + + +Money ! / Tiền ơi ! - Tran Vu & Nguyen + + + +Huu Luyen, 1989, 93’

+ + + + + + + +

Dimanche 26.11, + + + +15:30 - Samedi 2.12, 15:45

+ + + + + + + +

 

+ + + + + + + +

Enfance orageuse + + / Tuổi thơ dữ dội - Nguyen Vinh Son, 1990, 135’

+ + + + + + + +

Lundi 27.11, 13:30 - + + + +Samedi 2.12, 20:30

+ + + + + + + +

 

+ + + + + + + +

PLease forgive me + + / Hãy tha thứ cho em - Luu Trong Ninh, 1992, 90’

+ + + + + + + +

Lundi 27.11, 18:30 - + + + +Mercredi 29.11, 18:15

+ + + + + + + +

 

+ + + + + + + +

Piège d’amour + + / Cạm bảy tình yêu - Pham Loc, 1992, 82’

+ + + + + + + +

Lundi 27.11, 10:30 - + + + +Mercredi 29.11, 14:45

+ + + + + + + +

 

+ + + + + + + +

In the lane + + / Ngõ hẹp - Bach Diep, 1993, 98’

+ + + + + + + +

Samedi 25.11, 10:15 + + + +- Mardi 28.11, 14:00

+ + + + + + + +

 

+ + + + + + + +L’Immeuble

+ + + + + + + +

L’Immeuble + + / Chung cư - Viet Linh, 1999, 90’

+ + + + + + + +

Samedi 25.11, 16:15 + + + +- Mercredi 29.11, 15:00

+ + + + + + + +

 

+ + + + + + + +Dust & metal

+ + + +

Dust & metal + + / Cát bụi và kim loại - Esther Johnson, 2022, 83’

+ + + + + + + +

Vendredi 1.12, 20:30 + + + +- Dimanche 3.12, 18:00

+ + + + + + + +

 

+ + + + + + + +

Anthologie du cinéma vietnamien :

+ + + + + + + +

+ +https://www.3continents.com/fr/programme/2023/anthologie-du-cinema-vietnamien/

+ + + + + + + +

Programme 2023, horaires et lieux :

+ + + + + + + +

+ +https://www.3continents.com/wp-content/uploads/f3c-prog-2023-40p-net-planche.pdf

+ + + + + + + +

 

+ + + + + + + +

 

+ + + + + + + +

 

+ + + + + + + +

 

+ + + + + + + +
+ + + + + + + + + + + +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + diff --git a/html_cleanup/static/temp/clean_proposed_file_name.html b/html_cleanup/static/temp/clean_proposed_file_name.html new file mode 100644 index 0000000..23b4f73 --- /dev/null +++ b/html_cleanup/static/temp/clean_proposed_file_name.html @@ -0,0 +1,5 @@ + + + +untitled + diff --git a/html_cleanup/static/temp/errors_log b/html_cleanup/static/temp/errors_log index 8d30082..8cbe55c 100644 --- a/html_cleanup/static/temp/errors_log +++ b/html_cleanup/static/temp/errors_log @@ -1,3 +1,2 @@ -2023-11-29 11:40:58 - DSC03776.JPGERREUR: La taille du fichier dépasse la limite autorisée. Téléchargement refusé. -2023-11-29 11:44:29 - DSC03777.JPG - ERREUR: La taille du fichier dépasse la limite autorisée. Téléchargement refusé. -2023-11-29 11:45:44 - devis prothèse dentaire CKT.pdf - ERREUR: Le format du fichier n'est pas valide. Téléchargement refusé. +2023-11-29 17:22:16 [ Nantes_anthologie_cinema_viet.htm ] *** Cleanup réussi. *** +2023-11-29 17:23:56 [ Screenshot 2023-11-20 at 12.07.54.png ] Le format du fichier n'est pas valide. Téléchargement refusé. diff --git a/html_cleanup/templates/home.jinja2 b/html_cleanup/templates/home.jinja2 index f17c821..159d1b8 100644 --- a/html_cleanup/templates/home.jinja2 +++ b/html_cleanup/templates/home.jinja2 @@ -7,7 +7,14 @@ {{ message }} {% endif %} - + +
+
    +
  • Seuls les fichiers au format HTML seront acceptés.
  • +
  • La taille du fichier ne doit pas dépasser 10 Mo.
  • +
+
+
@@ -21,12 +28,6 @@
- {% if file_url %}

Cleanup réussi

diff --git a/html_cleanup/templates/layout.jinja2 b/html_cleanup/templates/layout.jinja2 index 63f50b3..5584c23 100644 --- a/html_cleanup/templates/layout.jinja2 +++ b/html_cleanup/templates/layout.jinja2 @@ -8,7 +8,7 @@ - Cookiecutter Starter project for the Pyramid Web Framework + HTML cleanup diff --git a/html_cleanup/templates/view_log.jinja2 b/html_cleanup/templates/view_log.jinja2 new file mode 100644 index 0000000..e65443c --- /dev/null +++ b/html_cleanup/templates/view_log.jinja2 @@ -0,0 +1,19 @@ +{% extends "layout.jinja2" %} + +{% block content %} + +
+ {% for line in lines %} +
{{ line }}
+ {% endfor %} +
+ + {%if lines %} +
+
+ +
+
+ {% endif %} + +{% endblock content %} diff --git a/html_cleanup/views/default.py b/html_cleanup/views/default.py index 84abc52..5e16392 100644 --- a/html_cleanup/views/default.py +++ b/html_cleanup/views/default.py @@ -30,6 +30,43 @@ def home(request): 'file_name': file_name, } +def process_file(request, input_file, input_name): + # Check file mime type and size + # and if OK, process file + message = '' + ext_allowed = ['text/html'] + max_size = 5 * (1024 ** 2) # 10 Mb + temp_folder = request.registry.settings['temp_folder'] + logfile_name = os.path.join(temp_folder, 'errors_log') + + mime = magic.from_buffer(input_file.read(), mime=True) + # types de fichiers autorisés ? + if mime not in ext_allowed: + message = "Le format du fichier n'est pas valide. Téléchargement refusé." + add_error2log(logfile_name, input_name, message) + else: + # lire la taille du fichier + input_file.seek(0, 2) #seek to end + filesize = input_file.tell() + input_file.seek(0) # back to original position + # controler la taille du fichier + if filesize > max_size: + message = "La taille du fichier dépasse la limite autorisée. Téléchargement refusé." + add_error2log(logfile_name, input_name, message) + else: + # controle OK, traiter le fichier + output_name = "clean_" + input_name + output_file = os.path.join(temp_folder, output_name) + message = clean_html(input_file, output_file) + if message: + add_error2log(logfile_name, input_name, message) + else: + add_error2log(logfile_name, input_name, "*** Cleanup réussi. ***") + + + + return message + def clean_html(input_file, output_file): # cleanup undesirable tags in html file encoding = "utf-8" @@ -122,46 +159,37 @@ def clean_html(input_file, output_file): return message -def process_file(request, input_file, input_name): - # Check file mime type and size - # and if OK, process file - message = '' - ext_allowed = ['text/html', 'image/png', 'image/jpeg'] - max_size = 5 * (1024 ** 2) # 10 Mb - temp_folder = request.registry.settings['temp_folder'] - logfile_name = os.path.join(temp_folder, 'errors_log') - - mime = magic.from_buffer(input_file.read(), mime=True) - # types de fichiers autorisés ? - if mime not in ext_allowed: - message = "Le format du fichier n'est pas valide. Téléchargement refusé." - add_error2log(logfile_name, input_name, message) - else: - # lire la taille du fichier - input_file.seek(0, 2) #seek to end - filesize = input_file.tell() - input_file.seek(0) # back to original position - # controler la taille du fichier - if filesize > max_size: - message = "La taille du fichier dépasse la limite autorisée. Téléchargement refusé." - add_error2log(logfile_name, input_name, message) - else: - # controle OK, traiter le fichier - output_name = "clean_" + input_name - output_file = os.path.join(temp_folder, output_name) - message = clean_html(input_file, output_file) - if message: - add_error2log(logfile_name, input_name, message) - - - return message - def add_error2log(logfile_name, input_name, message): # ecrire message d'erreur dans le log - # Get the current date and time now = datetime.datetime.now() with open(logfile_name, 'a', encoding='utf-8') as file: - line = now.strftime("%Y-%m-%d %H:%M:%S") + ' [' + input_name + '] ' + f'{message}\n' + line = now.strftime("%Y-%m-%d %H:%M:%S") + ' [ ' + input_name + ' ] ' + f'{message}\n' file.write(line) + +@view_config(route_name='view_log', renderer='html_cleanup:templates/view_log.jinja2') +def view_log(request): + + message = '' + temp_folder = request.registry.settings['temp_folder'] + logfile_name = os.path.join(temp_folder, 'errors_log') + lines = [] + + if 'form.submitted' in request.params: + if os.path.exists(logfile_name): + os.remove(logfile_name) + + # Ouvrir le fichier en lecture seule + try: + file = open(logfile_name, "r") + lines = file.readlines() + file.close() + except Exception as e: + pass + + return { + 'page_title': "HTML cleanup log", + 'message': message, + 'lines': lines, + } diff --git a/setup.py b/setup.py index 24eabe2..a4b939c 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ tests_require = [ setup( name='html_cleanup', - version='0.0', + version='1.0', description='html_cleanup', long_description=README + '\n\n' + CHANGES, classifiers=[