22

I have installed Odoo 9 Community version from Git in my Mac OS X El Capitan 10.11.2, all my steps:

python --version
Python 2.7.10

git clone https://github.com/odoo/odoo.git
Checking out files: 100% (20501/20501), done.

Installed PostgresApp into Applications and added path in ~/.bash_profile, executed the same.

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Installed pip

sudo easy_install pip
Finished processing dependencies for pip

I have nodejs installed in my system,

node -v
v5.0.0
npm -v
3.3.9

Installed less and less-plugin-clean-css

sudo npm install -g less less-plugin-clean-css

I have latest xcode installed,

xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

I have homebrew installed,

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

It appears Homebrew is already installed. If your intent is to reinstall you
should do the following before running this installer again:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
The current contents of /usr/local are bin Cellar CODEOFCONDUCT.md CONTRIBUTING.md etc include lib Library LICENSE.txt opt README.md sbin share SUPPORTERS.md var .git .gitignore

Installed other libs

brew install autoconf automake libtool
brew install libxml2 libxslt libevent

Installed Python dependencies

sudo easy_install -U setuptools
Finished processing dependencies for setuptools

cd odoo/
sudo pip install --user -r requirements.txt

Successfully installed Mako-1.0.1 Pillow-2.7.0 Werkzeug-0.9.6 argparse-1.2.1 lxml-3.4.1 psutil-2.2.0 psycopg2-2.5.4 pyparsing-2.0.1 python-dateutil-1.5 python-ldap-2.4.19 pytz-2013.7 pyusb-1.0.0b2 qrcode-5.1 six-1.4.1

Running odoo

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

./odoo.py --addons-path=addons --db-filter=mydb

It says

2016-02-10 16:51:42,351 3389 INFO ? openerp: OpenERP version 9.0c
2016-02-10 16:51:42,351 3389 INFO ? openerp: addons paths: ['/Users/anshad/Library/Application Support/Odoo/addons/9.0', u'/Users/anshad/odoo/addons', '/Users/anshad/odoo/openerp/addons']
2016-02-10 16:51:42,352 3389 INFO ? openerp: database: default@default:default
2016-02-10 16:51:42,444 3389 INFO ? openerp.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069

And the browser says 500 500 Internal Server Error and in terminal,

conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Started PostgresApp to solve this issue.

Now I got the database setup window appears without CSS as in the below screen-shot.

Created database mydbodoo with password admin and navigated to main page http://localhost:8069/web/ It shows a blank page with black header and odoo logo, some error in terminal as well.

ImportError: No module named pyPdf

./odoo.py --addons-path=addons --db-filter=mydb
2016-02-10 17:02:12,220 3589 INFO ? openerp: OpenERP version 9.0c
2016-02-10 17:02:12,220 3589 INFO ? openerp: addons paths: ['/Users/anshad/Library/Application Support/Odoo/addons/9.0', u'/Users/anshad/odoo/addons', '/Users/anshad/odoo/openerp/addons']
2016-02-10 17:02:12,221 3589 INFO ? openerp: database: default@default:default
2016-02-10 17:02:12,314 3589 INFO ? openerp.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069
2016-02-10 17:02:16,855 3589 INFO ? openerp.addons.bus.models.bus: Bus.loop listen imbus on db postgres
2016-02-10 17:02:16,888 3589 INFO ? werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:16] "GET /web/ HTTP/1.1" 500 -
2016-02-10 17:02:16,895 3589 ERROR ? werkzeug: Error on request:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/Users/anshad/odoo/openerp/service/server.py", line 245, in app
    return self.app(e, s)
  File "/Users/anshad/odoo/openerp/service/wsgi_server.py", line 184, in application
    return application_unproxied(environ, start_response)
  File "/Users/anshad/odoo/openerp/service/wsgi_server.py", line 170, in application_unproxied
    result = handler(environ, start_response)
  File "/Users/anshad/odoo/openerp/http.py", line 1487, in __call__
    self.load_addons()
  File "/Users/anshad/odoo/openerp/http.py", line 1508, in load_addons
    m = __import__('openerp.addons.' + module)
  File "/Users/anshad/odoo/openerp/modules/module.py", line 61, in load_module
    mod = imp.load_module('openerp.addons.' + module_part, f, path, descr)
  File "/Users/anshad/odoo/addons/document/__init__.py", line 4, in <module>
    import models
  File "/Users/anshad/odoo/addons/document/models/__init__.py", line 4, in <module>
    import ir_attachment
  File "/Users/anshad/odoo/addons/document/models/ir_attachment.py", line 8, in <module>
    import pyPdf
ImportError: No module named pyPdf
2016-02-10 17:02:17,708 3589 INFO mydbodoo openerp.modules.loading: loading 1 modules...
2016-02-10 17:02:17,716 3589 INFO mydbodoo openerp.modules.loading: 1 modules loaded in 0.01s, 0 queries
2016-02-10 17:02:17,719 3589 INFO mydbodoo openerp.modules.loading: loading 4 modules...
2016-02-10 17:02:17,727 3589 INFO mydbodoo openerp.modules.loading: 4 modules loaded in 0.01s, 0 queries
2016-02-10 17:02:17,899 3589 INFO mydbodoo openerp.modules.loading: Modules loaded.
2016-02-10 17:02:17,900 3589 INFO mydbodoo openerp.addons.base.ir.ir_http: Generating routing map
2016-02-10 17:02:18,249 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/ HTTP/1.1" 200 -
2016-02-10 17:02:18,308 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/content/341-42af255/web.assets_common.0.css HTTP/1.1" 304 -
2016-02-10 17:02:18,350 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/static/src/css/full.css HTTP/1.1" 404 -
2016-02-10 17:02:18,367 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/content/343-4d5beef/web.assets_backend.0.css HTTP/1.1" 304 -
2016-02-10 17:02:18,411 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/content/344-4d5beef/web.assets_backend.js HTTP/1.1" 304 -
2016-02-10 17:02:18,428 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/content/342-42af255/web.assets_common.js HTTP/1.1" 304 -
2016-02-10 17:02:18,663 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/binary/company_logo HTTP/1.1" 304 -
2016-02-10 17:02:18,838 3589 INFO mydbodoo openerp.service.common: successful login from 'admin' using database 'mydbodoo'
2016-02-10 17:02:18,859 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "POST /web/session/get_session_info HTTP/1.1" 200 -
2016-02-10 17:02:18,893 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "POST /web/proxy/load HTTP/1.1" 200 -
2016-02-10 17:02:18,915 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "POST /web/session/modules HTTP/1.1" 200 -
2016-02-10 17:02:18,945 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "POST /web/dataset/search_read HTTP/1.1" 200 -
2016-02-10 17:02:18,945 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "POST /web/webclient/translations HTTP/1.1" 200 -
2016-02-10 17:02:18,991 3589 INFO mydbodoo werkzeug: 127.0.0.1 - - [10/Feb/2016 17:02:18] "GET /web/webclient/locale/en_US HTTP/1.1" 500 -
2016-02-10 17:02:18,998 3589 ERROR mydbodoo werkzeug: Error on request:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/Users/anshad/odoo/openerp/service/server.py", line 245, in app
    return self.app(e, s)
  File "/Users/anshad/odoo/openerp/service/wsgi_server.py", line 184, in application
    return application_unproxied(environ, start_response)
  File "/Users/anshad/odoo/openerp/service/wsgi_server.py", line 170, in application_unproxied
    result = handler(environ, start_response)
  File "/Users/anshad/odoo/openerp/http.py", line 1488, in __call__
    return self.dispatch(environ, start_response)
  File "/Users/anshad/odoo/openerp/http.py", line 1652, in dispatch
    result = ir_http._dispatch()
  File "/Users/anshad/odoo/openerp/addons/base/ir/ir_http.py", line 186, in _dispatch
    return self._handle_exception(e)
  File "/Users/anshad/odoo/openerp/addons/base/ir/ir_http.py", line 157, in _handle_exception
    return request._handle_exception(exception)
  File "/Users/anshad/odoo/openerp/http.py", line 781, in _handle_exception
    return super(HttpRequest, self)._handle_exception(exception)
  File "/Users/anshad/odoo/openerp/addons/base/ir/ir_http.py", line 182, in _dispatch
    result = request.dispatch()
  File "/Users/anshad/odoo/openerp/http.py", line 840, in dispatch
    r = self._call_function(**self.params)
  File "/Users/anshad/odoo/openerp/http.py", line 316, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/Users/anshad/odoo/openerp/service/model.py", line 118, in wrapper
    return f(dbname, *args, **kwargs)
  File "/Users/anshad/odoo/openerp/http.py", line 309, in checked_call
    result = self.endpoint(*a, **kw)
  File "/Users/anshad/odoo/openerp/http.py", line 959, in __call__
    return self.method(*args, **kw)
  File "/Users/anshad/odoo/openerp/http.py", line 509, in response_wrap
    response = f(*args, **kw)
  File "/Users/anshad/odoo/addons/web/controllers/main.py", line 505, in load_locale
    addons_path = http.addons_manifest['web']['addons_path']
KeyError: 'web'

Screen-shot:Terminal and file system

enter image description here

Screen-shot:Database selection window

enter image description here

Screen-shot: Main window

enter image description here

Tried sudo pip install pyPdf and it says Requirement already satisfied (use --upgrade to upgrade): pyPdf in /Users/anshad/Library/Python/2.7/lib/python/site-packages

Anshad Vattapoyil
  • 23,145
  • 18
  • 84
  • 132

4 Answers4

18

I just went through the setup on two systems, one is Mac OS X El Capitan 10.11.2 and another one is my primary OS - Ubuntu 15.04 (where things went much easier, but maybe it is just because I use Ubuntu on daily basis).

Below are installation steps for both systems. Make sure that every command finishes successfully (at least doesn't report any errors).

Mac OS X El Capitan 10.11.2

Prerequisites: I already had git and python 2.7.10.

1) Clone odoo repository:

git clone https://github.com/odoo/odoo.git

2) Download and install Postgresapp

  • Go to http://postgresapp.com/, download
  • Open it in Finder, drag to Applications, double click
  • Postgres application appears, double click it
  • Sorry if these steps are obvious, it is just for me since I am not a Mac OS user

Now add to ~/.bash_profile:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

And just execute the command above it if you already have the open terminal.

3) Install pip

sudo easy_install pip

4) Install nodejs

  • Go to https://nodejs.org,
  • Download node v4.3.0
  • Move to Applications, run and install
  • Open terminal and check that node and npm commands are available

5) Install less and less-plugin-clean-css

sudo npm install -g less less-plugin-clean-css

Should show output like this:

/usr/local/bin/lessc -> /usr/local/lib/node_modules/less/bin/lessc
less-plugin-clean-css@1.5.1 /usr/local/lib/node_modules/less-plugin-clean-css
└── clean-css@3.4.9 (source-map@0.4.4, commander@2.8.1)
less@2.6.0 /usr/local/lib/node_modules/less
├── mime@1.3.4
├── graceful-fs@3.0.8
├── image-size@0.3.5
├── errno@0.1.4 (prr@0.0.0)
├── promise@6.1.0 (asap@1.0.0)
├── source-map@0.4.4 (amdefine@1.0.0)
├── mkdirp@0.5.1 (minimist@0.0.8)
└── request@2.69.0 (aws-sign2@0.6.0, forever-agent@0.6.1, tunnel-agent@0.4.2, oauth-sign@0.8.1, is-typedarray@1.0.0, caseless@0.11.0, stringstream@0.0.5, isstream@0.1.2, json-stringify-safe@5.0.1, extend@3.0.0, tough-cookie@2.2.1, node-uuid@1.4.7, qs@6.0.2, combined-stream@1.0.5, mime-types@2.1.9, form-data@1.0.0-rc3, aws4@1.2.1, hawk@3.1.3, bl@1.0.2, har-validator@2.0.6, http-signature@1.1.1)

6) Install binary dependencies

I think not all the steps below are really necessary, but I performed them, so include just for the case they actually were needed.

  • Run in the terminal xcode-select --install, when dialog appears - agree to install
  • Go to http://brew.sh and follow instructions to install homebrew

Once you have brew, run the following in the terminal:

brew install autoconf automake libtool
brew install libxml2 libxslt libevent

7) Install python dependencies

sudo easy_install -U setuptools
pip install --user -r requirements.txt

It should show something like this at the end:

Successfully installed Babel-1.3 Jinja2-2.7.3 Mako-1.0.1 MarkupSafe-0.23 Pillow-2.7.0 PyYAML-3.11 Python-Chart-1.39 Werkzeug-0.9.6 argparse-1.2.1 beautifulsoup4-4.4.1 decorator-3.4.0 docutils-0.12 feedparser-5.1.3 gdata-2.0.18 gevent-1.0.2 greenlet-0.4.7 jcconv-0.2.3 lxml-3.4.1 mock-1.0.1 ofxparse-0.14 passlib-1.6.2 psutil-2.2.0 psycogreen-1.0 psycopg2-2.5.4 pyPdf-1.13 pydot-1.0.2 pyparsing-2.0.1 pyserial-2.7 python-dateutil-1.5 python-ldap-2.4.19 python-openid-2.2.5 python-stdnum-1.2 pytz-2013.7 pyusb-1.0.0b2 qrcode-5.1 reportlab-3.1.44 requests-2.6.0 six-1.4.1 suds-jurko-0.6 vatnumber-1.2 vobject-0.6.6 xlwt-0.7.5

8) Run odoo

cd odoo  # change dir to the folder you cloned odoo to
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

# Re-check parameters, it looks like addons path you used is incorrect
./odoo.py --addons-path=addons --db-filter=mydb

Now you should see the output like this:

INFO ? openerp: OpenERP version 9.0c
INFO ? openerp: addons paths: ['/Users/dev/Library/Application Support/Odoo/addons/9.0', u'/Users/dev/projects/odoo/addons', '/Users/dev/projects/odoo/openerp/addons']
INFO ? openerp: database: default@default:default
INFO ? openerp.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069

9) Open odoo in your browser

  • Go to http://localhost:8069
  • The database setup window appears (see the first screenshot below)
  • Enter databse name = mydbodoo (I think the prefix mydb is important here) and password admin
  • You can also check the checkbox to load the demo data
  • Click Create database
  • Wait and you should be redirected to the odoo interface (see the second screenshot)

Done!

Odoo databse setup

Odoo user interface

Update: Mac OS X El Capitan 10.11.2 with virtualenv

Do the same as above, on step (7) do not run pip install --user -r requirements.txt and instead to this:

pip install virtualenv  # not sure here, sudo may be needed
mkdir ~/venv
cd ~/venv
mkdir odoo
virtualenv odoo
source ~/venv/odoo/bin/activate
cd ~/path/to/odoo
pip install -r requirements.txt  # no sudo here!

Now continue with step (8). Each time, before starting odoo make sure to activate the virtualenv first:

source ~/venv/odoo/bin/activate
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

./odoo.py --addons-path=addons --db-filter=mydb

Ubuntu 15.04

Prerequisites: I already had postgresql 9.4.5, nodejs 0.10.25 and python 2.7.8.

Installation:

git clone https://github.com/odoo/odoo.git 
cd odoo
sudo apt-get install libldap2-dev libsasl2-dev libevent-dev libxslt1-dev libxml2-dev 
pip install -r requirements.txt
sudo npm install -g less less-plugin-clean-css
./odoo.py --addons-path=addons --db-filter=mydb

That's all, now setup the same way as in the step (9) for Mac OS.

Borys Serebrov
  • 15,636
  • 2
  • 38
  • 54
  • I did the same, updated question. The error looks like ``ImportError: No module named pyPdf``, still not working. – Anshad Vattapoyil Feb 10 '16 at 17:15
  • @devo then it means that pip install was not successful, `pypdf` is actually one of the requirements listed in the `requirements.txt`. Try to repeat the step number (7) and make sure there are not errors or if there are errors - then post them, it's not possible to say what went wrong just from the import error. My guess is that pip failed before the pypdf installation or during it. – Borys Serebrov Feb 10 '16 at 17:21
  • I got success response as mentioned in question.And `sudo pip install pyPdf` says `Requirement already satisfied (use --upgrade to upgrade): pyPdf in /Users/anshad/Library/Python/2.7/lib/python/site-packages` – Anshad Vattapoyil Feb 10 '16 at 17:24
  • @devo Actually pip should be run without `sudo`, like `pip install --user pypdf==1.13`. Does it work if you run `python` from the command line and then do `import pyPdf`? – Borys Serebrov Feb 10 '16 at 17:28
  • @devo try to re-run pip install without `sudo`, just `pip install --user -r requirements.txt` – Borys Serebrov Feb 10 '16 at 17:31
  • Without the `sudo`, I am getting permission errors ``error: [Errno 13] Permission denied: '/Users/anshad/Library/Python/2.7'`` – Anshad Vattapoyil Feb 11 '16 at 04:27
  • 1
    @devo looks like something is not right with access permissions to the python's folders. The `--user` flag is supposed to install to the location accessible to your user, so `sudo` should not be needed. Another way to solve this - install [virtualenv](https://virtualenv.readthedocs.org/en/latest/), create a virtual environment for odoo and install all the python dependencies there (as well as then run odoo from this environment). – Borys Serebrov Feb 11 '16 at 09:29
  • 1
    @devo I updated the answer, see the `Update: Mac OS X El Capitan 10.11.2 with virtualenv`, it should help with dependenices. – Borys Serebrov Feb 11 '16 at 10:02
  • Great! Something comes now. Got two menus but nothing else.When I clicked on preferences, it says `Error: Widget type 'html' is not implemented` – Anshad Vattapoyil Feb 11 '16 at 17:57
  • @devo is is complex to say just from the error text. Looking at code, it is something client-side related thrown from the javascript. Maybe some files are missing? Try to recheck if odoo repository was cloned completely and successfully or download an archived version. It should be easier this time since you already have all the dependenices and don't need to go through the whole installation process again. – Borys Serebrov Feb 11 '16 at 18:29
  • Ok, I will try like that. – Anshad Vattapoyil Feb 12 '16 at 03:39
5

Their might be a few issue of python modules, library, packages, or nodejs.

Try with below information:

  1. Following command will install all python modules required by Odoo.

    pip install lxml
    
  2. Check your werkzeug version. It will be 0.9.6, if not than upgrade it.

    pip show werkzeug #this command will show the details of werkzeug
    pip install werkzeug==0.9.6 #this command will install werkzeug up to 0.9.6
    
  3. Install nodejs via your preferred package manager (homebrew, macports) then install less and less-plugin-clean-css:

    npm install -g less
    npm install -g less-plugin-clean-css
    

For more information, Odoo9 setup documentation.

NOTE:

Default login and password will be admin and admin.

EDIT: 1

Try to resolve ImportError: No module named pyPdf with below command.

pip install pypdf

EDIT: 2

If you don't find relevance distributor than try with below command.

pip install --allow-unverified pyPdf pyPdf
Bhavesh Odedra
  • 10,990
  • 12
  • 33
  • 58
1

I did everything but couldn't run odoo on my mac 10.11.6.

I had this problem when I try to run odoo ./odoo.py

psycopg2 can't find symbol _PQbackendPID

I found out I have many version of python installed ranging form 2.3 to 3.5

Deleted all version of python How to uninstall Python 2.7 on a Mac OS X 10.6.4?

$ brew uninstall --force python3
$ brew uninstall --force python

Clear all changes in ~/.bash_profile

also deleted /usr/local/lib/python2.7/site-packages

Then start from beginning:

 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 $ brew update
 $ brew install python

 $ brew install postgresql

To start the PostgreSQL right now and automatically at system startup we run:

 $ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
 $ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
 // I had error: LaunchAgents not found 
 // If you have error you can download postgres from postgresapp.com to manually start the server

Install some dependencies

$ brew install freetype jpeg libpng libtiff webp xz
$ pip install --upgrade pip
$ pip uninstall virtualenv
$ pip install virtualenv
// Delete existing ~/odoo-env folder first
$ virtualenv ~/odoo-env  
$ . ~/odoo-env/bin/activate

Clone git repository branch 9.0

$ git clone https://github.com/odoo/odoo.git -b 9.0

change to the cloned odoo directory (with cd) and run (you have to be in your virtual environment):

$ pip install -r requirements.txt

If Successfully installed, run

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8
$ python ./odoo.py

A wonderful tutorial by Christoph Giesel

Community
  • 1
  • 1
Warif Akhand Rishi
  • 23,920
  • 8
  • 80
  • 107
0

I get the same issue and it seems that my system is not using the correct Six library. What you can do first is to update your library

sudo pip2 install six -U

And once you have done that, your system can use the wrong library again. To check that, you can create a python file like this

#vi testsix.py to create the file
#type i to insert
import six
print six.__file__
#escape
#type wq to save
#chmod +x testsix.py
#python testsix.py

Then if you read

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.pyc

Then you have to remove this file

rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.*

Then you can re-check the file testsix.py and check you get this path

/Library/Python/2.7/site-packages/six.pyc

Then you should re-launch your odoo server.

I get this from the Oriol Nieto's answer I was trying to solve the previous Internal Server Error I get.

Note if you are using El Capitan and you meet some permission issue even with sudo, you may need to check this link to remove some root access

Community
  • 1
  • 1
Ratinahirana
  • 392
  • 2
  • 9