Skip to content

Commit

Permalink
small touch-up + add api support for Gallery items
Browse files Browse the repository at this point in the history
Area api would be hardly viable, as it'd only contain the area name, so omitted

Also made it so that you wouldn't see the same icon twice in a row due to default collectibe settings, and made the icons a little more directly related
  • Loading branch information
LatidoReMe committed Nov 3, 2018
1 parent 36972aa commit ac623ae
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 18 deletions.
60 changes: 60 additions & 0 deletions api/views.py
Expand Up @@ -305,3 +305,63 @@ def get_serializer_class(self):
if self.request.method not in permissions.SAFE_METHODS:
return CostumeSerializerForEditing
return CostumeSerializer

############################################################
# Item

class ItemSerializer(MagiSerializer):
image = ImageField()
i_type = IField(models.Item, 'type', required=False)

class Meta:
model = models.Item
fields = ('id', 'name', 'image', 'i_type', 'm_description')

class ItemViewSet(viewsets.ModelViewSet):
queryset = models.Item.objects.all()
serializer_class = ItemSerializer
permission_classes = (api_permissions.IsStaffOrReadOnly, )

############################################################
# AreaItem

class AreaItemSerializer(MagiSerializer):
image = ImageField()
i_type = IField(models.AreaItem, 'type', required=False)
i_instrument = IField(models.AreaItem, 'instrument', required=False)
i_attribute = IField(models.AreaItem, 'attribute', required=False)
i_stat = IField(models.AreaItem, 'stat', required=False)

class Meta:
model = models.AreaItem
fields = ('id', 'name', 'image', 'area', 'i_type', 'i_instrument', 'member', 'i_attribute', 'i_stat', 'values', 'lifes', 'about')
save_owner_on_creation = True

class AreaItemViewSet(viewsets.ModelViewSet):
queryset = models.AreaItem.objects.all()
serializer_class = AreaItemSerializer
permission_classes = (api_permissions.IsStaffOrReadOnly, )

############################################################
# Asset

class AssetSerializer(MagiSerializer):
image = ImageField(required=False)
english_image = ImageField(required=False)
taiwanese_image = ImageField(required=False)
korean_image = ImageField(required=False)
i_type = IField(models.Asset, 'type', required=True)
i_band = IField(models.Asset, 'band', required=False)
c_tags = CField(models.Asset, 'tags', required=False)

class Meta:
model = models.Asset
save_owner_on_creation=True
many_to_many_fields = ('members',)
fields = ('id', 'i_type', 'image', 'english_image', 'taiwanese_image', 'korean_image',
'name', 'i_band', 'members', 'c_tags', 'event', 'value', 'source', 'source_link', 'song')

class AssetViewSet(viewsets.ModelViewSet):
queryset = models.Asset.objects.all().prefetch_related('members')
serializer_class = AssetSerializer
permission_classes = (api_permissions.IsStaffOrReadOnly, )
2 changes: 1 addition & 1 deletion bang/forms.py
Expand Up @@ -937,7 +937,7 @@ class ItemFilterForm(MagiFiltersForm):

class Meta(MagiFiltersForm.Meta):
model = models.Item
fields = ('search', )
fields = ('search', 'i_type')

############################################################
#CollectibleAreaItem form
Expand Down
30 changes: 18 additions & 12 deletions bang/magicollections.py
Expand Up @@ -2118,14 +2118,19 @@ class ListView(cls.ListView):
class ItemView(cls.ItemView):
def to_fields(self, item, extra_fields=None, *args, **kwargs):
if extra_fields is None: extra_fields = []
if item.item.i_type != None:
extra_fields.append(('type', {
'verbose_name': _('Type'),
'value': item.item.t_type,
'icon': 'category',
},))
extra_fields.append((
'item_details', {
'verbose_name': item.item.t_name,
'value': (False, item.item.t_m_description if item.item.m_description else ''),
'type': 'markdown',
'image': item.item.image_url,
},
))
'icon': 'present',
},))
fields = super(_CollectibleItemCollection.ItemView, self).to_fields(
item, *args, icons=COLLECTIBLEITEM_ICON,
extra_fields=extra_fields, **kwargs)
Expand All @@ -2144,7 +2149,7 @@ class ItemCollection(MagiCollection):
plural_title = _('Items')
queryset = models.Item.objects.all()
translated_fields = ('name', 'm_description', )
icon = 'star'
icon = 'archive'
navbar_link = False
multipart = True
form_class = forms.ItemForm
Expand Down Expand Up @@ -2175,9 +2180,10 @@ class ItemView(MagiCollection.ItemView):

def to_fields(self, item, only_fields=None, *args, **kwargs):
if not only_fields:
only_fields = ['m_description']
fields = super(ItemCollection.ItemView, self).to_fields(item, *args, only_fields=only_fields, **kwargs)
setSubField(fields, 'description', key='image', value=item.image_url)
only_fields = ['i_type', 'm_description']
fields = super(ItemCollection.ItemView, self).to_fields(item, *args,
only_fields=only_fields, icons={'type': 'category', 'description': 'present',}, **kwargs)
## setSubField(fields, 'description', key='image', value=item.image_url)
setSubField(fields, 'description', key='verbose_name', value=unicode(item))
return fields

Expand Down Expand Up @@ -2250,14 +2256,14 @@ def to_fields(self, item, extra_fields=None, *args, **kwargs):
extra_fields.append(('type', {
'verbose_name': _('Area'),
'value': item.areaitem.t_type if item.areaitem.instrument == None else string_concat(item.areaitem.t_type, ' (', item.areaitem.t_instrument, ')'),
'icon': 'town',
'icon': 'pinpoint',
}))
extra_fields.append((
'item_details', {
'verbose_name': item.formatted_name,
'value': item.formatted_description,
'type': 'long_text',
'icon': 'present',
'icon': 'fountain',
},
))
fields = super(_CollectibleAreaItemCollection.ItemView, self).to_fields(
Expand Down Expand Up @@ -2294,7 +2300,7 @@ class AreaItemCollection(MagiCollection):
plural_title = _('Area items')
queryset = models.AreaItem.objects.all()
translated_fields = ('name', 'about')
icon = 'present'
icon = 'town'
navbar_link = False
multipart = True
filter_cuteform = AREA_ITEM_CUTEFORM
Expand Down Expand Up @@ -2326,13 +2332,13 @@ def to_fields(self, item, *args, **kwargs):
fields += [('type', {
'verbose_name': _('Area'),
'value': item.t_type if item.instrument == None else string_concat(item.t_type, ' (', item.t_instrument, ')'),
'icon': 'town',
'icon': 'pinpoint',
})]
fields += [('item_details', {
'verbose_name': item.formatted_name,
'value': item.formatted_description,
'type': 'long_text',
'icon': 'present',
'icon': 'fountain',
})]
if item.about != None:
fields += [('about', {
Expand Down
15 changes: 10 additions & 5 deletions bang/models.py
Expand Up @@ -1472,7 +1472,6 @@ def __unicode__(self):

class Item(MagiModel):
collection_name = 'item'

owner = models.ForeignKey(User, related_name='added_items')

_original_image = models.ImageField(null=True, upload_to=uploadTiny('items'))
Expand All @@ -1482,6 +1481,14 @@ class Item(MagiModel):
NAMES_CHOICES = ALL_ALT_LANGUAGES
d_names = models.TextField(_('Title'), null=True)

TYPE_CHOICES=[
('main', _('Main')),
('boost', _('Live Boost')),
('ticket', _('Studio Ticket')),
('other', _('Other')),
]
i_type = models.PositiveIntegerField(_('Type'), choices=i_choices(TYPE_CHOICES), null=True)

m_description = models.TextField(_('Description'), null=True)
M_DESCRIPTIONS_CHOICES = ALL_ALT_LANGUAGES
d_m_descriptions = models.TextField(_('Description'), null=True)
Expand All @@ -1497,9 +1504,8 @@ class CollectibleItem(AccountAsOwnerModel):

account = models.ForeignKey(Account, verbose_name=_('Account'), related_name='items')
item = models.ForeignKey(Item, verbose_name=_('Item'), related_name='collectedby')

quantity = models.PositiveIntegerField(_('Quantity'), default=1)

image = property(lambda _s: _s.item.image)
image_url = property(lambda _s: _s.item.image_url)
http_image_url = property(lambda _s: _s.item.http_image_url)
Expand Down Expand Up @@ -1533,7 +1539,6 @@ def __unicode__(self):

class AreaItem(MagiModel):
collection_name = 'areaitem'

owner = models.ForeignKey(User, related_name='added_area_items')

_original_image = models.ImageField(null=True, upload_to=uploadTiny('areas/items'))
Expand All @@ -1543,7 +1548,7 @@ class AreaItem(MagiModel):
NAMES_CHOICES = ALL_ALT_LANGUAGES
d_names = models.TextField(_('Title'), null=True)

area = models.ForeignKey(Area, verbose_name=_('Area'), null=True)
area = models.ForeignKey(Area, verbose_name=_('Area'), null=True, on_delete=models.SET_NULL)

TYPE_CHOICES=[
('studio', _('Studio')),
Expand Down
3 changes: 3 additions & 0 deletions bang_project/urls.py
Expand Up @@ -15,6 +15,9 @@
router.register(r'cardids', api_views.CardIDViewSet)
router.register(r'events', api_views.EventViewSet)
router.register(r'costumes', api_views.CostumeViewSet)
router.register(r'areaitems', api_views.AreaItemViewSet)
router.register(r'assets', api_views.AssetViewSet)
router.register(r'items', api_views.ItemViewSet)

urlpatterns = patterns('',
url(r'^', include('magi.urls')),
Expand Down

0 comments on commit ac623ae

Please sign in to comment.