-
Notifications
You must be signed in to change notification settings - Fork 28
Contribute: School Idol Tomodachi website
SchoolIdolTomodachi/SchoolIdolAPI
This repository contains the sources of:
See the contributors guide for the other projects.
# Install pre-requirements
# Debian, Ubuntu, and variants
apt-get install libpython-dev libffi-dev python-virtualenv libmysqlclient-dev libssl-dev nodejs npm
# Arch
pacman -S libffi python-virtualenv libmysqlclient libssl nodejs npm
# 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 data from the prod site
python manage.py quickupdate idols
python manage.py quickupdate events
python manage.py quickupdate songs
python manage.py quickupdate cards
python manage.py update_cards_join_cache
# Generate the generated settings
python manage.py generate_settings
# 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
# Launch the server
python manage.py runserver
# Then open your browser to http://localhost:8000 to see the website
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
Want to provide a LP manager, a random idol of the day, a custom card game, an event manager, a cards generator, ...? We accept anything related to LoveLive! that corresponds to what people would expect in our website :)
It's very easy to create your own page, and don't forget that you can Contact us and we will always be happy to help you and talk to you about your ideas or how you can help~
In this example let's say we can't to create a page that shows all the URs. That's dumb, it's just an example.
-
Open the file
web/urls.py
and add the URL of your pageurl(r'^listofurs[/]+$', views.listofurs, name='listofurs')
-
Open the file
web/views.py
and scroll to the end of the file. Create a new function that will handle the logic and database interactions of your new page.def listofurs(request): context = globalContext(request) return render(request, 'listofurs.html', context)
-
Create a new file
web/templates/listofurs.html
:{% extends "base.html" %} {% load i18n %} {% block title %}{% trans 'List of URs' %}{% endblock %} {% block content %} <p>Hello world</p> {% endblock %}
-
Let's see if it worked.
Run the server and open the page to see if it shows the Hello world you just wrote: http://localhost:8000/listofurs/
-
Get the list of URs from the database.
Edit the function you wrote in
web/views.py
:def listofurs(request): context = globalContext(request) context['urs'] = models.Card.objects.filter(rarity='UR').order_by('-id') return render(request, 'listofurs.html', context)
The context you give to the render function is a dictionary that contains all the info you want to have access to when you generate the HTML.
In Django, when you manipulate databases, you use an ORM called "models". A model is a pythonic class that maps what's in the database. An entry in the database becomes an object instance of this class. The model classes have "managers" accessible using
objects
that you can use to query the database:-
all
,filter
andget
are the equivalent of a MySQLSELECT
-
models.Card.objects.all()
will return all the cards in a list of objects -
models.Card.objects.get(id=1)
will return one card object. If the query returns multiple results and not just one, an exception will be raised.
-
-
add
(= MySQLINSERT
)-
added_card = models.Card.objects.add(id=1, rarity='UR', idol='Minami Kotori', attribute='Smile')
will create a new card
-
-
update
(= MySQLUPDATE
)-
total_updated_cards = models.Card.objects.filter(attribute='All').update(is_special=True)
will mark all the cards with the attribute "All" as special
-
-
delete
(= MySQLDELETE
)-
models.Card.objects.filter(rarity='N').delete()
will delete all the N cards
-
To get the full details of all the models, read this file. To learn more about the Django models, read the official documentation.
-
-
Go through the list of URs and display them.
Now open your template
web/templates/listofurs.html
. You now have access to the valueurs
, which is a list ofCard
objects.{% load mod %} ... {% block content %} {% for card in urs %} <a href="{{ card|singlecardurl }}"> {% if card.card_image %} <img src="{{ card.card_image }}" alt="{{ card }}"> {% endif %} <img src="{{ card.card_idolized_image }}" alt="{{ card }}"> <p> {{ card.name }} {{ card.attribute }} </p> </a> {% endfor %} {% endblock %}
-
It works!
Open your browser again and you should see a list of all the UR cards: http://localhost:8000/listofurs/
- More commands available to manage your instance of the website: Django Commands
- Configure your instance of the website: Django Configuration
- 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