From 0db2a3fcd12aeaad66242700a5d3a69094e9c7f5 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 19 May 2018 23:16:30 -0400 Subject: [PATCH 01/18] adding idol model to models.py --- majilove/models.py | 84 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 80 insertions(+), 4 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index acdac6c..52452e3 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -1,11 +1,87 @@ -from django.contrib.auth.models import User -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_lazy as _, string_concat, get_language from django.db import models -from magi.item_model import MagiModel +from django.conf import settings as django_settings +from magi.models import User, uploadItem +from magi.item_model import MagiModel, i_choices from magi.abstract_models import BaseAccount -# Create your models here. + +############################################################ +# Utility stuff + +LANGUAGES_NEED_OWN_NAME = [ l for l in django_settings.LANGUAGES if l[0] in ['ru', 'zh-hans', 'zh-hant', 'kr'] ] +LANGUAGES_NEED_OWN_NAME_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] in ['ru', 'zh-hans', 'zh-hant', 'kr'] ] +LANGUAGES_DIFFERENT_CHARSET = [ l for l in django_settings.LANGUAGES if l[0] in ['ja', 'ru', 'zh-hans', 'zh-hant', 'kr'] ] +LANGUAGES_DIFFERENT_CHARSET_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] in ['ja', 'ru', 'zh-hans', 'zh-hant', 'kr'] ] +ALL_ALT_LANGUAGES = [ l for l in django_settings.LANGUAGES if l[0] != 'en' ] +ALL_ALT_LANGUAGES_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] != 'en' ] +ALT_LANGUAGES_EXCEPT_JP = [ l for l in django_settings.LANGUAGES if l[0] not in ['en', 'ja'] ] +ALT_LANGUAGES_EXCEPT_JP_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] not in ['en', 'ja'] ] + + class Account(BaseAccount): class Meta: pass + +############################################################ +# Idols + +class Idol(MagiModel): + collection_name = 'idol' + + owner = models.ForeignKey(User, related_name='added_idols') + + name = models.CharField(string_concat(_('Name'), ' (', _('Romaji'), ')'), max_length=100, unique=True) + + japanese_name = models.CharField(string_concat(_('Name'), ' (', _('Japanese'), ')'), max_length = 100, unique=True) + + NAMES_CHOICES = LANGUAGES_NEED_OWN_NAME + d_names = models.TextField(_('Name'), null=True) + + @property + def t_name(self): + if get_language() == 'ja': + return self.japanese_name + return self.names.get(get_language(), self.name) + + romaji_CV = models.CharField(_('CV'), help_text='In romaji', max_length=100, null=True) + + CV = models.CharField(string_concat(_('CV'), ' (', _('Japanese'), ')'), help_text='In Japanese characters.', max_length=100, null=True) + + bio = models.TextField(_('Bio'), max_length=1000) + + # in cm + height = models.PositiveIntegerField(_('Height'), null=True) + + weight = models.PositiveIntegerField(_('Weight'), null=True) + + @property + def display_weight(self): + if self.weight: return self.weight + return '?' # this is how Ai's weight is displayed in game + + BLOOD_CHOICES = ( + 'O', + 'A', + 'B', + 'AB', + '?' + ) + + i_blood_type = models.PositiveIntegerField(_('Blood Type'), choices=i_choices(BLOOD_CHOICES), null=True) + + birthday = models.DateField(_('Birthday'), null=True, help_text='The year is not used, so write whatever') + + star_sign = models.CharField(_('Astrological Sign'), max_length=100, null=True) + + instrument = models.CharField(_('Instrument'), max_length=100, null=True) + + hometown = models.CharField(_('Hometown'), max_length=100, null=True) + + image = models.ImageField(_('Image'), upload_to=uploadItem('idol')) + + small_image = models.ImageField(_('Image'), upload_to=uploadItem('idol/small')) + + def __unicode__(self): + return unicode(self.t_name) From a82454f4b0b086e4e4e519b2738744cecde81fae Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 00:23:25 -0400 Subject: [PATCH 02/18] Adding IdolCollection to magicollections.py --- majilove/magicollections.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 590afd6..51831ce 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -1,3 +1,4 @@ +from django.utils.translation import ugettext_lazy as _ from magi.magicollections import MagiCollection, ActivityCollection as _ActivityCollection, BadgeCollection as _BadgeCollection, StaffConfigurationCollection as _StaffConfigurationCollection, DonateCollection as _DonateCollection ############################################################ @@ -25,4 +26,19 @@ class DonateCollection(_DonateCollection): enabled = True ############################################################ +# Idol Collection + +class IdolCollection(MagiCollection): + queryset = models.Idol.objects.all() + title = _('Idol') + plural_title = _('Idols') + navbar_link_title = _('Characters') + # want the following as 'microphone' https://www.flaticon.com/free-icon/karaoke-microphone-icon_69364 + icon = 'microphone' + navbar_link_list = 'utapri' + translated_fields = ('name', 'bio', 'star_sign', 'instrument', 'hometown') + + reportable = False + blockable = False + ############################################################ From b4237f9df2d3a6a6b7d5164fbec0e218dc32a29e Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 09:26:52 -0400 Subject: [PATCH 03/18] Making changes requested by db0 --- majilove/models.py | 49 +++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index 52452e3..6a29024 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -10,13 +10,7 @@ # Utility stuff LANGUAGES_NEED_OWN_NAME = [ l for l in django_settings.LANGUAGES if l[0] in ['ru', 'zh-hans', 'zh-hant', 'kr'] ] -LANGUAGES_NEED_OWN_NAME_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] in ['ru', 'zh-hans', 'zh-hant', 'kr'] ] -LANGUAGES_DIFFERENT_CHARSET = [ l for l in django_settings.LANGUAGES if l[0] in ['ja', 'ru', 'zh-hans', 'zh-hant', 'kr'] ] -LANGUAGES_DIFFERENT_CHARSET_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] in ['ja', 'ru', 'zh-hans', 'zh-hant', 'kr'] ] ALL_ALT_LANGUAGES = [ l for l in django_settings.LANGUAGES if l[0] != 'en' ] -ALL_ALT_LANGUAGES_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] != 'en' ] -ALT_LANGUAGES_EXCEPT_JP = [ l for l in django_settings.LANGUAGES if l[0] not in ['en', 'ja'] ] -ALT_LANGUAGES_EXCEPT_JP_KEYS = [ l[0] for l in django_settings.LANGUAGES if l[0] not in ['en', 'ja'] ] @@ -34,7 +28,7 @@ class Idol(MagiModel): name = models.CharField(string_concat(_('Name'), ' (', _('Romaji'), ')'), max_length=100, unique=True) - japanese_name = models.CharField(string_concat(_('Name'), ' (', _('Japanese'), ')'), max_length = 100, unique=True) + japanese_name = models.CharField(string_concat(_('Name'), ' (', _('Japanese'), ')'), max_length=100, unique=True) NAMES_CHOICES = LANGUAGES_NEED_OWN_NAME d_names = models.TextField(_('Name'), null=True) @@ -45,11 +39,13 @@ def t_name(self): return self.japanese_name return self.names.get(get_language(), self.name) - romaji_CV = models.CharField(_('CV'), help_text='In romaji', max_length=100, null=True) + romaji_voice_actor_name = models.CharField(_('Voice actor'), help_text='In romaji', max_length=100, null=True) - CV = models.CharField(string_concat(_('CV'), ' (', _('Japanese'), ')'), help_text='In Japanese characters.', max_length=100, null=True) + voice_actor_name = models.CharField(string_concat(_('Voice actor'), ' (', _('Japanese'), ')'), help_text='In Japanese characters.', max_length=100, null=True) - bio = models.TextField(_('Bio'), max_length=1000) + description = models.TextField(_('Description'), max_length=1000, null=True) + DESCRIPTIONS_CHOICES = ALL_ALT_LANGUAGES + d_descriptions = models.TextField(_('Description'), null=True) # in cm height = models.PositiveIntegerField(_('Height'), null=True) @@ -58,26 +54,47 @@ def t_name(self): @property def display_weight(self): - if self.weight: return self.weight - return '?' # this is how Ai's weight is displayed in game + return self.weight or '?' - BLOOD_CHOICES = ( + BLOOD_TYPE_CHOICES = ( 'O', 'A', 'B', 'AB', - '?' ) - i_blood_type = models.PositiveIntegerField(_('Blood Type'), choices=i_choices(BLOOD_CHOICES), null=True) + i_blood_type = models.PositiveIntegerField(_('Blood Type'), choices=i_choices(BLOOD_TYPE_CHOICES), null=True) + + @property + def display_bloody_type(self): + return self.blood_type or '?' birthday = models.DateField(_('Birthday'), null=True, help_text='The year is not used, so write whatever') - star_sign = models.CharField(_('Astrological Sign'), max_length=100, null=True) + ASTROLOGICAL_SIGN_CHOICES = ( + ('Leo', _('Leo')), + ('Aries', _('Aries')), + ('Libra', _('Libra')), + ('Virgo', _('Virgo')), + ('Scorpio', _('Scorpio')), + ('Capricorn', _('Capricorn')), + ('Pisces', _('Pisces')), + ('Gemini', _('Gemini')), + ('Cancer', _('Cancer')), + ('Sagittarius', _('Sagittarius')), + ('Aquarius', _('Aquarius')), + ('Taurus', _('Taurus')), + ) + + i_astrological_sign = models.PositiveIntegerField(_('Astrological Sign'), choices=i_choices(ASTROLOGICAL_SIGN_CHOICES), null=True) instrument = models.CharField(_('Instrument'), max_length=100, null=True) + INSTRUMENTS_CHOICES = ALL_ALT_LANGUAGES + d_instruments = models.TextField(_('Instrument'), null=True) hometown = models.CharField(_('Hometown'), max_length=100, null=True) + HOMETOWNS_CHOICES = LANGUAGES_NEED_OWN_NAME + d_hometowns = models.TextField(_('Hometown'), null=True) image = models.ImageField(_('Image'), upload_to=uploadItem('idol')) From 48a33e0e03ed755a7f7d22b8d1c835897017f6bf Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 09:49:56 -0400 Subject: [PATCH 04/18] fixing translated fields and commenting out things that are not relevant before views are added --- majilove/magicollections.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 51831ce..3e876aa 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -1,5 +1,6 @@ from django.utils.translation import ugettext_lazy as _ from magi.magicollections import MagiCollection, ActivityCollection as _ActivityCollection, BadgeCollection as _BadgeCollection, StaffConfigurationCollection as _StaffConfigurationCollection, DonateCollection as _DonateCollection +from majilove import models ############################################################ # Activities @@ -32,11 +33,12 @@ class IdolCollection(MagiCollection): queryset = models.Idol.objects.all() title = _('Idol') plural_title = _('Idols') - navbar_link_title = _('Characters') + # these fields are all for after views are added + #navbar_title = _('Characters') # want the following as 'microphone' https://www.flaticon.com/free-icon/karaoke-microphone-icon_69364 - icon = 'microphone' - navbar_link_list = 'utapri' - translated_fields = ('name', 'bio', 'star_sign', 'instrument', 'hometown') + #icon = 'microphone' + #navbar_link_list = 'utapri' + translated_fields = ('name', 'description', 'instrument', 'hometown') reportable = False blockable = False From 7d4dec9f20b4daf07af4b8ced709bb3b13c4cd62 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 11:37:37 -0400 Subject: [PATCH 05/18] Adding Photo model, still missing "how to obtain field", will add after event and photoset models are added --- majilove/models.py | 403 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 402 insertions(+), 1 deletion(-) diff --git a/majilove/models.py b/majilove/models.py index 6a29024..6a7b511 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -1,8 +1,10 @@ +# -*- coding: utf-8 -*- +from collections import OrderedDict from django.utils.translation import ugettext_lazy as _, string_concat, get_language from django.db import models from django.conf import settings as django_settings from magi.models import User, uploadItem -from magi.item_model import MagiModel, i_choices +from magi.item_model import MagiModel, i_choices, getInfoFromChoices from magi.abstract_models import BaseAccount @@ -102,3 +104,402 @@ def display_bloody_type(self): def __unicode__(self): return unicode(self.t_name) + +############################################################ +# Photos + +class Photo(MagiModel): + collection_name = 'photo' + owner = models.ForeignKey(User, related_name='added_photos') + id = models.PositiveIntegerField(_('ID'), unique=True, primary_key=True, db_index=True) + + name = models.CharField(_('Photo Name'), max_length=100) + japanese_name = models.CharField(string_concat(_('Photo Name'), ' (', _('Japanese'), ')'), max_length=100) + NAMES_CHOICES = LANGUAGES_NEED_OWN_NAME + d_names = models.TextField(_('Title'), null=True) + @property + def t_name(Self): + if get_language() == 'ja': + return self.japanese_name + return self.names.get(get_language(), self.name) + + release_date = models.DateField(_('Release date'), null=True, db_index=True) + idol = models.ForeignKey(Idol, verbose_name=_('Idol'), related_name='photos', null=True, on_delete=models.SET_NULL, db_index=True) + + # Images + + # The square icon + icon = models.ImageField(_('Icon'), upload_to=uploadItem('p'), null=True) + icon_special_shot = models.ImageField(string_concat(_('Icon'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('p/a'), null=True) + + # Full photo + image = models.ImageField(_('Photo Image'), upload_to=uploadItem('p/image')) + image_special_shot = models.ImageField(string_concat(_('Photo Image'), ' (', _('Special Short'), ')'), upload_to=uploadItem('p/image/a'), null=True) + + transparent = models.ImageField(_('Transparent'), upload_to=uploadItem('p/transparent'), null=True) + transparent_special_shot = models.ImageField(string_concat(_('Transparent'), ' (', _('Special shot'), ')'), upload_to=uploadItem('p/transparent/a'), null=True) + + poster = models.ImageField(_('Poster'), upload_to=uploadItem('p/poster'), null=True) + poster_special_shot = models.ImageField(string_concat(_('Poster'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('p/poster/a'), null=True) + + message = models.ImageField(_('Message'), upload_to=uploadItem('p/message'), null=True) + autograph = models.ImageField(_('Autograph'), upload_to=uploadItem('p/autograph'), null=True) + + message_text = models.TextField(string_concat(_('Message Text'), ' (', _('Japanese') + ')'), max_length=500, null=True) + message_translation = models.TextField(_('Message translation'), max_length=500, null=True) + MESSAGE_TRANSLATIONs_CHOICES = ALL_ALT_LANGUAGES + d_message_translations = models.TextField(_('Message translation'), null=True) + @property + def t_message_translation(self): + if get_language() == 'ja': return None + return self.message_translations.get(get_language(), self.message_translation) + + # photo stats + + #triplets_in_moments is number of sets of +30 dance/vocal/charm sqaures before 100% + RARITIES = OrderedDict([ + (1, { + 'short_form': 'N', + 'special_shot_percentage': None, + 'outfit_unlock_percentage': 0, + 'triplets_in_moments' : 1, + 'max_levels': 20, + }), + (2, { + 'short_form': 'R', + 'special_shot_percentage': 100, + 'outfit_unlock_percentage': 50, + 'triplets_in_moments' : 4, + 'max_levels': (30, 50), + }), + (3, { + 'short_form': 'SR', + 'special_shot_percentage': 83, + 'outfit_unlock_percentage': 33, + 'triplets_in_moments' : 6, + 'max_levels': (40, 60), + }), + (4, { + 'short_form': 'UR', + 'special_shot_percentage': 87, + 'outfit_unlock_percentage': 25, + 'triplets_in_moments': 8, + 'max_levels': (50, 70), + }), + ]) + + RARITY_CHOICES = [(_name, _info['short_form']) for _name, _info in RARITIES.items()] + RARITY_WITHOUT_I_CHOICES = True + i_rarity = models.PositiveIntegerField(_('Rarity'), choices=i_choices(RARITY_CHOICES), db_index=True) + + COMBINABLE_RARITIES = [2, 3, 4] + + @property + def combinable(self): + return self.i_rarity in self.COMBINABLE_RARITIES + + @property + def single_max_level(self): + return RARITIES[self.i_rarity]['max_levels'][0] if self.combinable else RARITIES[self.i_rarity]['max_levels'] + + @property + def max_max_level(self): + return RARITIES[self.i_rarity]['max_levels'][1] if self.combinable else RARITIES[self.i_rarity]['max_levels'] + + COLORS= OrderedDict([ + (1, { # yellow + 'translation': _('Star'), + 'english': u'Star' + }), + (2, { # red + 'translation': _('Shine'), + 'english': u'Shine' + }), + (3, { # blue + 'translation': _('Dream'), + 'english': u'Dream' + }) + ]) + + COLOR_CHOICES = [(_name, _info['translation']) for _name, _info in COLORS.items()] + COLOR_WITHOUT_I_CHOICES=True + i_color = models.PositiveIntegerField(_('Color'), choices=COLOR_CHOICES, db_index=True) + english_color = property(getInfoFromChoices('color', COLORS, 'english')) + + STATS = OrderedDict([ + (1, { + 'translation': _('Dance'), + 'english': u'Dance', + 'japanese_translation': u'DANCE' + }), + (2, { + 'translation': _('Vocal'), + 'english': u'Vocal', + 'japanese_translation': u'VOCAL' + }), + (3, { + 'translation': _('Charm'), + 'english': u'Charm', + 'japanese_translation': u'ACT' + }) + ]) + + dance_min = models.PositiveIntegerField(string_concat(_('Dance'), ' (', _('Minimum'), ')'), default=0) + dance_single_copy_max = models.PositiveIntegerField(string_concat(_('Dance'), ' (', _('Single Copy Maximum'), ')'), default=0) + dance_max_copy_max = models.PositiveIntegerField(string_concat(_('Dance'), ' (', _('Maxed Copy Maximum'), ')'), default=0) + + vocal_min = models.PositiveIntegerField(string_concat(_('Vocal'), ' (', _('Minimum'), ')'), default=0) + vocal_single_copy_max = models.PositiveIntegerField(string_concat(_('Vocal'), ' (', _('Single Copy Maximum'), ')'), default=0) + vocal_max_copy_max = models.PositiveIntegerField(string_concat(_('Vocal'), ' (', _('Maxed Copy Maximum'), ')'), default=0) + + charm_min = models.PositiveIntegerField(string_concat(_('Charm'), ' (', _('Minimum'), ')'), default=0) + charm_single_copy_max = models.PositiveIntegerField(string_concat(_('Charm'), ' (', _('Single Copy Maximum'), ')'), default=0) + charm_max_copy_max = models.PositiveIntegerField(string_concat(_('Charm'), ' (', _('Maxed Copy Maximum'), ')'), default=0) + + @property + def overall_min(self): + return self.dance_min + self.vocal_min + self.charm_min + + @property + def overall_single_copy_max(self): + return self.dance_single_copy_max + self.vocal_single_copy_max + self.charm_single_copy_max + + @property + def overall_max_copy_max(self): + return self.dance_max_copy_max + self.vocal_max_copy_max + self.charm_max_copy_max + + # Leader Skill + LEADER_SKILL_INFO = { + 'variables': ['color', 'stat', 'percentage'], + 'template': _(u'{color} {stat} +{percentage}%'), + 'japanese_template': u'{color} の{stat}パフォーマンス{percentage}%上昇' + } + + #currently always the same as color, but this is safer + LEADER_SKILL_COLOR_CHOICES = COLOR_CHOICES + LEADER_SKILL_COLOR_WITHOUT_I_CHOICES = True + i_leader_skill_color = models.PositiveIntegerField('{color}', choices=LEADER_SKILL_COLOR_CHOICES, null=True) + + LEADER_SKILL_STAT_CHOICES = [(_name, _info['translation']) for _name, _info in STATS.items()] + LEADER_SKILL_STAT_WITHOUT_I_CHOICES = True + i_leader_skill_stat = models.PositiveIntegerField('{stat}', choices=LEADER_SKILL_STAT_CHOICES, null=True) + + leader_skill_percentage = models.PositiveIntegerField('{percentage}', null=True) + + @property + def leader_skill_variables(self): + return { + key: getattr(self, u'leader_skill_{}'.format(key)) + for key in self.LEADER_SKILL_INFO['variables'] + } + + @property + def leader_skill(self): + if self.leader_skill_color is None: return None + return self.LEADER_SKILL_INFO['template'].format(**self.leader_skill_variables) + + @property + def japanese_leader_skill(self): + if self.leader_skill_color is None: return None + return self.LEADER_SKILL_INFO['japanese_template'].format(**self.leader_skill_variables) + + + # Skills + SKILL_TYPES = OrderedDict([ + (1, { + 'translation': _(u'Score notes'), + 'english': 'Score notes', + 'japanese_translation': u'スコアノーツ', + 'icon': 'scoreup', + + 'variables': ['note_count'], + 'template': _(u'Score Notes +{note_count}'), + 'japanese_template': u'スコアノーツを{note_count}個追加' + }), + (2, { + 'translation': _(u'Perfect score up'), + 'english': 'Perfect score up', + 'japanese_translation': u'JUST PERFECTのスコア', + 'icon': 'scoreup', + + 'variables': ['percentage'], + 'template': _(u'Perfect Score +{percentage}%'), + 'japanese_template': u'JUST PERFECTのスコア{percentage}%上昇' + }), + (3, { + 'translation': _(u'Cut-in'), + 'english': 'Cut-in', + 'japanese_translation': u'カットイン', + 'icon': 'scoreup', + + 'variables': ['percentage'], + 'template': _(u'Cut-in Bonus Score +{percentage}%'), + 'japanese_template': u'カットインボーナスのスコア{percentage}%上昇' + }), + (4, { + 'translation': _(u'Good lock'), + 'english': 'Good lock', + # need someone to check this, feels too long + 'japanese_translation': u'BADをGREATにする', + 'icon': 'perfectlock', + + 'variables': ['note_count'], + 'template': _(u'Bad > Good ({note_count} Times)'), + 'japanese_template': _(u'BADを{note_count}回GREATにする') + }), + (5, { + 'translation': _(u'Great lock'), + 'english': 'Great lock', + # also seems long, need to check which comma to use + 'japanese_translation': u'BAD,GREATをPERFECTにする', + 'icon': 'perfectlock', + + 'variables': ['note_count'], + 'template': _(u'Bad/Good > Great ({note_count} Times)'), + 'japanese_template': u'BAD,GREATを{note_count}回PERFECTにする' + }), + (6, { + 'translation': _(u'Healer'), + 'english': 'Healer', + 'japanese_translation': u'ライフ回復ノーツ', + 'icon': 'healer', + + 'variables': ['note_count'], + 'template': _(u'Stamina Recovery Notes +{note_count}'), + 'japanese_template': u'ライフ回復ノーツを{note_count}個追加' + }) + ]) + + ALL_VARIABLES = { item: True for sublist in [ _info['variables'] for _info in SKILL_TYPES.values() ] for item in sublist }.keys() + + SKILL_TYPE_WITHOUT_I_CHOICES = True + SKILL_TYPE_CHOICES = [(_name, _info['translation']) for _name, _info in SKILL_TYPES.items()] + + i_skill_type = models.PositiveIntegerField(_('Skill'), choices=SKILL_TYPE_CHOICES, null=True, db_index=True) + japanese_skill_type = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'japanese_translation')) + skill_icon = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'icon')) + + @property + def skill_template(self): + return self.SKILL_TYPES[self.skill_type]['template'] + + @property + def japanese_skill_template(self): + return self.SKILL_TYPES[self.skill_type]['japanese_template'] + + @property + def skill_variables(self): + return { + key: getattr(self, u'skill_{}'.format(key)) + for key in self.SKILL_TYPES[self.skill_type]['variables'] + } + + @property + def skill(self): + if self.i_skill_type is None: return None + return self.skill_template.format(**self.skill_variables) + + @property + def japanese_skill(self): + if self.i_skill_type is None: return None + return self.japanese_skill_template.format(**self.skill_variables) + + skill_note_count = models.PositiveIntegerField('{note_count}', null=True) + # should percentage be split into different variales for perfect score and cutin? + skill_percentage = models.FloatField('{percentage}', null=True) + + # Subskills + SUB_SKILL_TYPES = OrderedDict([ + (1, { + 'translation': _(u'Full combo'), + 'english': 'Full combo', + 'japanese_translation': u'フルコンボ', + + 'variables': ['amount'], + 'template': _(u'+{amount} score when clearing a song with a Full Combo'), + 'japanese_template': u'フルコンボクリア時+{amount}スコア' + }), + (2, { + 'translation': _(u'Stamina based'), + 'english': 'Stamina based', + # unsure about this one too + 'japanese_translation': u'LIFEでクリア時', + + 'variables': ['percentage', 'amount'], + 'template': _(u'+{amount} score when clearing a song with {percentage}% Stamina'), + 'japanese_template': u'LIFE{percentage}%以上でクリア時+{amount}スコア' + }) + ]) + + ALL_SUB_SKILL_VARIABLES = { item: True for sublist in [ _info['variables'] for _info in SUB_SKILL_TYPES.values()] for item in sublist }.keys() + + SUB_SKILL_TYPE_CHOICES = [(_name, _info['translation']) for _name, _info in SUB_SKILL_TYPES.items()] + SUB_SKILL_TYPE_WITHOUT_I_CHOICES = True + i_sub_skill_type = models.PositiveIntegerField(_('Sub Skill'), choices=SUB_SKILL_TYPE_CHOICES, null=True) + japanese_sub_skill_type = property(getInfoFromChoices('sub_skill_type', SUB_SKILL_TYPES, 'japanese_translation')) + + @property + def sub_skill_template(self): + return self.SUB_SKILL_TYPES[self.sub_skill_type]['template'] + + @property + def japanese_sub_skill_template(self): + return self.SUB_SKILL_TYPES[self.sub_skill_type]['japanese_template'] + + @property + def sub_skill_variables(self): + return { + key: getattr(self, u'sub_skill_{}'.format(key)) + for key in self.SUB_SKILL_TYPES[self.sub_skill_type]['variables'] + } + + @property + def sub_skill(self): + if self.i_sub_skill_type is None: return None + return self.sub_skill_template.format(**self.sub_skill_variables) + + @property + def japanese_sub_skill(self): + if self.i_sub_skill_type is None: return None + return self.japanese_sub_skill_template.format(**self.sub_skill_variables) + + sub_skill_amount = models.PositiveIntegerField('{amount}', null=True) + sub_skill_percentage = models.FloatField('{percentage}', null=True) + + # Cache idol + + _cache_idol_days = 20 + _cache_idol_last_update = models.DateTimeField(null=True) + _cache_j_idol = models.TextField(null=True) + + @classmethod + def cached_idol_pre(self, d): + d['name'] = d['names'].get('en', None) + d['t_name'] = d['unicode'] = d['names'].get(get_language(), d['name']) + + def to_cache_member(self): + if not self.idol: + return { + 'id': None, + 'names': {}, + 'image': None, + } + names = self.idol.names or {} + names['en'] = self.idol.name + names['ja'] = self.idol.japanese_name + return { + 'id': self.idol.id, + 'names': names, + 'image': unicode(self.idol.image) + } + + def __unicode__(self): + if self.id: + return u'{rarity} {idol_name} - {name}'.format( + rarity = self.rarity, + idol_name = self.cached_idol.t_name if self.cached_idol else '', + name=(self.japanese_name + if (get_language() == 'ja' and self.japanese_name) or not self.name + else self.name or ''), + ) + return u'' From 51262f2a74f4efae636191882f58ea09f041a850 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 12:46:07 -0400 Subject: [PATCH 06/18] Adding basic form and slightly changing display nam for the small image in idol model --- majilove/admin.py | 1 + majilove/forms.py | 9 +++++++++ majilove/magicollections.py | 4 +++- majilove/models.py | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 majilove/forms.py diff --git a/majilove/admin.py b/majilove/admin.py index 1f7cf72..94b20e6 100644 --- a/majilove/admin.py +++ b/majilove/admin.py @@ -4,3 +4,4 @@ # Register your models to the admin page here. admin.site.register(models.Account) +admin.site.register(models.Idol) diff --git a/majilove/forms.py b/majilove/forms.py new file mode 100644 index 0000000..9a97038 --- /dev/null +++ b/majilove/forms.py @@ -0,0 +1,9 @@ +from magi import forms +from magi.forms import AutoForm +from majilove import models + +class IdolForm(AutoForm): + class Meta(AutoForm.Meta): + model = models.Idol + fields = '__all__' + save_owner_on_creation = True diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 3e876aa..2b05e15 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -1,6 +1,6 @@ from django.utils.translation import ugettext_lazy as _ from magi.magicollections import MagiCollection, ActivityCollection as _ActivityCollection, BadgeCollection as _BadgeCollection, StaffConfigurationCollection as _StaffConfigurationCollection, DonateCollection as _DonateCollection -from majilove import models +from majilove import models, forms ############################################################ # Activities @@ -40,6 +40,8 @@ class IdolCollection(MagiCollection): #navbar_link_list = 'utapri' translated_fields = ('name', 'description', 'instrument', 'hometown') + form_class = forms.IdolForm + reportable = False blockable = False diff --git a/majilove/models.py b/majilove/models.py index 6a29024..6f474f0 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -98,7 +98,7 @@ def display_bloody_type(self): image = models.ImageField(_('Image'), upload_to=uploadItem('idol')) - small_image = models.ImageField(_('Image'), upload_to=uploadItem('idol/small')) + small_image = models.ImageField(string_concat(_('Image'), ' (', _('Small'), ')'), upload_to=uploadItem('idol/small')) def __unicode__(self): return unicode(self.t_name) From 43eccd5faeb6d4f19810564e44765baa440ca7ec Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 12:48:06 -0400 Subject: [PATCH 07/18] fixing typo: display_bloody_type -> display_blood_type --- majilove/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/majilove/models.py b/majilove/models.py index 6a29024..af48384 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -66,7 +66,7 @@ def display_weight(self): i_blood_type = models.PositiveIntegerField(_('Blood Type'), choices=i_choices(BLOOD_TYPE_CHOICES), null=True) @property - def display_bloody_type(self): + def display_blood_type(self): return self.blood_type or '?' birthday = models.DateField(_('Birthday'), null=True, help_text='The year is not used, so write whatever') From 11035e4d9140abc45e7aa8771d559afa0988d1ea Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 19:43:06 -0400 Subject: [PATCH 08/18] adding hobby as translated field to IdolCollection --- majilove/magicollections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 2b05e15..51748f1 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -38,7 +38,7 @@ class IdolCollection(MagiCollection): # want the following as 'microphone' https://www.flaticon.com/free-icon/karaoke-microphone-icon_69364 #icon = 'microphone' #navbar_link_list = 'utapri' - translated_fields = ('name', 'description', 'instrument', 'hometown') + translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby') form_class = forms.IdolForm From 16d270e39f1d5c0f0813bd408d5063fc64ecf428 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sun, 20 May 2018 23:24:12 -0400 Subject: [PATCH 09/18] slightly modified japanese translation for locker skills --- majilove/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index 6a7b511..81f7a0d 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -340,7 +340,7 @@ def japanese_leader_skill(self): 'translation': _(u'Good lock'), 'english': 'Good lock', # need someone to check this, feels too long - 'japanese_translation': u'BADをGREATにする', + 'japanese_translation': u'BADをGREATに', 'icon': 'perfectlock', 'variables': ['note_count'], @@ -351,7 +351,7 @@ def japanese_leader_skill(self): 'translation': _(u'Great lock'), 'english': 'Great lock', # also seems long, need to check which comma to use - 'japanese_translation': u'BAD,GREATをPERFECTにする', + 'japanese_translation': u'BAD,GREATをPERFECTに', 'icon': 'perfectlock', 'variables': ['note_count'], From efec8d901edf136f574f8f6ccc9a330d7c57e83d Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Mon, 21 May 2018 00:04:33 -0400 Subject: [PATCH 10/18] missed a spot when merging --- majilove/models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index 4b11b04..f593667 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -507,5 +507,3 @@ def __unicode__(self): else self.name or ''), ) return u'' -======= ->>>>>>> 7f218d89d1bbccc5a8308752ce15ce6b6ea0c69d From 5865cac90de5d901c5ddafb27c681403988c0f4c Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 26 May 2018 09:57:10 -0400 Subject: [PATCH 11/18] fixing up photo model --- majilove/models.py | 301 ++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 169 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index f593667..888de40 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -6,6 +6,7 @@ from magi.models import User, uploadItem from magi.item_model import MagiModel, i_choices, getInfoFromChoices from magi.abstract_models import BaseAccount +from magi.utils import templateVariables ############################################################ @@ -114,40 +115,36 @@ def __unicode__(self): class Photo(MagiModel): collection_name = 'photo' + owner = models.ForeignKey(User, related_name='added_photos') id = models.PositiveIntegerField(_('ID'), unique=True, primary_key=True, db_index=True) name = models.CharField(_('Photo Name'), max_length=100) - japanese_name = models.CharField(string_concat(_('Photo Name'), ' (', _('Japanese'), ')'), max_length=100) - NAMES_CHOICES = LANGUAGES_NEED_OWN_NAME - d_names = models.TextField(_('Title'), null=True) - @property - def t_name(Self): - if get_language() == 'ja': - return self.japanese_name - return self.names.get(get_language(), self.name) + NAMES_CHOICES = ALL_ALT_LANGUAGES + d_names = models.TextField(_('Photo Name'), null=True) release_date = models.DateField(_('Release date'), null=True, db_index=True) - idol = models.ForeignKey(Idol, verbose_name=_('Idol'), related_name='photos', null=True, on_delete=models.SET_NULL, db_index=True) + idol = models.ForeignKey(Idol, verbose_name=_('Idol'), related_name='photos', db_index=True) # Images # The square icon - icon = models.ImageField(_('Icon'), upload_to=uploadItem('p'), null=True) - icon_special_shot = models.ImageField(string_concat(_('Icon'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('p/a'), null=True) + image = models.ImageField(_('Icon'), upload_to=uploadItem('photo'), null=True) + image_special_shot = models.ImageField(string_concat(_('Icon'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('photo/specialshot'), null=True) # Full photo - image = models.ImageField(_('Photo Image'), upload_to=uploadItem('p/image')) - image_special_shot = models.ImageField(string_concat(_('Photo Image'), ' (', _('Special Short'), ')'), upload_to=uploadItem('p/image/a'), null=True) + full_photo = models.ImageField(_('Photo Image'), upload_to=uploadItem('photo/image')) + full_photo_special_shot = models.ImageField(string_concat(_('Photo Image'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('photo/image/specialshot'), null=True) - transparent = models.ImageField(_('Transparent'), upload_to=uploadItem('p/transparent'), null=True) - transparent_special_shot = models.ImageField(string_concat(_('Transparent'), ' (', _('Special shot'), ')'), upload_to=uploadItem('p/transparent/a'), null=True) + transparent = models.ImageField(_('Transparent'), upload_to=uploadItem('photo/transparent'), null=True) + transparent_special_shot = models.ImageField(string_concat(_('Transparent'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('photo/transparent/specialshot'), null=True) - poster = models.ImageField(_('Poster'), upload_to=uploadItem('p/poster'), null=True) - poster_special_shot = models.ImageField(string_concat(_('Poster'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('p/poster/a'), null=True) + # Poster + art = models.ImageField(_('Poster'), upload_to=uploadItem('photo/poster'), null=True) + art_special_shot = models.ImageField(string_concat(_('Poster'), ' (', _('Special Shot'), ')'), upload_to=uploadItem('photo/poster/specialshot'), null=True) - message = models.ImageField(_('Message'), upload_to=uploadItem('p/message'), null=True) - autograph = models.ImageField(_('Autograph'), upload_to=uploadItem('p/autograph'), null=True) + message = models.ImageField(_('Message'), upload_to=uploadItem('photo/message'), null=True) + autograph = models.ImageField(_('Autograph'), upload_to=uploadItem('photo/autograph'), null=True) message_text = models.TextField(string_concat(_('Message Text'), ' (', _('Japanese') + ')'), max_length=500, null=True) message_translation = models.TextField(_('Message translation'), max_length=500, null=True) @@ -158,33 +155,33 @@ def t_message_translation(self): if get_language() == 'ja': return None return self.message_translations.get(get_language(), self.message_translation) - # photo stats + # Photo statistics #triplets_in_moments is number of sets of +30 dance/vocal/charm sqaures before 100% RARITIES = OrderedDict([ - (1, { - 'short_form': 'N', + ('N', { + 'translation': 'N', 'special_shot_percentage': None, 'outfit_unlock_percentage': 0, 'triplets_in_moments' : 1, 'max_levels': 20, }), - (2, { - 'short_form': 'R', + ('R', { + 'translation': 'R', 'special_shot_percentage': 100, 'outfit_unlock_percentage': 50, 'triplets_in_moments' : 4, 'max_levels': (30, 50), }), - (3, { - 'short_form': 'SR', + ('SR', { + 'translation': 'SR', 'special_shot_percentage': 83, 'outfit_unlock_percentage': 33, 'triplets_in_moments' : 6, 'max_levels': (40, 60), }), - (4, { - 'short_form': 'UR', + ('UR', { + 'translation': 'UR', 'special_shot_percentage': 87, 'outfit_unlock_percentage': 25, 'triplets_in_moments': 8, @@ -192,61 +189,33 @@ def t_message_translation(self): }), ]) - RARITY_CHOICES = [(_name, _info['short_form']) for _name, _info in RARITIES.items()] - RARITY_WITHOUT_I_CHOICES = True + RARITY_CHOICES = [(_name, _info['translation']) for _name, _info in RARITIES.items()] i_rarity = models.PositiveIntegerField(_('Rarity'), choices=i_choices(RARITY_CHOICES), db_index=True) + rarity_max_levels = property(getInfoFromChoices('rarity', RARITIES, 'max_levels')) + rarity_special_shot_perecentage = property(getInfoFromChoices('rarity', RARITIES, 'special_shot_percentage')) + rarity_triplets_in_moments = property(getInfoFromChoices('rarity', RARITIES, 'triplets_in_moments')) - COMBINABLE_RARITIES = [2, 3, 4] + COMBINABLE_RARITIES = ['R', 'SR', 'UR'] @property def combinable(self): - return self.i_rarity in self.COMBINABLE_RARITIES + return self.rarity in self.COMBINABLE_RARITIES @property def single_max_level(self): - return RARITIES[self.i_rarity]['max_levels'][0] if self.combinable else RARITIES[self.i_rarity]['max_levels'] + return self.rarity_max_levels[0] if self.combinable else self.rarity_max_levels @property def max_max_level(self): - return RARITIES[self.i_rarity]['max_levels'][1] if self.combinable else RARITIES[self.i_rarity]['max_levels'] + return self.rarity_max_levels[1] if self.combinable else self.rarity_max_levels - COLORS= OrderedDict([ - (1, { # yellow - 'translation': _('Star'), - 'english': u'Star' - }), - (2, { # red - 'translation': _('Shine'), - 'english': u'Shine' - }), - (3, { # blue - 'translation': _('Dream'), - 'english': u'Dream' - }) + COLOR_CHOICES = OrderedDict([ + ('star', _('Star')), # Yellow + ('shine', _('Shine')), # Red + ('dream', _('Dream')), # Blue ]) - COLOR_CHOICES = [(_name, _info['translation']) for _name, _info in COLORS.items()] - COLOR_WITHOUT_I_CHOICES=True - i_color = models.PositiveIntegerField(_('Color'), choices=COLOR_CHOICES, db_index=True) - english_color = property(getInfoFromChoices('color', COLORS, 'english')) - - STATS = OrderedDict([ - (1, { - 'translation': _('Dance'), - 'english': u'Dance', - 'japanese_translation': u'DANCE' - }), - (2, { - 'translation': _('Vocal'), - 'english': u'Vocal', - 'japanese_translation': u'VOCAL' - }), - (3, { - 'translation': _('Charm'), - 'english': u'Charm', - 'japanese_translation': u'ACT' - }) - ]) + i_color = models.PositiveIntegerField(_('Color'), choices=i_choices(COLOR_CHOICES), db_index=True) dance_min = models.PositiveIntegerField(string_concat(_('Dance'), ' (', _('Minimum'), ')'), default=0) dance_single_copy_max = models.PositiveIntegerField(string_concat(_('Dance'), ' (', _('Single Copy Maximum'), ')'), default=0) @@ -274,201 +243,197 @@ def overall_max_copy_max(self): # Leader Skill LEADER_SKILL_INFO = { - 'variables': ['color', 'stat', 'percentage'], - 'template': _(u'{color} {stat} +{percentage}%'), - 'japanese_template': u'{color} の{stat}パフォーマンス{percentage}%上昇' + 'template': _(u'{t_leader_skill_color} {t_leader_skill_stat} +{leader_skill_percentage}%'), + 'japanese_template': u'{t_leader_skill_color} の{t_leader_skill_stat}パフォーマンス{leader_skill_percentage}%上昇', } - #currently always the same as color, but this is safer - LEADER_SKILL_COLOR_CHOICES = COLOR_CHOICES + # Currently leader skill color is always the same as card color LEADER_SKILL_COLOR_WITHOUT_I_CHOICES = True - i_leader_skill_color = models.PositiveIntegerField('{color}', choices=LEADER_SKILL_COLOR_CHOICES, null=True) + i_leader_skill_color = property(i_color) - LEADER_SKILL_STAT_CHOICES = [(_name, _info['translation']) for _name, _info in STATS.items()] - LEADER_SKILL_STAT_WITHOUT_I_CHOICES = True - i_leader_skill_stat = models.PositiveIntegerField('{stat}', choices=LEADER_SKILL_STAT_CHOICES, null=True) + STATISTICS = OrderedDict([ + ('dance', { + 'translation': _('Dance'), + 'english': u'Dance', + 'japanese_translation': u'DANCE' + }), + ('vocal', { + 'translation': _('Vocal'), + 'english': u'Vocal', + 'japanese_translation': u'VOCAL' + }), + ('charm', { + 'translation': _('Charm'), + 'english': u'Charm', + 'japanese_translation': u'ACT' + }) + ]) - leader_skill_percentage = models.PositiveIntegerField('{percentage}', null=True) + LEADER_SKILL_STAT_CHOICES = [(_name, _info['translation']) for _name, _info in STATISTICS.items()] + i_leader_skill_stat = models.PositiveIntegerField('{t_leader_skill_stat}', choices=i_choices(LEADER_SKILL_STAT_CHOICES), null=True) @property - def leader_skill_variables(self): - return { - key: getattr(self, u'leader_skill_{}'.format(key)) - for key in self.LEADER_SKILL_INFO['variables'] - } + def t_leader_skill_stat(self): + if get_language() == 'ja': return getInfoFromChoices('leader_skill_stat', STATISTICS, 'japanese_translation') + return getInfoFromChoices('leader_skill_stat', STATISTICS, 'translation') + + leader_skill_percentage = models.PositiveIntegerField('{leader_skill_percentage}', null=True) @property def leader_skill(self): - if self.leader_skill_color is None: return None - return self.LEADER_SKILL_INFO['template'].format(**self.leader_skill_variables) + if self.leader_skill_stat is None: return None + return self.LEADER_SKILL_INFO['template'].format(**{ + k: getattr(self, 't_leader_skill_{}'.format(k), '') + for k in templateVariables(self.LEADER_SKILL_INFO['template']) + }) @property def japanese_leader_skill(self): if self.leader_skill_color is None: return None - return self.LEADER_SKILL_INFO['japanese_template'].format(**self.leader_skill_variables) + return self.LEADER_SKILL_INFO['japanese_template'].format(**{ + k: getattr(self, 't_leader_skill_{}'.format(k), '') + for k in templateVariables(self.LEADER_SKILL_INFO['template']) + }) # Skills SKILL_TYPES = OrderedDict([ - (1, { + ('score_notes', { 'translation': _(u'Score notes'), 'english': 'Score notes', 'japanese_translation': u'スコアノーツ', 'icon': 'scoreup', - 'variables': ['note_count'], - 'template': _(u'Score Notes +{note_count}'), - 'japanese_template': u'スコアノーツを{note_count}個追加' + 'template': _(u'Score Notes +{skill_note_count}'), + 'japanese_template': u'スコアノーツを{skill_note_count}個追加', }), - (2, { + ('perfect_score', { 'translation': _(u'Perfect score up'), 'english': 'Perfect score up', 'japanese_translation': u'JUST PERFECTのスコア', 'icon': 'scoreup', - 'variables': ['percentage'], - 'template': _(u'Perfect Score +{percentage}%'), - 'japanese_template': u'JUST PERFECTのスコア{percentage}%上昇' + 'template': _(u'Perfect Score +{skill_percentage}%'), + 'japanese_template': u'JUST PERFECTのスコア{skill_percentage}%上昇', }), - (3, { + ('cutin', { 'translation': _(u'Cut-in'), 'english': 'Cut-in', 'japanese_translation': u'カットイン', 'icon': 'scoreup', - 'variables': ['percentage'], - 'template': _(u'Cut-in Bonus Score +{percentage}%'), - 'japanese_template': u'カットインボーナスのスコア{percentage}%上昇' + 'template': _(u'Cut-in Bonus Score +{skill_percentage}%'), + 'japanese_template': u'カットインボーナスのスコア{skill_percentage}%上昇', }), - (4, { + ('good_lock', { 'translation': _(u'Good lock'), 'english': 'Good lock', # need someone to check this, feels too long 'japanese_translation': u'BADをGREATに', 'icon': 'perfectlock', - 'variables': ['note_count'], - 'template': _(u'Bad > Good ({note_count} Times)'), - 'japanese_template': _(u'BADを{note_count}回GREATにする') + 'template': _(u'Bad > Good ({skill_note_count} Times)'), + 'japanese_template': u'BADを{skill_note_count}回GREATにする', }), - (5, { + ('great_lock', { 'translation': _(u'Great lock'), 'english': 'Great lock', # also seems long, need to check which comma to use 'japanese_translation': u'BAD,GREATをPERFECTに', 'icon': 'perfectlock', - 'variables': ['note_count'], - 'template': _(u'Bad/Good > Great ({note_count} Times)'), - 'japanese_template': u'BAD,GREATを{note_count}回PERFECTにする' + 'template': _(u'Bad/Good > Great ({skill_note_count} Times)'), + 'japanese_template': u'BAD,GREATを{skill_note_count}回PERFECTにする', }), - (6, { + ('healer', { 'translation': _(u'Healer'), 'english': 'Healer', 'japanese_translation': u'ライフ回復ノーツ', 'icon': 'healer', - 'variables': ['note_count'], - 'template': _(u'Stamina Recovery Notes +{note_count}'), - 'japanese_template': u'ライフ回復ノーツを{note_count}個追加' - }) + 'template': _(u'Stamina Recovery Notes +{skill_note_count}'), + 'japanese_template': u'ライフ回復ノーツを{skill_note_count}個追加', + }), ]) - ALL_VARIABLES = { item: True for sublist in [ _info['variables'] for _info in SKILL_TYPES.values() ] for item in sublist }.keys() + SKILL_VARIABLES = ['skill_note_count', 'skill_percentage'] - SKILL_TYPE_WITHOUT_I_CHOICES = True SKILL_TYPE_CHOICES = [(_name, _info['translation']) for _name, _info in SKILL_TYPES.items()] - i_skill_type = models.PositiveIntegerField(_('Skill'), choices=SKILL_TYPE_CHOICES, null=True, db_index=True) + i_skill_type = models.PositiveIntegerField(_('Skill'), choices=i_choices(SKILL_TYPE_CHOICES), null=True, db_index=True) japanese_skill_type = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'japanese_translation')) skill_icon = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'icon')) - - @property - def skill_template(self): - return self.SKILL_TYPES[self.skill_type]['template'] - - @property - def japanese_skill_template(self): - return self.SKILL_TYPES[self.skill_type]['japanese_template'] - - @property - def skill_variables(self): - return { - key: getattr(self, u'skill_{}'.format(key)) - for key in self.SKILL_TYPES[self.skill_type]['variables'] - } + skill_template = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'template')) + japanese_skill_template = property(getInfoFromChoices('skill_type', SKILL_TYPES, 'japanese_template')) @property def skill(self): if self.i_skill_type is None: return None - return self.skill_template.format(**self.skill_variables) + return self.skill_template.format(**{ + k: getattr(self, k, '') + for k in templateVariables(self.skill_template) + }) @property def japanese_skill(self): if self.i_skill_type is None: return None - return self.japanese_skill_template.format(**self.skill_variables) + return self.japanese_skill_template.format(**{ + k: getattr(self, k, '') + for k in templateVariables(self.japanese_skill_template) + }) - skill_note_count = models.PositiveIntegerField('{note_count}', null=True) + skill_note_count = models.PositiveIntegerField('{skill_note_count}', null=True) # should percentage be split into different variales for perfect score and cutin? - skill_percentage = models.FloatField('{percentage}', null=True) + skill_percentage = models.FloatField('{skill_percentage}', null=True) # Subskills SUB_SKILL_TYPES = OrderedDict([ - (1, { + ('full_combo', { 'translation': _(u'Full combo'), 'english': 'Full combo', 'japanese_translation': u'フルコンボ', - 'variables': ['amount'], - 'template': _(u'+{amount} score when clearing a song with a Full Combo'), - 'japanese_template': u'フルコンボクリア時+{amount}スコア' + 'template': _(u'+{sub_skill_amount} score when clearing a song with a Full Combo'), + 'japanese_template': u'フルコンボクリア時+{sub_skill_amount}スコア', }), - (2, { + ('stamina', { 'translation': _(u'Stamina based'), 'english': 'Stamina based', # unsure about this one too 'japanese_translation': u'LIFEでクリア時', - 'variables': ['percentage', 'amount'], - 'template': _(u'+{amount} score when clearing a song with {percentage}% Stamina'), - 'japanese_template': u'LIFE{percentage}%以上でクリア時+{amount}スコア' - }) + 'template': _(u'+{sub_skill_amount} score when clearing a song with {sub_skill_percentage}% Stamina'), + 'japanese_template': u'LIFE{sub_skill_percentage}%以上でクリア時+{sub_skill_amount}スコア', + }), ]) - ALL_SUB_SKILL_VARIABLES = { item: True for sublist in [ _info['variables'] for _info in SUB_SKILL_TYPES.values()] for item in sublist }.keys() + SUB_SKILL_VARIABLES = ['sub_skill_percentage', 'sub_skill_amount'] SUB_SKILL_TYPE_CHOICES = [(_name, _info['translation']) for _name, _info in SUB_SKILL_TYPES.items()] - SUB_SKILL_TYPE_WITHOUT_I_CHOICES = True - i_sub_skill_type = models.PositiveIntegerField(_('Sub Skill'), choices=SUB_SKILL_TYPE_CHOICES, null=True) + i_sub_skill_type = models.PositiveIntegerField(_('Sub Skill'), choices=i_choices(SUB_SKILL_TYPE_CHOICES), null=True) japanese_sub_skill_type = property(getInfoFromChoices('sub_skill_type', SUB_SKILL_TYPES, 'japanese_translation')) - @property - def sub_skill_template(self): - return self.SUB_SKILL_TYPES[self.sub_skill_type]['template'] - - @property - def japanese_sub_skill_template(self): - return self.SUB_SKILL_TYPES[self.sub_skill_type]['japanese_template'] - - @property - def sub_skill_variables(self): - return { - key: getattr(self, u'sub_skill_{}'.format(key)) - for key in self.SUB_SKILL_TYPES[self.sub_skill_type]['variables'] - } + sub_skill_template = property(getInfoFromChoices('sub_skill_type', SUB_SKILL_TYPES, 'template')) + japanese_sub_skill_template = property(getInfoFromChoices('sub_skill_type', SUB_SKILL_TYPES, 'japanese_template')) @property def sub_skill(self): if self.i_sub_skill_type is None: return None - return self.sub_skill_template.format(**self.sub_skill_variables) + return self.sub_skill_template.format({ + k: getattr(self, k, '') + for k in templateVariables(self.sub_skill_template) + }) @property def japanese_sub_skill(self): if self.i_sub_skill_type is None: return None - return self.japanese_sub_skill_template.format(**self.sub_skill_variables) + return self.japanese_sub_skill_template.format({ + k: getattr(self, k, '') + for k in templateVariables(self.japanese_sub_skill_template) + }) - sub_skill_amount = models.PositiveIntegerField('{amount}', null=True) - sub_skill_percentage = models.FloatField('{percentage}', null=True) + sub_skill_amount = models.PositiveIntegerField('{sub_skill_amount}', null=True) + sub_skill_percentage = models.FloatField('{sub_skill_percentage}', null=True) # Cache idol @@ -500,10 +465,8 @@ def to_cache_member(self): def __unicode__(self): if self.id: return u'{rarity} {idol_name} - {name}'.format( - rarity = self.rarity, - idol_name = self.cached_idol.t_name if self.cached_idol else '', - name=(self.japanese_name - if (get_language() == 'ja' and self.japanese_name) or not self.name - else self.name or ''), + rarity=self.rarity, + idol_name=self.cached_idol.t_name if self.cached_idol else '', + name=self.t_name, ) return u'' From 6bf19d4ef68dfc140da06a1d9dae3c1555fd7f5f Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 26 May 2018 10:57:46 -0400 Subject: [PATCH 12/18] Added mic image and idols link to navbar --- majilove/magicollections.py | 9 +++------ majilove/models.py | 4 ++-- majilove/static/img/mic.png | Bin 0 -> 663 bytes majilove/static/less/style.less | 12 ++++++++++++ 4 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 majilove/static/img/mic.png diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 51748f1..d08bab7 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -33,12 +33,9 @@ class IdolCollection(MagiCollection): queryset = models.Idol.objects.all() title = _('Idol') plural_title = _('Idols') - # these fields are all for after views are added - #navbar_title = _('Characters') - # want the following as 'microphone' https://www.flaticon.com/free-icon/karaoke-microphone-icon_69364 - #icon = 'microphone' - #navbar_link_list = 'utapri' - translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby') + navbar_title = _('Idols') + image = 'mic' + translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby', 'astrological_sign') form_class = forms.IdolForm diff --git a/majilove/models.py b/majilove/models.py index b70d66b..3cde4d3 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -100,9 +100,9 @@ def display_blood_type(self): HOBBYS_CHOICES = ALL_ALT_LANGUAGES d_hobbys = models.TextField(_('Hobby'), null=True) - image = models.ImageField(_('Image'), upload_to=uploadItem('idol')) + image = models.ImageField(_('Image'), upload_to=uploadItem('idol'), null=True) - small_image = models.ImageField(string_concat(_('Image'), ' (', _('Small'), ')'), upload_to=uploadItem('idol/small')) + small_image = models.ImageField('Small image (for map)', upload_to=uploadItem('idol/small')) def __unicode__(self): return unicode(self.t_name) diff --git a/majilove/static/img/mic.png b/majilove/static/img/mic.png new file mode 100644 index 0000000000000000000000000000000000000000..cc79f3586cc20f0fbd89a5d27a8a9a941d61606d GIT binary patch literal 663 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5Sk5Uj7}P}D}aLRC7!;n?2lNb1hkC~%~iK%U|>x3ba4!^I6ZZuzsBK2iR1JC zYNp)`oAxk#QvKrvGGXiTwAtI|PHA2=rF-&;lLs9)?{0I74C0HKrqOx0V|VkEX3NV{ z*5>T*KYZ`+pSm0S-@p9(t#04>&wI{mCkg5<*`c;#&fLhpovD)(f5z|lsnWkJX40g6 zGqlAc(i+2_UizbPd_jm1-=3JHur);sCgwJ!_%<2~3hv&Ow`{Va@IBRCKHX~C%cS(5 zRVj;97|%JT{r1hrmiEw+tBOf{J)az}Nj#J5SUBY4-bnNykfM1N3;6BKmvG59I|{bR<##Z#u) zvCa`Yf2_pfNx-k362G(@_O{O_dw0}bk2k*RCp;_| z`I+ks-52`Lx%sZ(I&$*C%3j?(D+RxcuU`r<3R%4BbZM;6UGgjQwvfly^FkBzTVfqb zrFCsV@vU0o8c~vxSdwa$T$Bo=7>o=IEp!b`b&bqI49%=ejIB%!v<-}`3=IB#u$_#e zAvZrIGp!Q0hW@p!`alhmARB`7(@M${i&7cN%ggmL^RkPR6AM!H@{7`Ezq647Dq`?- L^>bP0l+XkKN__!3 literal 0 HcmV?d00001 diff --git a/majilove/static/less/style.less b/majilove/static/less/style.less index 238ad6e..2df3d88 100644 --- a/majilove/static/less/style.less +++ b/majilove/static/less/style.less @@ -17,6 +17,18 @@ /******************************************/ /* Tools */ + +/******************************************/ +/* Bootstrap / Home basics */ +/******************************************/ + +.navbar { + li[data-link-name="idol_list"]>a>img { + height: 24px; + margin: -5px; + } +} + /******************************************/ /* MagiCircles */ From 79e5a2fe86d50d02d2658e7bc73f88b654a571a0 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 26 May 2018 11:04:02 -0400 Subject: [PATCH 13/18] fixed translated_fields --- majilove/magicollections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index d08bab7..5320b58 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -35,7 +35,7 @@ class IdolCollection(MagiCollection): plural_title = _('Idols') navbar_title = _('Idols') image = 'mic' - translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby', 'astrological_sign') + translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby', 'i_astrological_sign') form_class = forms.IdolForm From 5ea2c6a27df946a15ac32230a1bb7698a7fb0c4b Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 26 May 2018 11:25:11 -0400 Subject: [PATCH 14/18] cannot figure out how to put astrological_signs into translated_fields without breaking stuff, so taking it back out --- majilove/magicollections.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index 5320b58..bc7efa7 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -35,7 +35,7 @@ class IdolCollection(MagiCollection): plural_title = _('Idols') navbar_title = _('Idols') image = 'mic' - translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby', 'i_astrological_sign') + translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby') form_class = forms.IdolForm From 6bece877b7468fd132750e7e090847da0692da7a Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Sat, 26 May 2018 14:22:11 -0400 Subject: [PATCH 15/18] fixing up some properties a little --- majilove/models.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index 888de40..61bbc96 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -249,7 +249,7 @@ def overall_max_copy_max(self): # Currently leader skill color is always the same as card color LEADER_SKILL_COLOR_WITHOUT_I_CHOICES = True - i_leader_skill_color = property(i_color) + i_leader_skill_color = property(lambda _a: _a.i_color) STATISTICS = OrderedDict([ ('dance', { @@ -274,8 +274,8 @@ def overall_max_copy_max(self): @property def t_leader_skill_stat(self): - if get_language() == 'ja': return getInfoFromChoices('leader_skill_stat', STATISTICS, 'japanese_translation') - return getInfoFromChoices('leader_skill_stat', STATISTICS, 'translation') + if get_language() == 'ja': return STATISTICS[self.leader_skill_stat]['japanese_translation'] + return STATISTICS[self.leader_skill_stat]['translation'] leader_skill_percentage = models.PositiveIntegerField('{leader_skill_percentage}', null=True) @@ -295,7 +295,6 @@ def japanese_leader_skill(self): for k in templateVariables(self.LEADER_SKILL_INFO['template']) }) - # Skills SKILL_TYPES = OrderedDict([ ('score_notes', { From 60a1db4353b1a350301a8515a40aee23796aa9c8 Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Mon, 28 May 2018 11:49:15 -0400 Subject: [PATCH 16/18] fixing up leader skill functions --- majilove/models.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/majilove/models.py b/majilove/models.py index 61bbc96..ab8b228 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -271,19 +271,13 @@ def overall_max_copy_max(self): LEADER_SKILL_STAT_CHOICES = [(_name, _info['translation']) for _name, _info in STATISTICS.items()] i_leader_skill_stat = models.PositiveIntegerField('{t_leader_skill_stat}', choices=i_choices(LEADER_SKILL_STAT_CHOICES), null=True) - - @property - def t_leader_skill_stat(self): - if get_language() == 'ja': return STATISTICS[self.leader_skill_stat]['japanese_translation'] - return STATISTICS[self.leader_skill_stat]['translation'] - leader_skill_percentage = models.PositiveIntegerField('{leader_skill_percentage}', null=True) @property def leader_skill(self): if self.leader_skill_stat is None: return None return self.LEADER_SKILL_INFO['template'].format(**{ - k: getattr(self, 't_leader_skill_{}'.format(k), '') + k: getattr(self, k, '') for k in templateVariables(self.LEADER_SKILL_INFO['template']) }) @@ -291,7 +285,7 @@ def leader_skill(self): def japanese_leader_skill(self): if self.leader_skill_color is None: return None return self.LEADER_SKILL_INFO['japanese_template'].format(**{ - k: getattr(self, 't_leader_skill_{}'.format(k), '') + k: getattr(self, k, '') for k in templateVariables(self.LEADER_SKILL_INFO['template']) }) From 6c1c8a7ca9ceb088bafc05e0e7f7623c4005879e Mon Sep 17 00:00:00 2001 From: erys <12535744+erys@users.noreply.github.com> Date: Mon, 28 May 2018 21:30:27 -0400 Subject: [PATCH 17/18] adding photo collection --- majilove/forms.py | 6 ++ majilove/magicollections.py | 88 ++++++++++++++++++++++++++++ majilove/models.py | 20 +++---- majilove/static/img/color/dream.png | Bin 0 -> 3564 bytes majilove/static/img/color/shine.png | Bin 0 -> 4227 bytes majilove/static/img/color/star.png | Bin 0 -> 3603 bytes majilove/static/img/mic.png | Bin 663 -> 1341 bytes majilove/static/img/rarity/N.png | Bin 0 -> 26431 bytes majilove/static/img/rarity/R.png | Bin 0 -> 37028 bytes majilove/static/img/rarity/SR.png | Bin 0 -> 48922 bytes majilove/static/img/rarity/UR.png | Bin 0 -> 49322 bytes 11 files changed, 104 insertions(+), 10 deletions(-) create mode 100644 majilove/static/img/color/dream.png create mode 100644 majilove/static/img/color/shine.png create mode 100644 majilove/static/img/color/star.png create mode 100644 majilove/static/img/rarity/N.png create mode 100644 majilove/static/img/rarity/R.png create mode 100644 majilove/static/img/rarity/SR.png create mode 100644 majilove/static/img/rarity/UR.png diff --git a/majilove/forms.py b/majilove/forms.py index 9a97038..fdd0777 100644 --- a/majilove/forms.py +++ b/majilove/forms.py @@ -7,3 +7,9 @@ class Meta(AutoForm.Meta): model = models.Idol fields = '__all__' save_owner_on_creation = True + +class PhotoForm(AutoForm): + class Meta(AutoForm.Meta): + model = models.Photo + fields = '__all__' + save_owner_on_creation = True diff --git a/majilove/magicollections.py b/majilove/magicollections.py index bc7efa7..b58dba9 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -1,5 +1,6 @@ from django.utils.translation import ugettext_lazy as _ from magi.magicollections import MagiCollection, ActivityCollection as _ActivityCollection, BadgeCollection as _BadgeCollection, StaffConfigurationCollection as _StaffConfigurationCollection, DonateCollection as _DonateCollection +from magi.default_settings import RAW_CONTEXT from majilove import models, forms ############################################################ @@ -38,8 +39,95 @@ class IdolCollection(MagiCollection): translated_fields = ('name', 'description', 'instrument', 'hometown', 'hobby') form_class = forms.IdolForm + multipart = True reportable = False blockable = False ############################################################ +# Photo Collection + +PHOTO_STATS_FIELDS = [ + u'{}{}'.format(_st, _sf) for _sf in [ + '_min', '_single_copy_max', '_max_copy_max', + ] for _st in [ + 'dance', 'vocal', 'charm', 'overall', + ] +] + +PHOTO_ICONS = { + 'name': 'id', + 'release_date': 'date', +} + +PHOTO_IMAGES = { + 'idol': 'mic', +} + +PHOTOS_EXCLUDE = [ + 'i_skill_type', 'i_leader_skill_stat', 'leader_skill_percentage', 'skill_note_count', 'skill_percentage', 'i_sub_skill_type', 'sub_skill_amount', 'sub_skill_percentage', +] + [ + 'image', 'image_special_shot', 'art', 'art_special_shot', 'transparent', 'transparent_special_shot', 'full_photo', 'full_photo_special_shot', +] + + +PHOTOS_ORDER = [ + 'id', 'name', 'idol', 'rarity', 'color', 'release_date', 'skill', 'sub_skill', 'images', 'full_photos', 'arts', 'transparents', +] + PHOTO_STATS_FIELDS + +class PhotoCollection(MagiCollection): + queryset = models.Photo.objects.all() + title = _('Photo') + plural_title = _('Photos') + icon = 'cards' + navbar_title = _('Photos') + multipart = True + form_class = forms.PhotoForm + + reportable = False + blockable = False + translated_fields = ('name', 'message_translation') + + def to_fields(self, view, item, *args, **kwargs): + _photo_images = PHOTO_IMAGES.copy() + _photo_images.update({'color': '{static_url}img/color/{value}.png'.format(**{'value':item.color, 'static_url':RAW_CONTEXT['static_url']}), + 'rarity': '{static_url}img/rarity/{value}.png'.format(**{'value':item.rarity, 'static_url':RAW_CONTEXT['static_url']})}) + fields = super(PhotoCollection, self).to_fields(view, item, *args, icons=PHOTO_ICONS, images=_photo_images, **kwargs) + return fields + + class ItemView(MagiCollection.ItemView): + def to_fields(self, item, extra_fields=None, exclude_fields=None, order=None, *args, **kwargs): + if extra_fields is None: extra_fields = [] + if exclude_fields is None: exclude_fields = [] + if order is None: order = PHOTOS_ORDER + exclude_fields += PHOTOS_EXCLUDE + extra_fields.append(('skill', { + 'verbose_name': _('Skill'), + 'icon': item.skill_icon, + 'type': 'text', + 'value': item.skill, + })) + extra_fields.append(('sub_skill', { + 'verbose_name': _('Sub skill'), + 'type': 'text', + 'value': item.sub_skill, + })) + # Add images fields + for image, verbose_name in [('image', _('Icon')), ('art', _('Poster')), ('transparent', _('Transparent')), ('full_photo', (_('Photo')))]: + if getattr(item, image): + extra_fields.append((u'{}s'.format(image), { + 'verbose_name': verbose_name, + 'type': 'images', + 'images': [{ + 'value': image_url, + 'verbose_name': verbose_name, + } for image_url in [ + getattr(item, u'{}_url'.format(image)), + getattr(item, u'{}_special_shot_url'.format(image)), + ] if image_url], + 'icon': 'pictures', + })) + return super(PhotoCollection.ItemView, self).to_fields(item, *args, extra_fields=extra_fields, exclude_fields=exclude_fields, order=order, **kwargs) + + +############################################################ diff --git a/majilove/models.py b/majilove/models.py index a57a72d..0495363 100644 --- a/majilove/models.py +++ b/majilove/models.py @@ -117,7 +117,7 @@ class Photo(MagiModel): collection_name = 'photo' owner = models.ForeignKey(User, related_name='added_photos') - id = models.PositiveIntegerField(_('ID'), unique=True, primary_key=True, db_index=True) + id = models.PositiveIntegerField(_('Album ID'), unique=True, primary_key=True, db_index=True) name = models.CharField(_('Photo Name'), max_length=100) NAMES_CHOICES = ALL_ALT_LANGUAGES @@ -148,7 +148,7 @@ class Photo(MagiModel): message_text = models.TextField(string_concat(_('Message Text'), ' (', _('Japanese') + ')'), max_length=500, null=True) message_translation = models.TextField(_('Message translation'), max_length=500, null=True) - MESSAGE_TRANSLATIONs_CHOICES = ALL_ALT_LANGUAGES + MESSAGE_TRANSLATIONS_CHOICES = ALL_ALT_LANGUAGES d_message_translations = models.TextField(_('Message translation'), null=True) @property def t_message_translation(self): @@ -315,8 +315,8 @@ def japanese_leader_skill(self): 'japanese_translation': u'カットイン', 'icon': 'scoreup', - 'template': _(u'Cut-in Bonus Score +{skill_percentage}%'), - 'japanese_template': u'カットインボーナスのスコア{skill_percentage}%上昇', + 'template': _(u'Cut-in Bonus Score +{skill_percentage:.0f}%'), + 'japanese_template': u'カットインボーナスのスコア{skill_percentage:.0f}%上昇', }), ('good_lock', { 'translation': _(u'Good lock'), @@ -386,7 +386,7 @@ def japanese_skill(self): 'english': 'Full combo', 'japanese_translation': u'フルコンボ', - 'template': _(u'+{sub_skill_amount} score when clearing a song with a Full Combo'), + 'template': _('+{sub_skill_amount} score when clearing a song with a Full Combo'), 'japanese_template': u'フルコンボクリア時+{sub_skill_amount}スコア', }), ('stamina', { @@ -395,7 +395,7 @@ def japanese_skill(self): # unsure about this one too 'japanese_translation': u'LIFEでクリア時', - 'template': _(u'+{sub_skill_amount} score when clearing a song with {sub_skill_percentage}% Stamina'), + 'template': _('+{sub_skill_amount} score when clearing a song with {sub_skill_percentage}% Stamina'), 'japanese_template': u'LIFE{sub_skill_percentage}%以上でクリア時+{sub_skill_amount}スコア', }), ]) @@ -412,15 +412,15 @@ def japanese_skill(self): @property def sub_skill(self): if self.i_sub_skill_type is None: return None - return self.sub_skill_template.format({ - k: getattr(self, k, '') + return self.sub_skill_template.format(**{ + k: getattr(self, k) for k in templateVariables(self.sub_skill_template) }) @property def japanese_sub_skill(self): if self.i_sub_skill_type is None: return None - return self.japanese_sub_skill_template.format({ + return self.japanese_sub_skill_template.format(**{ k: getattr(self, k, '') for k in templateVariables(self.japanese_sub_skill_template) }) @@ -439,7 +439,7 @@ def cached_idol_pre(self, d): d['name'] = d['names'].get('en', None) d['t_name'] = d['unicode'] = d['names'].get(get_language(), d['name']) - def to_cache_member(self): + def to_cache_idol(self): if not self.idol: return { 'id': None, diff --git a/majilove/static/img/color/dream.png b/majilove/static/img/color/dream.png new file mode 100644 index 0000000000000000000000000000000000000000..dee087ae2d951b4c346302268ff5862a1cc14034 GIT binary patch literal 3564 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 Z0RX(nHknDjq|E>T002ovPDHLkV1mvy4Br3% literal 0 HcmV?d00001 diff --git a/majilove/static/img/color/star.png b/majilove/static/img/color/star.png new file mode 100644 index 0000000000000000000000000000000000000000..b00e30f0acb1c7f47a66076e01b6c141e2ac56a4 GIT binary patch literal 3603 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 Z0|0Si7gOORP$U2V002ovPDHLkV1f>_*B<}? literal 0 HcmV?d00001 diff --git a/majilove/static/img/mic.png b/majilove/static/img/mic.png index cc79f3586cc20f0fbd89a5d27a8a9a941d61606d..0aa0452400433273f22423839024d8dfdbc4ea0d 100644 GIT binary patch delta 1208 zcmV;p1V{Uq1-%L(iBL{Q4GJ0x0000DNk~Le0000$0000$2m}BC003aQRgocTe;gMu zFr|US)Bpek3rR#lRA}DKm|1L8RT#(r7wA;6ga!)6!~~EkkxeQR6*UH22*gxGsJ@W! z;sVCR7&VeK5H&^!Jn)1HYF&6R3Id`Ko(!R}v0*DqAZRVnf<%jHBPGHN^YdXYH}|%8 zIny~aZ8nCg?47YNIN&#Oa959;KO@sVW`PLFcR~BVOPs z0MhgT&=`&8V><9hH@lcpxWGs*c}=FNi^!_y55nRqD;Zj-!ZNS94Wa+9<}2c&mAebU zS10uV?~@c=j2yf`;vAqoQ2;g%UZ9daoT8pOS~$S?kc>_P0eHNCVMtK?f5AwggIoOH z8e-Alh*8#f&9yGTL`hPUGDhiv32dhamUEBfwCf9_?0c;+13j>lt&+qzt{Kb%JEb`w z&_b4}lEfMVfh-la1-=EomL!I%zOQN4O&tq&!=)f)ixautBZk$Jb#MIXZ@MsPVdy%;M= z+|Rj~9+;OTFvUd!^iUI#RY?l~izJCp-TeKeB#F`NiNGH*n1a5!{BmSYlbf+cl9r@EqF5;5Qy9NZOYX}Ny6by zo@WK~sI@4-bHvASe;%;hk^!ulP44;z)n)Am`pxX%F&D@9XP9Bo(l8z-B{7_bjF)F>`du`I#XiR5 zHKO?hI}`CASwCR;@S{TZv;Ii4yl8MqqJr}=cyG&DOofKXK4=TOAF?knCSnq9i#sdY z#D^8&EUV*7e@=1nmvg7U;^S+4_)gyDIsm^jtt5DfT|RuR#DjdsDn^$I|3VO7;$R&A zxcKvBz)QUD;xjx_2E4>pS77jW+64++a0Q+&9n-fyGKeH(W?RS2l&kf4-C8|3G1N83Y0fm#8eS!Wru~ zeZ~q;@-qjSUu@2Q3)>EBLd<{v0000bbVXQnWMOn=I%9HWVRU5xGB7bXEig4LGB{K+ zGdeUlIy5*dFfuwYFu0lM{r~^~C3HntbYx+4WjbwdWNBu305UK!I4v+WEiyP%GBY|f WI65>q3M()&IxsNF#85($W&$y(pe&{U delta 479 zcmdnXHJw$lGr-TCmrII^fq{Y7)59eQNK1e)2Mdt&s{2|zQ8BAtNBuV&iKuxSs&C)Gb*AQQGOPn*4c?v&<5Q@SUgIC;=<^X@jM z$RNI$X&Rk}J9aluX|}vPWo^#>{=@hF{;9jM|NYCq-|F_A|GekCc9Nj(k{xO*=FE-k z+nG8!@n`&wpDO*!VkS-6H$%H#JR+?z?CGUH8pjue2=VQSNeWw2v|wUxQ;Kh+v7q4Y zU3tqUD+=FJ-R0A*roBu`|5=r?NQLp7W7==ud~9hCExD?g#Mkr5@tVXlxsHVsAI>yL zTz8^4W$q2vhP+Zgh6Toc`r=P+9`E1%Ct1AL{neVwj>5JUrynPa=&Y_e5T7}fxqeUd z2bDNMK_?%BpW@#?W*l5RWttu99I^AqN-UlP{OT$3OUq$z`+Tx@N8R;!M& zIS{-h^tkLCjhgnhRXaGM59pPjxz5miq5qtl?+UIXCm*cr)y=a~@Vof>r2wOl#j8%2 z#tPjfzcOzNd3-%DG%>#=)}d5d*A^5Ps*~5TNQ#(+7@Ap`7+aYdXd4(=85sQgU^{v8 RZ5CM!iT<^%`jdHB4FPpC(Qg0% diff --git a/majilove/static/img/rarity/N.png b/majilove/static/img/rarity/N.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb6edea35dd7b9942556cbd13c69d64ef72cd8f GIT binary patch literal 26431 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 e%ytAb#D4)i9rG_Un@|z}0000 literal 0 HcmV?d00001 diff --git a/majilove/static/img/rarity/R.png b/majilove/static/img/rarity/R.png new file mode 100644 index 0000000000000000000000000000000000000000..197914a14df474d8d555ab45bbd11411cb89ae51 GIT binary patch literal 37028 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%0Dh8pN1haZL8n?zr-DdZ&y)`^)pXnVQY!ABa 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 Date: Fri, 29 Jun 2018 23:04:41 -0400 Subject: [PATCH 18/18] missed a bit when merging --- majilove/magicollections.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/majilove/magicollections.py b/majilove/magicollections.py index d37dd59..b58dba9 100644 --- a/majilove/magicollections.py +++ b/majilove/magicollections.py @@ -1,9 +1,6 @@ from django.utils.translation import ugettext_lazy as _ from magi.magicollections import MagiCollection, ActivityCollection as _ActivityCollection, BadgeCollection as _BadgeCollection, StaffConfigurationCollection as _StaffConfigurationCollection, DonateCollection as _DonateCollection -<<<<<<< HEAD from magi.default_settings import RAW_CONTEXT -======= ->>>>>>> 78b9df3fe3ab30bbdc3c501aaefb899dc8744632 from majilove import models, forms ############################################################