:date: 2018-07-26 ======================= Thursday, July 26, 2018 ======================= My first steps with Ajapaik =========================== To get into the ajapaik project, I tried to run a development server locally on my machine. Here are my steps. - Clone the https://github.com/Ajapaik/ project. - create and activate a virtualenv - pip install -r requirements.txt NB I changed "Django==1.8.18" to simply Django - Here is a first problem:: $ cd project $ python manage.py help ... ValueError: Unable to configure handler 'time_rotating_handler': [Errno 2] No such file or directory: '/var/log/ajapaik/production/ajapaik.ee.log' Okay, the default settings has a hard-coded filename for the log file. You may not run it directly from within the repository. So I did my own :xfile:`settings.py` file:: import sys sys.path.insert(0, "/home/luc/repositories/ajapaik-web/project") from ajapaik.settings.default import * fn = "ajapaik.log" LOGGING['handlers']['time_rotating_handler']['filename'] = fn - Next problem:: django.core.exceptions.ImproperlyConfigured: GEOS is required and has not been detected. Are you sure it is installed? See also https://docs.djangoproject.com/en/5.0/ref/contrib/gis/install/geolibs/ I read the `1.11 version `__ and consultd with Kimmo. Solution:: $ sudo apt install postgis - Next problem:: Traceback (most recent call last): File "manage.py", line 8, in execute_from_command_line(sys.argv) File "/site-packages/django/core/management/__init__.py", line 354, in execute_from_command_line utility.execute() File "/site-packages/django/core/management/__init__.py", line 328, in execute django.setup() File "/site-packages/django/__init__.py", line 18, in setup apps.populate(settings.INSTALLED_APPS) File "/site-packages/django/apps/registry.py", line 108, in populate app_config.import_models(all_models) File "/site-packages/django/apps/config.py", line 198, in import_models self.models_module = import_module(models_module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/ajapaik-web/project/ajapaik/models.py", line 46, in from project.ajapaik.settings import GOOGLE_API_KEY, DEBUG, STATIC_ROOT, MEDIA_ROOT ImportError: cannot import name GOOGLE_API_KEY To be continued. Kimmo discovered that most GET requests by anonymous users cause creation of a new users.User row with a random username. The guilty code was in :file:`project/ajapaik/user_middleware.py` where :meth:`AuthBackend.authenticate` method created a new user for each authentication attempt without password:: random_username = u'_%s_%s' % (username[:25], User.objects.make_random_password(length=3)) user = User.objects.create_user(username=random_username) user.save() Action.log('user_middleware.create', related_object=user) return user I don't know why this behaviour is there, but it clearly wrong since the `Django documentation `__ says that the :meth:`authenticate` of a backend "returns a User object if the password is valid for the given username. If the password is invalid, authenticate() returns None." Vadim obviously also saw this problem and removed this backend in the current develop branch.