BefatorNix/runService2.nix
2025-09-05 17:38:49 +02:00

98 lines
3.6 KiB
Nix

{stdenv, writeShellApplication, git, gnumake, mysql, python27, django, django-environ, django-session-csrf,
django-mozilla-product-details, dockerflow, django-csp, django-aesfield, django-extensions, raven, django-rest-framework,
django-waffle, jingo-minify, django-jinja, puente, django-statsd-mozilla, django-cache-machine, python-memcached,
django-multidb-router, mysqlclient, bleach, easy-thumbnails, amo-validator, flufl-lock, signing-clients, mozilla-logger,
pyOpenSSL, django-rest-framework-jwt, celery, nobot, pyquery, schematic, django-cors-headers-multi,
elasticsearch-dsl, email-reply-parser, django-tables2, redis, drf-nested-routers, nodejs_20,
elasticsearch-service}: writeShellApplication rec {
name = "service2";
#propagatedBuildInputs = [python26Packages.setuptools];
#nativeBuildInputs = [ jinja2 ];
#buildInputs = [ jinja2 ];
runtimeInputs = [git gnumake mysql nodejs_20 elasticsearch-service (python27.withPackages(ps: [django django-environ django-session-csrf
django-mozilla-product-details dockerflow django-csp django-aesfield django-extensions raven django-rest-framework django-waffle
jingo-minify django-jinja puente django-statsd-mozilla django-cache-machine python-memcached django-multidb-router mysqlclient
bleach easy-thumbnails amo-validator flufl-lock signing-clients mozilla-logger pyOpenSSL django-rest-framework-jwt celery nobot
pyquery schematic django-cors-headers-multi elasticsearch-dsl email-reply-parser django-tables2 redis drf-nested-routers]))];
#env = {
# NIX_CFLAGS_COMPILE="-Wno-incompatible-pointer-types";
#};
text = ''
if [ ! -d "amo" ]; then
mkdir amo
cd amo
git clone https://github.com/mozilla/addons-server.git --progress
cd addons-server
git switch 8b4423547f932b2d9fa2b5a9c81d399bdc29bd6e --detach --progress
content="from settings import *
ALLOWED_HOSTS = [\"127.0.0.1\"]"
echo "$content" > settings_local.py
content="diff --git a/src/olympia/api/serializers.py b/src/olympia/api/serializers.py
index 35e4a37c8c..3586bff1eb 100644
--- a/src/olympia/api/serializers.py
+++ b/src/olympia/api/serializers.py
@@ -1,6 +1,5 @@
from datetime import datetime
-from elasticsearch_dsl.result import Result
from elasticsearch_dsl.response.hit import Hit
from rest_framework.serializers import ModelSerializer
@@ -45,7 +44,7 @@ class BaseESSerializer(ModelSerializer):
def to_representation(self, data):
# Support \`Result\` instances to allow passing in ElasticSearch
# results directly into the serializer.
- if isinstance(data, (Result, Hit)):
+ if isinstance(data, Hit):
data = data.to_dict()
obj = self.fake_object(data)
"
echo "$content" > elasticsearch.diff
git apply elasticsearch.diff
cd ../..
fi
cd amo
dbDir="$(pwd)/db"
cd addons-server
PYTHONPATH="$(pwd)/src"
export PYTHONPATH
trap 'kill $dbServer && sleep 6' EXIT
if [ ! -d "$dbDir" ]; then
mkdir "$dbDir"
mysql_install_db --datadir="$dbDir"
mysqld --datadir="$dbDir" &
dbServer="$!"
sleep 3
echo "CREATE DATABASE olympia CHARACTER SET utf8 COLLATE utf8_unicode_ci;" | mysql -u root
echo "set global net_buffer_length=1000000;" | mysql -u root
echo "set global max_allowed_packet=1000000000;" | mysql -u root
make -f Makefile-docker initialize_db
npm install
make -f Makefile-docker copy_node_js
make -f Makefile-docker populate_data
kill "$dbServer"
sleep 6
fi
mysqld --datadir="$dbDir" &
dbServer="$!"
sleep 3
make -f Makefile-docker populate_data
python ./manage.py runserver
'';
}