CoolFace
Apppublic

Miyaka/alertify-system2

sourceHugging Faceupdated 8mo agoView on Hugging Face
0likes
app.cpython-311.pyc328 linesDownload Raw Back to __pycache__
1�

2��i�m��N�ddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	m3Z4mZmZm
Z
ddlmZddlmZmZej�dd��Zd	ed5efd�Zded	ed6efd
�ZdZ	ddlZddlZddlmZddl m!Z!m"Z"ddl#m$Z$m%Z%n
#e&$rdZYnwxYwee'���(��j)Z*e*dzZ+e*dzZ,eej-de*dz����Z.ej-dd��Z/e	e0ee+��d���Z1e/e1_2ee1d���d�Z3d�Z4d�Z5e4��e6��Z7ej8��Z9de:fd�Z;Gd �d!ej<��Z=Gd"�d#��Z>e>e,��Z?d$�Z@dKd%�ZAe1�d&��d'���ZBe1�d(��d)���ZCe1�Dd*��d+���ZEe1�Dd,��d-���ZFe1�Dd.��d/���ZGe1�Dd0��d1���ZHe1�Dd2��d3���ZIe1�d4��d5���ZJe1�d6��d7���ZKe1�d8��d9���ZLe1�Dd8��d:���ZMe1�Dd;��d<���ZNe1�Dd=��d>eOfd?���ZPe1�Dd@��d>eOfdA���Z(e1�DdB��d>eOfdC���ZQe1�dD��dE���ZRe0dFkr4eOej-dGdH����ZSe1�TdIeSd�J��dSdS)L�N)�datetime)�Path)�Flask�request�jsonify�send_from_directory�session)�CORS)�generate_password_hash�check_password_hash�ALERTIFY_HASH_METHODz
pbkdf2:sha256�password�returnc�.�t|t���S)zBCreate a hash using a portable algorithm (default: pbkdf2:sha256).)�method)r�HASH_METHOD)rs �1/mnt/data/tmp_alertify/alertify_new_system/app.py�
hash_passwordrs��!�(�;�?�?�?�?��
password_hashc�F�	t||��S#t$rYdSwxYw)z�Verify a password hash.7 8    If the environment lacks hashlib.scrypt, scrypt hashes can't be verified.9    In that case we return False (caller should treat as invalid credentials).10    F)r�AttributeError)rrs  r�verify_passwordrs9���"�=�(�;�;�;�������u�u����s��11 � T)�
AutoTokenizer�	AutoModel)�fuzz�processF�public�model�ALERTIFY_DBzalertify.sqlite3�12SECRET_KEYzalertify-dev-secret-change-me�)�
static_folder�static_url_path)�supports_credentialsc�Z�tjt��}tj|_|S�N)�sqlite3�connect�DB_PATH�Row�row_factory)�conns r�dbr.As ���?�7�#�#�D��{�D���Krc	��t��}|���}|�d��|�d��|���t	jdt	jdd����}t	jdt	jdd����}|�d	|f��|���}t|��}|s<|�d13dd||t��f��|���n�|d
r{t|d
���14t�d��ddz��s2|�d||df��|���|�
��dS)NaI15        CREATE TABLE IF NOT EXISTS users (16          id INTEGER PRIMARY KEY AUTOINCREMENT,17          role TEXT NOT NULL DEFAULT 'citizen',18          full_name TEXT NOT NULL,19          email TEXT,20          password_hash TEXT,21          birthdate TEXT,22          age INTEGER,23          created_at TEXT NOT NULL24        )25        a26        CREATE TABLE IF NOT EXISTS posts (27          id INTEGER PRIMARY KEY AUTOINCREMENT,28          user_id INTEGER,29          author_name TEXT NOT NULL,30          created_at TEXT NOT NULL,31          report_mode TEXT NOT NULL DEFAULT 'text',32          text TEXT NOT NULL,33          selected_barangay TEXT,34          selected_event TEXT,35          location_type TEXT,36          location_label TEXT,37          location_source TEXT,38          disaster_type TEXT,39          urgency_level TEXT,40          ai_json TEXT,41          status TEXT NOT NULL DEFAULT 'NEW',42          ack_by INTEGER,43          ack_at TEXT,44          resolved_by INTEGER,45          resolved_at TEXT,46          feedback_text TEXT,47          feedback_at TEXT,48          FOREIGN KEY(user_id) REFERENCES users(id)49        )50        �ADMIN_EMAIL�ALERTIFY_ADMIN_EMAILzadmin@alertify.local�ADMIN_PASSWORD�ALERTIFY_ADMIN_PASSWORD�admin123zBSELECT id, password_hash FROM users WHERE role='admin' AND email=?zVINSERT INTO users(role, full_name, email, password_hash, created_at) VALUES(?,?,?,?,?)�adminz	LGU Admin��:rz+UPDATE users SET password_hash=? WHERE id=?)r.�cursor�execute�commit�os�getenv�fetchoner�now�str�51startswithr�split�close)r-�cur�admin_email�52admin_pass�row�53admin_hashs      r�init_dbrHGs���
�4�4�D�54�+�+�-�-�C��K�K�	�
�
�
��K�K�	����8	�K�K�M�M�M��)�M�2�9�5K�Mc�+d�+d�e�e�K���+�R�Y�7P�R\�-]�-]�^�^�J��K�K�T�Wb�Vd�e�e�e�55
�,�,�.�.�C��z�*�*�J������d�
�k�;�56�C�E�E�B�	57�	58�	59�	
���
�
�
�
��q�6�	�#�c�!�f�+�+�0�0��1B�1B�3�1G�1G��1J�S�1P�Q�Q�	��K�K�E�60�TW�XY�TZ�G[�\�\�\��K�K�M�M�M��J�J�L�L�L�L�Lrc�V�tj���d���dzS)N�seconds)�timespec�Z)r�utcnow�	isoformat�rrr>r>�s&���?���&�&�	�&�:�:�S�@�@r�eventc�f�dtj|d����d�}t5g}tt��D]?}	|�|d����#t$r|�|��Y�<wxYw|D]}t�|���	ddd��dS#1swxYwYdS)Nzdata: F��ensure_asciiz61 62)�block)	�json�dumps�	_sub_lock�list�_subscribers�put�	Exception�append�discard)rP�msg�dead�qs    r�publishra�s��63>�4�:�e�%�8�8�8�64>�65>�66>�C�	�$�$����l�#�#�	�	�A�
����c���'�'�'�'���
�
�
����A������
�����	$�	$�A�� � ��#�#�#�#�	$�$�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�$�$s4�B&�A�B&�A6�3B&�5A6�6"B&�&B*�-B*c�(��eZdZd�fd�	Zdd�Z�xZS)�
Alertify3Task�333333�?c�F��t�����||_|jjj}tj|��|_tj||��|_	tj||��|_67tj||��|_dSr')�super�__init__�encoder�config�hidden_size�nn�Dropout�dropout�Linear�	type_head�urg_head�loc_head)�selfrh�n_type�n_urg�n_loc�	dropout_p�hid�	__class__s       �rrgzAlertify3Task.__init__�s{���
������������l�!�-���z�)�,�,�����3��/�/�����3��.�.��
���3��.�.��
�
�
rNc�.�|�|||���}|�|jdd�df��}|�|��}|�|��}|�|��}t
j|||gd���}	|	S)N)�	input_ids�attention_mask�token_type_idsrr6)�dim)rhrm�last_hidden_staterorprq�torch�cat)68rrrzr{r|�out�cls�lt�lu�ll�logitss69          r�forwardzAlertify3Task.forward�s����l�l�Y�~�^l�l�m�m���l�l�3�0����A��6�7�7��
�^�^�C�
 �
 ��
�]�]�3�
�
��
�]�]�3�
�
����B��B�<�Q�/�/�/���
r)rd)NNN)�__name__�70__module__�__qualname__rgr��
__classcell__)rxs@rrcrc�sQ�������/�/�/�/�/�/��������rrcc�R�eZdZdefd�Zedd���Zd�Zdefd�Z	ddefd�Z71d
S)�72AlertifyAI�	model_dirc���||_d|_d|_d|_d|_g|_g|_g|_i|_i|_	g|_73g|_i|_d|_
d|_dS)NF�cpu�)r��ready�err�device�max_len�type_labels�74urg_labels�75loc_labels�loc2id�id2loc�brgys�	landmarks�alias_index�	tokenizerr)rrr�s  rrgzAlertifyAI.__init__�sq��"�����76���������������������������77������������78�79�80r�x�81np.ndarrayc��||�dd���z82}tj|��}||�dd���dzzS)Nr6T)�axis�keepdimsg�-���q=)�max�np�exp�sum)r��es  r�_softmaxzAlertifyAI._softmax�sI��
����1�t��,�,�,���F�1�I�I���A�E�E�q�4�E�0�0�5�8�9�9rc�N�|js|jrdSts	d|_dS	tj|jdz�d�����}t|�dd����|_	|d|_83|d|_|d	|_t|�d84��t��r2d�|�d85i�����D��nd�t!|j��D��|_|�d
d�t!|j��D����|_tj|jdz�d�����}|�dg��|_|�dg��|_|�di��|_t-jt1|j��d���|_|jdz}|dz���rKt7jt1|��t9|dz��������|_n/|�dd��}t7j|��|_|jdz}t=jt1|��d���}tA|jtC|j86��tC|j��tC|j��tE|�dd�������|_#|j#j$�%|d ��|j#j&�%|d!��|j#j'�%|d"��|j#�(��t=j)ttUj+d#d$������d|_dS#tX$r}d%|��|_Yd}~dSd}~wwxYw)&Nz:AI dependencies missing. Check requirements.txt on Render.zlabel_maps.json�utf-8��encodingr�r�r�r�r�r�c�4�i|]\}}t|��|��SrO)�int)�.0�k�vs   r�87<dictcomp>z#AlertifyAI.load.<locals>.<dictcomp>�s$��V�V�V���A�3�q�6�6�1�V�V�Vrc��i|]\}}||��	SrOrO�r��i�ts   rr�z#AlertifyAI.load.<locals>.<dictcomp>�sO��Kv�Kv�Kv�TW�TU�VW�LM�NO�Kv�Kv�Kvrr�c��i|]\}}||��	SrOrOr�s   rr�z#AlertifyAI.load.<locals>.<dictcomp>�s��3^�3^�3^�C�A�a�A�a�3^�3^�3^r�location_gazetteer.json�	barangaysr�r�T)�local_files_onlyrhzconfig.jsonzmodel.safetensors�88base_modelzbert-base-multilingual-casedz89heads.ckptr�)�map_locationrvrd)rhrsrtrurvrorprq�TORCH_NUM_THREADS�1zAI load failed: )-r�r��AI_AVAILABLErU�loadsr��	read_textr��getr�r�r�r��90isinstance�dict�items�	enumerater�r�r�r�r�r�from_pretrainedr?r��existsr�boolrhr�loadrc�len�floatrro�load_state_dictrprq�eval�set_num_threadsr;r<r[)rr�91label_maps�gaz�enc_dir�	base_name�92heads_path�ckptr�s        rr�zAlertifyAI.load�s���:�	���	��F��	�S�D�H��F�-	.���T�^�6G�%G�$R�$R�\c�$R�$d�$d�e�e�J��z�~�~�i��=�=�>�>�D�L�)�-�8�D��(��6�D�O�(��6�D�O�Zd�eo�es�es�t|�e}�e}�@D�[E�[E�v�V�V�����"�1M�1M�1S�1S�1U�1U�V�V�V�V�Kv�Kv�[d�ei�et�[u�[u�Kv�Kv�Kv�D�K�$�.�.��3^�3^�9�T�_�C]�C]�3^�3^�3^�_�_�D�K��*�d�n�/H�H�S�S�]d�S�e�e�f�f�C�����b�1�1�D�J� �W�W�[�"�5�5�D�N�"�w�w�}�b�9�9�D��+�:�3�t�~�;N�;N�ae�f�f�f�D�N��n�y�0�G��-�'�/�/�1�1�
D�(�8��W���X\�^e�h{�^{�^D�^D�^F�^F�YG�YG� H� H� H����'�N�N�<�9W�X�X�	�(�8��C�C�����,�6�J��:�c�*�o�o�E�B�B�B�D�&����4�+�,�,��$�/�*�*��$�/�*�*������d� ;� ;�<�<����D�J�
�J� �0�0��k�1B�C�C�C��J��/�/��Z�0@�A�A�A��J��/�/��Z�0@�A�A�A��J�O�O�����!�#�b�i�0C�S�&I�&I�"J�"J�K�K�K��D�J�J�J���	.�	.�	.�-�!�-�-�D�H�H�H�H�H�H�H�����	.���s�O!P�93P$�94P�P$�textc���|pd���}|sdddddifSt|dd��}|�:t|j���t95d���|_|j}|D]Y}t|��d	krD||vr@|j|}|�d96d��|�dd��dd
|d�fcS�Zgd�}d}|D]�}|�|��}	|	dkr�||	|	dz�}97|98�	|d���99��dd�}100|101rWtj|102t|j�����tj���}|r|ddkr|}n��|r_|\}}}
|j|}|�d103d��|�dd��t!|��d|t!|��d�fSdddddifS)Nr"�NONEr�reason�empty�
_alias_sortedT)�key�reverse��type�canon�_�	substring)r�alias)104�brgyzbrgy.�bgy�barangay�pob�	poblacion�sa�nasa�near�malapit������<�()�scorerr6�V�fuzzy)rr��score�no_match)�lower�getattr�sortedr��keysr�r�r��find�replace�stripr�105extractOnerXr�WRatior�)rrr�r��aliases�a�info�tokens�best�tok�idx�cap�hit�sc�_s              r�extract_locationzAlertifyAI.extract_locations9��
�Z�R��� � ���	8��B��H�g�#6�7�7��$���6�6���?�!'��(8�(=�(=�(?�(?�S�RV�!W�!W�!W�D���(�G��	r�	r�A��1�v�v��{�{�q�A�v�v��'��*�������0�0�$�(�(�7�B�2G�2G��Xc�no�Mp�Mp�q�q�q�q��k�j�j�����		�		�C��&�&��+�+�C��b�y�y���C��F�106�m���k�k�#�r�*�*�0�0�2�2�3�B�3�7����!�,�S�$�t�7G�7L�7L�7N�7N�2O�2O�X\�Xc�d�d�d�C���s�1�v��|�|�"������	A��H�A�r�1��#�A�&�D��H�H�V�V�,�,�d�h�h�w��.C�.C�S��W�W�Y`�kl�wz�{}�w~�w~�N�N�A�
A���A��*�5�6�6rT��������?�	post_textc107��|���|js||jpddddddd�S|�|��\}}}}t	j��5|�|dd|jd	�108��}|jdi|���	���109�����}	ddd��n#1swxYwYt|j
��}110|111t|j��z}|	dd�d|112�f}|	dd�|113|�f}
|	dd�|d�f}t|�d���d
��}t|
�d���d
��}t|�d���d
��}|�|��}t%|d
|f��}|t|j��kr
|j|nd}d\}}d}|r|dkr||d|�d�}}}n@|dkr*||kr$||jvrd}n||jvrd}nd}|d|d�d�}}n|dkr114||d|�d�}}}||||||t|j
��kr
|j
|nd|t|j��kr
|j|nd||d�	}|d���dvrd|d<d|d<d|d<d|d<|S)NzAI not readyr�r"�Non-disaster�115NON-URGENT)�116input_text�error�
location_type�location_label�location_source�
disaster_type�
urgency_levelT�117max_length�pt)�118truncation�paddingr�return_tensorsr6)r�r)r�r"z119GAZETTEER(�)�BARANGAY�LANDMARKzMODEL(p=z.2f)	rrrr�gazetteer_debugrr�ml_location_top�ml_location_probr)znon-disaster�nondisasterznon disasterrrrrrO)r�r�r�r120r�no_gradr�r�r�detachr��numpyr�r�r�r��argmaxr�r�r�r�r�r�)rrr�use_gazetteer_first�loc_prob_threshold�g_typ�g_label�g_conf�g_dbg�encr�r�b�logits_type�121logits_urg�122logits_loc�p_type�p_urg�p_loc�	loc_probs�loc_prob�ml_loc_label�chosen_type�chosen_label�123chosen_srcr�s                         r�predictzAlertifyAI.predict4s����	�	�����z�		�'���3�^�!'�"$�#)�!/�!-���
�)-�(=�(=�i�(H�(H�%��w���
�]�_�_�	>�	>��.�.���$��<�#�!���C� �T�Z�&�&�#�&�&�-�-�/�/�3�3�5�5�;�;�=�=�F�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�
�� �!�!��
��D�O�$�$�$���Q�Q�Q����U�m���Q�Q�Q��!��V�n�124��Q�Q�Q����U�m�125��[�'�'�Q�'�/�/��2�3�3���Z�&�&�A�&�.�.�q�1�2�2���Z�&�&�A�&�.�.�q�1�2�2���M�M�*�-�-�	��)�A�u�H�-�.�.��16��T�_�9M�9M�1M�1M�t��u�-�-�SY��$.�!��\��126��	_�5�F�?�?�49�7�DZ�QW�DZ�DZ�DZ�z��K�K��v�%�%�(�6H�*H�*H��4�:�-�-�",�K�K�!�T�^�3�3�",�K�K�",�K�+7�9S�H�9S�9S�9S�9S�j����&���8=�w�H^�U[�H^�H^�H^�:�\��$�(�*�)�$�9?�#�d�FV�BW�BW�9W�9W�T�-�f�5�5�]k�7<�s�4�?�?S�?S�7S�7S�T�_�U�3�3�Ye�+� (�127128�129130�����%�%�'�'�+Z�Z�Z�#/�C�� �#)�C�� �$&�C� �!�%+�C�!�"��131s�A#C	�	C
�C
N)r�r�)Tr)r�r�r�rrg�staticmethodr�r�r?r132r;rOrrr�r��s��������$�����$�:�:�:��\�:�1334.�4.�4.�n"7�S�"7�"7�"7�"7�HL�L��L�L�L�L�L�Lrr�c���tjd��}|sdSt��}|�d|f�����}|���|rt
|��ndS)N�uidzSELECT * FROM users WHERE id=?)r	r�r.r9r=rBr�)r>r-rFs   r�current_userr?�sk��134�+�e�135�136�C����t�
�4�4�D�137�,�,�7�#��138@�139@�140I�141I�142K�143K�C��J�J�L�L�L��%�4��9�9�9��%rc��t��}|sdtddi��dffS|r.|�d��|krdtddi��dffS|dfS)Nrz
Not logged in��rolezNot authorizedi��r?rr�)rB�us  r�
require_loginrE�su�����A��@��g�w��8�9�9�3�?�?�?��A����f�
�
��%�%��g�w�(8�9�:�:�C�@�@�@��d�7�Nr�/c�,�ttd��S�Nz144index.html)r�145PUBLIC_DIRrOrr�homerJ�s���z�<�8�8�8rz/<path:path>c��t|z}|���rtt|��Sttd��SrH)rI�is_filer)�path�fulls  r�static_proxyrO�s>�����D��|�|�~�~�5�"�:�t�4�4�4��z�<�8�8�8rz/api/auth/quick-loginc�V�tjpi�dd�����}|st	ddi��dfSt��}|�d|f�����}|sf|�dd|ddddt��f��|�	��|�d	|f�����}|�146��t|d147��td<t	dd
i��S)N�namer"rzName is required�zJSELECT * FROM users WHERE role='citizen' AND full_name=? AND email IS NULL�jINSERT INTO users(role, full_name, email, password_hash, birthdate, age, created_at) VALUES(?,?,?,?,?,?,?)�citizenzcSELECT * FROM users WHERE role='citizen' AND full_name=? AND email IS NULL ORDER BY id DESC LIMIT 1�idr>�okT)
rrUr�r�rr.r9r=r>r:rBr�r	)rQr-rFs   r�quick_loginrW�s2���L��B�#�#�F�B�/�/�5�5�7�7�D��;���!3�4�5�5�s�:�:�
�4�4�D�148�,�,�c�fj�el�149m�150m�151v�152v�153x�154x�C��V����x�
��d�D�$��c�e�e�<�	155�	156�	157�	
���
�
�
��l�l�A�DH�CJ�K�K�T�T�V�V���J�J�L�L�L���T��^�^�G�E�N��D�$�<� � � rz/api/auth/registerc�`�tjpi}|�d��p|�d��pd���}|�d��pd������}|�d��pd���}|�d��pd���}|�d��}|r|r|stdd	i��d158fSt
��}|�d|f�����r'|�	��tddi��d159fS|�d
d||t|��|pd|dvrt|��ndt��f��|�
��|�d|f�����d}|�	��t|��td<tddi��S)N�	full_namerQr"�emailr�	birthdate�agerz+Full name, email, and password are requiredrRz!SELECT 1 FROM users WHERE email=?zEmail already registeredrSrT)Nr"z"SELECT id FROM users WHERE email=?rr>rVT)rrUr�r�r�rr.r9r=rBrr�r>r:r	)�datarYrZrr[r\r-r>s        r�registerr^�s���<��2�D����+�&�&�@�$�(�(�6�*:�*:�@�b�G�G�I�I�I�
�X�X�g�
�
�
$�"�+�+�-�-�3�3�5�5�E�����$�$�*��1�1�3�3�H����+�&�&�,�"�3�3�5�5�I�160�(�(�5�/�/�C��V�E�V��V���!N�O�P�P�RU�U�U�
�4�4�D��|�|�7�%��B�B�K�K�M�M�C��161�162������!;�<�=�=�s�B�B��L�L�t�	�I�u�m�H�&=�&=�y�?P�D�^a�is�^s�^s�RU�VY�RZ�RZ�RZ�y}�@C�@E�@E�	F����	�K�K�M�M�M�163�,�,�;�e�X�164F�165F�166O�167O�168Q�169Q�RS�170T�C��J�J�L�L�L���X�X�G�E�N��D�$�<� � � rz/api/auth/loginc�l�tjpi}|�d��pd������}|�d��pd���}|r|stddi��dfSt
��}|�d|f�����}|�	��|r|drt|d|��stdd	i��d171fSt|d��td<td
di��S)NrZr"rr�Email and password requiredrRz4SELECT * FROM users WHERE email=? AND role='citizen'rzInvalid credentialsrArUr>rVT�
rrUr�r�r�rr.r9r=rBrr�r	�r]rZrr-rFs     r�loginrc�s*���<��2�D�
�X�X�g�
�
�
$�"�+�+�-�-�3�3�5�5�E�����$�$�*��1�1�3�3�H��F��F���!>�?�@�@�#�E�E�
�4�4�D�172�,�,�M�PU�x�173X�174X�175a�176a�177c�178c�C��J�J�L�L�L��>�c�/�*�>�/�#�o�BV�X`�2a�2a�>���!6�7�8�8�#�=�=���T��^�^�G�E�N��D�$�<� � � rz/api/auth/admin-loginc�\�tjpi}|�d��pd������}|�d��pd���}|r|stddi��dfSt
��}|�d|f�����}|�	��|rt|d|��stdd	i��d179fSt|d��td<td
di��S)NrZr"rrr`rRz2SELECT * FROM users WHERE email=? AND role='admin'rzInvalid admin credentialsrArUr>rVTrarbs     r�admin_loginre�s���<��2�D�
�X�X�g�
�
�
$�"�+�+�-�-�3�3�5�5�E�����$�$�*��1�1�3�3�H��F��F���!>�?�@�@�#�E�E�
�4�4�D�180�,�,�K�e�X�181V�182V�183_�184_�185a�186a�C��J�J�L�L�L��D�o�c�/�&:�H�E�E�D���!<�=�>�>��C�C���T��^�^�G�E�N��D�$�<� � � rz/api/auth/logoutc�N�tjdd��tddi��S)Nr>rVT)r	�poprrOrr�logoutrh
s&���K��t�����D�$�<� � � rz/api/mec	��t��}|stddi��Std|d|d|d|�d��d���S)	N�	logged_inFTrUrBrYrZ)rjrUrBrYrZrC)rDs r�merksg�����A��-���U�+�,�,�,�����g��&�	��{�^����w�������rz/api/meta/barangaysc���	tjtdz�d������dg��}n#t187$rg}YnwxYwt
d|i��S)Nr�r�r�r�)rUr��	MODEL_DIRr�r�r[r)r�s r�meta_barangaysrn%sy����188�I�(A�A�L�L�V]�L�^�^�_�_�c�c�do�qs�t�t�����������������K��'�(�(�(s�AA�A�Az189/api/postsc���t��\}}|r|Stj�d��}d}g}g}|ddkr0|�d��|�|d��|r*|�d��|�|��|r|dd	�|��zz
}|d190z
}t
��}d�|�||�����D��}|�	��|D]6}|�d��rtj|d��nd|d<�7td
|i��S)N�statuszSELECT * FROM postsrBr5z	user_id=?rUzstatus=?z WHERE z AND z ORDER BY id DESC LIMIT 200c�,�g|]}t|����SrO)r�)r��rs  r�191<listcomp>zlist_posts.<locals>.<listcomp>Hs��@�@�@��D��G�G�@�@�@r�ai_json�posts)
rEr�argsr�r\�joinr.r9�fetchallrBrUr�r)	rDr�rpr`�params�wherer-�rowsrrs	         r�192list_postsr|3sf��
�_�_�F�A�s�193���194�
�\�
�
�h�
'�
'�F��A�
�F��E���y�G���
���[�!�!�!��
�
�a��g����
��
���Z� � � ��
�
�f�����-�	�Y����e�,�,�
,�,���	&�&�A�
�4�4�D�@�@�T�\�\�!�V�4�4�=�=�?�?�@�@�@�D��J�J�L�L�L�
�N�N��34�5�5��3C�3C�M�t�z�!�I�,�/�/�/���)����G�T�?�#�#�#rc�~�t��\}}|r|Stjd���pi}|s,tjr tj�d���}|�d��pd���}|�d��pd���pd}|�d��pd���pd}|stdd	i��d195fS	t�	|��}n6#t$r)}|dddt|��j�d
�ddd�}Yd}~nd}~wwxYw|rd|d<||d<d|d<t��}|���}	|	�d|d|dt!��d||||�d��|�d��|�d��|�d��|�d��t#j|d���df��|���|	j}196|�d|197f�����}|���dt/|��d �}||d!d"<t1|��td|d!d#���S)$NT)�silent)�flatr�r"r�rPrzPost text is requiredrRr�zERROR(rrr)rrrrrrrrr�
USER_SELECTEDr�T198        INSERT INTO posts(user_id, author_name, created_at, report_mode, text,199                          selected_barangay, selected_event,200                          location_type, location_label, location_source,201                          disaster_type, urgency_level, ai_json, status)202        VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)203        rUrYrrFrR�NEW�SELECT * FROM posts WHERE id=?�new_post�r��postr�rt�rVr�)rEr�get_json�form�to_dictr�r�r�air;r[r�r�r.r8r9r>rUrVr:�	lastrowidr=rBr�ra)
rDr�r]r�r�rP�ai_outr�r-rC�post_idrF�
event_payloads
             r�create_postr�Ps���
�_�_�F�A�s�204���205���4�(�(�(�.�B�D��/�G�L�/��|�#�#��#�.�.���H�H�V���"��)�)�+�+�D�����$�$�*��1�1�3�3�;�t�H�
�X�X�g�
�
�
$�"�+�+�-�-�5��E��@���!8�9�:�:�C�?�?�206����D�!�!�����	207�	208�	209��#� �;��Q���(8�;�;�;�+�)�
210�211�����������	212�����4�",����#+��� �$3�� �!�
�4�4�D�213�+�+�-�-�C��K�K�	�
�d�G�
�k�N��E�E������J�J��'�'��J�J�'�(�(��J�J�(�)�)��J�J��'�'��J�J��'�'��J�v�E�2�2�2��	214����2	�K�K�M�M�M��m�G�215�,�,�7�'��216D�217D�218M�219M�220O�221O�C��J�J�L�L�L�'��c���;�;�M�'-�M�&��)�$��M�����$�
�f�(=�>�>�?�?�?s�0D�222D>�D9�9D>z223/api/panicc��t��\}}|r|Stjpi}|�d��pd���}|�d��pd���}|stddi��dfS|stddi��dfSd|�d	|�d224�}t�|��}d|d<d
|d<||d<d|d<t��}|�	��}|�225d|d|dt��d||||�d��|�d��|�d��|�d��|�d��tj|d���df��|�
��|j}	|�226d|	f�����}227|���dt#|228��d�}||dd<t%|��td|dd ���S)!Nr�r"rPrzBarangay is requiredrRzEvent type is requiredzCRITICAL EMERGENCY! z. NEED HELP ASAP! Location: z, Lipa City.�CRITICALrrrrr�rr�rUrY�panicrFrRr�r�r�r�r�rtTr�)rErrUr�r�rr�r;r.r8r9r>rVr:r�r=rBr�ra)rDr�r]r�rPr�r�r-rCr�rFr�s            rr�r��sP��
�_�_�F�A�s�229���230��<��2�D�����$�$�*��1�1�3�3�H�
�X�X�g�
�
�
$�"�+�+�-�-�E��?���!7�8�9�9�3�>�>��A���!9�:�;�;�S�@�@�\�%�[�[�X�[�[�[�D�
�Z�Z��
�
�F�(�F�?��(�F�?��'�F��� /�F���
�4�4�D�231�+�+�-�-�C��K�K�	�
�d�G�
�k�N��E�E������J�J��'�'��J�J�'�(�(��J�J�(�)�)��J�J��'�'��J�J��'�'��J�v�E�2�2�2��	232����2	�K�K�M�M�M��m�G�233�,�,�7�'��234D�235D�236M�237M�238O�239O�C��J�J�L�L�L�'��c���;�;�M�'-�M�&��)�$��M�����$�
�f�(=�>�>�?�?�?rz/api/posts/<int:post_id>/ackr�c���td���\}}|r|St��}|�d|dt��|f��|���|�d|f�����}|���tdt|��d���tdt|��d	���S)240Nr5�rBzMUPDATE posts SET status='ACK', ack_by=?, ack_at=? WHERE id=? AND status='NEW'rUr��update_postr�Tr��241rEr.r9r>r:r=rBrar�r�r�rDr�r-rFs     r�ackr��s���
��
(�
(�
(�F�A�s�242���243�
�4�4�D��L�L�W�	244�4��#�%�%��!����	�K�K�M�M�M�245�,�,�7�'��246D�247D�248M�249M�250O�251O�C��J�J�L�L�L��]�D��I�I�6�6�7�7�7��$��S�	�	�2�2�3�3�3rz /api/posts/<int:post_id>/resolvec���td���\}}|r|St��}|�d|dt��|f��|���|�d|f�����}|���tdt|��d���tdt|��d	���S)252Nr5r�zKUPDATE posts SET status='RESOLVED', resolved_by=?, resolved_at=? WHERE id=?rUr�r�r�Tr�r�r�s     r�resolver��s���
��
(�
(�
(�F�A�s�253���254�
�4�4�D��L�L�U�	255�4��#�%�%��!����	�K�K�M�M�M�256�,�,�7�'��257D�258D�259M�260M�261O�262O�C��J�J�L�L�L��]�D��I�I�6�6�7�7�7��$��S�	�	�2�2�3�3�3rz!/api/posts/<int:post_id>/feedbackc��t��\}}|r|Stjpi�dd�����}|stddi��dfSt
��}|ddkr-|�d|t��||d	f��n%|�d263|t��|f��|�	��|�d|f���264��}|���tdt|��d
���tdt|��d���S)N�feedbackr"rzFeedback text requiredrRrBr5zHUPDATE posts SET feedback_text=?, feedback_at=? WHERE id=? AND user_id=?rUz:UPDATE posts SET feedback_text=?, feedback_at=? WHERE id=?r�r�r�Tr�)rErrUr�r�rr.r9r>r:r=rBrar�)r�rDr�r�r-rFs      rr�r��sO��
�_�_�F�A�s�265���266��L��B�#�#�J��3�3�9�9�;�;�D��A���!9�:�;�;�S�@�@�
�4�4�D���y�G������V�
�3�5�5�'�1�T�7�+�	267�	268�	269�	270�271	
���H�
�3�5�5�'�"�	272�	273�	274�	�K�K�M�M�M�275�,�,�7�'��276D�277D�278M�279M�280O�281O�C��J�J�L�L�L��]�D��I�I�6�6�7�7�7��$��S�	�	�2�2�3�3�3rz/api/streamc����td���\}}|r|Sddl���d����t5t����ddd��n#1swxYwY��fd�}ddlm}||��d�	��S)282Nr5r�r�d)�maxsizec3�t�K�dV�		��d���}|V�n#�j$rdV�YnwxYw�1)Nz
retry: 1500283 284T�)�timeoutz: ping285 286)r��Empty)r^r`�queues ��r�genzstream.<locals>.gen,so���������	#�
#��e�e�B�e�'�'���	�	�	�	���;�
#�
#�
#�"�"�"�"�"�"�
#����		#s�%�6�6)�Responseztext/event-stream)�mimetype)rEr��QueuerWrY�add�flaskr�)rDr�r�r�r`r�s    @@r�streamr�!s�����
��
(�
(�
(�F�A�s�287���288��L�L�L�
���C�� � �A�	����������������������������#�#�#�#�#�#��������8�C�C�E�E�$7�8�8�8�8s�A"�"A&�)A&�__main__�PORT�5000z0.0.0.0)�host�port�debugr')Ur;rU�time�	threadingr(r�pathlibrr�rrrrr	�289flask_corsr290�werkzeug.securityrr�environr�rr?rr�rr�r%r�r�torch.nnrk�transformersrr�	rapidfuzzrrr[�__file__r��parent�APP_DIRrIrmr<r*r!r��app�291secret_keyr.rHr>�setrY�LockrWr�ra�Modulercr�r�r?rErJrOr�rWr^rcrerhrkrnr|r�r�r�r�r�r�r��runrOrr�<module>r�s`��)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�������������G�G�G�G�G�G�G�G�G�G�G�G�G�G�������I�I�I�I�I�I�I�I��j�n�n�3�_�E�E��@�C�@�C�@�@�@�@�292 293�3�294�#�295�$�296�297�298�299���������L�L�L�������5�5�5�5�5�5�5�5�'�'�'�'�'�'�'�'�'�������L�L�L������$�x�.�.�300 �301 �302"�303"�304)��
�x�
�305��g��	�306�$�y�r�y���2D�(D�E�E�307F�308F��
�R�Y�|�%D�
E�
E�309�310�e�H�C�C�311�O�O�R�H�H�H�������S�t�$�$�$�$����C�C�C�LA�A�A���	�	�	��s�u�u���I�N���	�312$�4�313$�314$�315$�316$�"�����B�I����(@�@�@�@�@�@�@�@�F�Z�	����&�&�&�����������9�9���9�������9�9���9����317!�"�"�!�!�#�"�!�*���318���!�!� ��!�:���319���!�!���!�$���320!�"�"�!�!�#�"�!�$���321���!�!���!�322������323�324���325�"���	���)�)� ��)�������$�$���$�8���,���H@�H@���H@�V���,���9@�9@���9@�x���326(�)�)�4��4�4�4�*�)�4�$���327,�-�-�4�S�4�4�4�.�-�4�$���328-�.�.�4�c�4�4�4�/�.�4�B������9�9���9�0�z����3�y�r�y���(�(�)�)�D��G�G���T�G�2�2�2�2�2��s�-B�B�B