-
Notifications
You must be signed in to change notification settings - Fork 29
Contribute
Our project is open-source and open for contributions. We would be more than happy to accept your pull-requests on GitHub.
The website has been made using Django, the facemash has been made using Pyramid, and the public API has been made using Django-Rest-Framework, so in Python 2. We also use LESS CSS, Bootstrap, JQuery and Bower for the front-end of the website.
If you wish to contribute but you don't know what to do, feel free to browse tasks that are ready to be implemented:
Main contributors are db0 and Lamagicien.
SchoolIdolTomodachi/SchoolIdolContest
See School Idol Contest repo README
SchoolIdolTomodachi/SchoolIdolAPI
# Install pre-requirements
# Debian, Ubuntu, and variants
apt-get install libpython-dev libffi-dev python-virtualenv libmysqlclient-dev nodejs
# Arch
pacman -S libffi python-virtualenv libmysqlclient nodejs
# Clone the repo
git clone https://github.com/SchoolIdolTomodachi/SchoolIdolAPI.git
cd SchoolIdolAPI
# Create a virtualenv to isolate the package dependencies locally
virtualenv env
source env/bin/activate
# Install packages, no need to be root
pip install -r requirements.txt
# Create tables, initialize database
python manage.py migrate
# Fill database with cards
python manage.py importcards noimages
# The `noimages` option will prevent downloading all the images, which may take hours.
# You can omit this option if what you're doing requires images.
# Compile localized messages
python manage.py compilemessages
# Download front-end dependencies
npm install -g bower less
bower install
# Compile LESS to CSS
lessc -x web/static/less/style.less web/static/css/style.css
source env/bin/activate
python manage.py runserver
If you want it to be externally visible, add an extra argument 0.0.0.0:8000
.
No need to restart it to see your modifications, the server reloads itself automatically.
python manage.py makemigrations
python manage.py migrate
Generate terms:
python manage.py makemessages -l ja --ignore=env/* --ignore=schoolidolapi/settings.py --ignore=api/models_languages.py --ignore=web/templates/registration/*
Then go to POEditor and import the tems. When the new terms are translated in all languages, generate the new files and put them in the repo. Either manually or using the POEditor integration.
Compile all languages
python manage.py compilemessages
To use your own configuration values, create a file schoolidolapi/local_settings.py
and never commit it to the repo.
You may need to override those values:
# Production Basics
SECRET_KEY = 'random generated string to change in production'
TRANSFER_CODE_SECRET_KEY = 'random generated string used to encrypt transfer codes'
DEBUG = False
TEMPLATE_DEBUG = False
ALLOWED_HOSTS = ['schoolido.lu']
# Production S3 (file storage)
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
AWS_STORAGE_BUCKET_NAME = 'schoolido.lu-assets'
IMAGES_HOSTING_PATH = 'http://s3-ap-northeast-1.amazonaws.com/schoolido.lu-assets/'
# Production SES (emails)
EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_SES_REGION_NAME = 'us-east-1'
AWS_SES_REGION_ENDPOINT = 'email.us-east-1.amazonaws.com'
AWS_SES_RETURN_PATH = 'contact@schoolido.lu'
AWS_PASSWORD_EMAIL = 'password@schoolido.lu'
# Shrink images using tinypng API
TINYPNG_API_KEY = ''
# Use MySQL database (and not sqlite by default)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'schoolidolu',
'OPTIONS': {'charset': 'utf8mb4'},
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '3306',
}
}
# To log all the 500 errors in the terminal:
LOGGING = {
'disable_existing_loggers': False,
'version': 1,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'DEBUG',
},
},
'loggers': {
'django.request': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
See all the sources used here: http://schoolido.lu/about/
Command line arguments available in almost all import scripts:
-
local
Use local files instead of dowloading web pages (for development only) -
redownload
Will download the images (or details pages such as idols descriptions), even when they already have been downloaded and set in the database -
noimages
Do not download the images
All import commands when they succeed also update the raw information
python manage.py importcards
Will call some of the commands below: importcards_stats, import_jp_events, import_en_events, import_idols and import_songs
Extra command line arguments:
-
delete
Delete all cards, idols, songs and events
python manage.py importcardstats
- Will import cards with their ids, rarity, attribute, is_promo, promo_item, is_special, hp, all statistics (smile, pure, cool for minimum, non-idolized maximum (set to 0 for N and promos) and idolized maximum), skill, skill_details (special cards only), center_skill, idol, event
- Will create events objects if they don't exist, with just the English + Japanese name
- Will create idols objects if they don't exist, with just the name of the idol
-
Local file:
decaf.html
python manage.py import_jp_events
- Will import events with their beginning, end, t1 points + rank, t2 points + rank, note, Japanese image
-
Local file:
events.html
python manage.py import_en_events
- Will import English events with their beginning, end, t1 points + rank, t2 points + rank
- Note: English banners currently can't be imported from any known website and are uploaded manually in production
- Note: English and Japanese events info are stored in the same event object
-
Local file:
eventsEN.html
python manage.py import_idols
- Will update the idols objects with the raw information specified in
raw_information
inapi/raw.py
- Will import idols trivia info (see full object in
api/models.py
) - Will save translated collection in cards for each idol.
- Local file: None. Will not import idols trivia and translated collection when specified.
python manage.py import_songs
- Will create objects for each songs with all their info (see full object in
api/models.py
) - Will save the event in the same order than the beginning of each event, skipping medleys and score matches
- Will call the iTunes API to find a preview of the song (set to 0 when not found,
redownload
to retry) - Will import song images
-
Local file:
songs.html
-
import_icons
-
import_transparent
-
import_transparent_images
-
import_video_stories
-
import_wikia
-
importcards_japanese
To show locations on the map at /map/
(http://schoolido.lu/map/)
python manage.py latlong
Extra command line arguments:
-
reload
will force reload all the locations in the database, even the ones already in. This is not recommended since OpenStreetMap has service restrictions.
Will delete a user, their accounts, the owned cards of their accounts, their activities, their event participations, and everything else associated with that user.
python manage.py deleteuser
python manage.py update_cached_objects
- Update total number of cards owner and people who have the card in their wishlist inside each card object
- Update ranking positions of each card compared to each others (best of each attribute)
python manage.py generate_settings
- Total donators, current contest, ages of users, cards statistics
python manage.py update_cached_objects && python manage.py generate_settings
python manage.py getusername deby@schoolido.lu
-
importcontest
-
importvotes
-
migrate_activities
-
migratelinks
-
verifyuser
- How to add an account to your profile?
- What's the difference between the deck, the album and the present box?
- How to add cards?
- How to edit a card?
- How to delete a card?
- Why my cards are not automatically imported?
- What if I play multiple versions of the game?
- How to add your location on the map?
- How to recover your password or username?
- How to delete an account?
- How to recover your comments on your profile page when you changed your username?
- How to change your avatar?
- How to check that you entered all your cards?
- How to get a verified account?
- Can someone steal my game account using the information on my profile page?
- I saved my transfer code on School Idol Tomodachi but I can't find it anymore?
- Can I delete my entire profile?
- What should I do if I see an activity that I don't like?
- How to post an activity?
- How to add a picture to your activity?
- Markdown
- How to recover my lost account?
- How to get promo cards?
- How to generate a transfer code?
- How to enter a transfer code?
- How to take screenshots?
- How to install Japanese apps?
- How to contact KLab?
- Do you speak another language? Translate the website
- Are you a graphic designer or an artist? Submit your artwork
- Extra time to spare? Join the staff team! (Community Managers, Moderators, Verifications, Japanese speakers, Database maintainers, and more)
- Want to help us pay for the servers that host the site? Donate