
    ׸i                      0    d dl Z d dlmZ d Zd Zd Zd Zy)    N)parsec                     | j                   j                  d      }|r$|j                  d      d   j                         }|S | j                   j                  d      }|S )z$Get real client IP even behind proxyHTTP_X_FORWARDED_FOR,r   REMOTE_ADDR)METAgetsplitstrip)requestx_forwarded_forips      (/var/www/talchi_dev/admin_users/utils.pyget_client_ipr      sZ    ll&&'=>O""3'*002 I \\m,I    c                     | j                   j                  dd      }t        |      }|j                  ry|j                  ry|j
                  ryy)z"Detect device type from user agentHTTP_USER_AGENT MobileTabletSystemUnknown)r   r	   r   	is_mobile	is_tabletis_pc)r   user_agent_stringparseds      r   get_device_typer      sJ    (():B?$%F				r   c                    	 t        j                  d|  dd      }|j                         }|j                  d      dk(  r+|j                  dd      }|j                  d	d      }| d
| S y# t         j                  $ r Y yw xY w)zGet location from IPzhttp://ip-api.com/json/z?fields=status,city,country   )timeoutstatussuccesscityr   country, r   )requestsr	   jsonRequestException)r   resdatar$   r%   s        r   get_locationr,       s    ll%bT)DE

 xxz88H*88FB'Dhhy"-GV2gY''$$ s   A)A- -BBc                    	 d|  d| d}t        j                  |ddi      }|j                         }|j                  di       }|j                  d      xs7 |j                  d	      xs$ |j                  d
      xs |j                  d      }|j                  d      }|j                  d      }| d| d| S #  Y yxY w)Nz0https://nominatim.openstreetmap.org/reverse?lat=z&lon=z&format=jsonz
User-Agentzrecruiter-app)headersaddressr$   townvillagecountystater%   r&   r   )r'   r	   r(   )	latlonurlr*   r+   r/   r$   r3   r%   s	            r   get_city_from_coordsr7   4   s    @U3%|\ll3(GHxxz((9b) KK %{{6"%{{9%% {{8$	 	 G$++i(r%7),,s   B9B< <C )r'   user_agentsr   r   r   r,   r7    r   r   <module>r:      s     	(r   