Basic item settings

This commit is contained in:
Raphael Michel
2014-09-27 12:36:56 +02:00
parent 49efb881ce
commit 675688d5df
9 changed files with 271 additions and 30 deletions
@@ -17,4 +17,5 @@
</li>
<li {% if url_name == "event.index" %}class="active"{% endif %}><a href="{% url 'control:event.index' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Dashboard" %}</a></li>
<li {% if url_name == "event.settings" %}class="active"{% endif %}><a href="{% url 'control:event.settings' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Settings" %}</a></li>
<li {% if "event.item" in url_name %}class="active"{% endif %}><a href="{% url 'control:event.items' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Items" %}</a></li>
{% endblock %}
@@ -0,0 +1,11 @@
{% extends "tixlcontrol/event/base.html" %}
{% load i18n %}
{% block title %}{{ item.name }} :: {% trans "Item" %}{% endblock %}
{% block content %}
<h1>{% trans "Modify item:" %} {{ item.name }}</h1>
<ul class="nav nav-pills">
<li {% if "event.item" == url_name %}class="active"{% endif %}><a href="{% url 'control:event.item' organizer=request.event.organizer.slug event=request.event.slug item=item.pk %}">{% trans "General information" %}</a></li>
</ul>
{% block inside %}
{% endblock %}
{% endblock %}
@@ -0,0 +1,39 @@
{% extends "tixlcontrol/item/base.html" %}
{% load i18n %}
{% load bootstrap3 %}
{% block inside %}
<h2>{% trans "General information" %}</h2>
{% if "success" in request.GET %}
<div class="alert alert-success">
{% trans "Your changes have been saved." %}
</div>
{% endif %}
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
<fieldset>
<legend>{% trans "General information" %}</legend>
{% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.active layout="horizontal" %}
{% bootstrap_field form.category layout="horizontal" %}
{% bootstrap_field form.short_description layout="horizontal" %}
{% bootstrap_field form.long_description layout="horizontal" %}
</fieldset>
<fieldset>
<legend>{% trans "Price settings" %}</legend>
{% bootstrap_field form.default_price layout="horizontal" %}
{% bootstrap_field form.tax_rate layout="horizontal" %}
</fieldset>
<fieldset>
<legend>{% trans "Variations" %}</legend>
{% bootstrap_field form.properties layout="horizontal" %}
</fieldset>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">
{% trans "Save" %}
</button>
</div>
</div>
</form>
{% endblock %}
@@ -0,0 +1,12 @@
{% extends "tixlcontrol/event/base.html" %}
{% load i18n %}
{% block title %}{% trans "Items" %}{% endblock %}
{% block content %}
<ul class="nav nav-pills">
<li {% if "event.items" == url_name %}class="active"{% endif %}><a href="{% url 'control:event.items' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Items" %}</a></li>
<li {% if "event.items.categories" in url_name %}class="active"{% endif %}><a href="{% url 'control:event.items.categories' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Categories" %}</a></li>
<li {% if "event.items.properties" in url_name %}class="active"{% endif %}><a href="{% url 'control:event.items.properties' organizer=request.event.organizer.slug event=request.event.slug %}">{% trans "Properties" %}</a></li>
</ul>
{% block inside %}
{% endblock %}
{% endblock %}
@@ -0,0 +1,20 @@
{% extends "tixlcontrol/items/base.html" %}
{% load i18n %}
{% block title %}{% trans "Items" %}{% endblock %}
{% block inside %}
<h1>{% trans "Items" %}</h1>
<table class="table table-condensed table-hover">
<thead>
<tr>
<th>{% trans "Item name" %}</th>
</tr>
</thead>
<tbody>
{% for i in items %}
<tr>
<td><strong><a href="{% url "control:event.item" organizer=request.event.organizer.slug event=request.event.slug item=i.pk %}">{{ i.name }}</a></strong></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
+7 -3
View File
@@ -1,5 +1,5 @@
from django.conf.urls import patterns, url, include
from tixlcontrol.views import main, event
from tixlcontrol.views import main, event, item
urlpatterns = patterns('',)
urlpatterns += patterns(
@@ -16,9 +16,13 @@ urlpatterns += patterns(
'tixlcontrol.views.event',
url(r'^event/(?P<organizer>[^/]+)/(?P<event>[^/]+)/', include(
patterns(
'tixlcontrol.views.event',
url(r'^$', 'index', name='event.index'),
'tixlcontrol.views',
url(r'^$', 'event.index', name='event.index'),
url(r'^settings$', event.EventUpdate.as_view(), name='event.settings'),
url(r'^items$', item.ItemList.as_view(), name='event.items'),
url(r'^items/(?P<item>\d+)/$', item.ItemUpdateGeneral.as_view(), name='event.item'),
url(r'^categories$', item.CategoryList.as_view(), name='event.items.categories'),
url(r'^properties$', item.PropertyList.as_view(), name='event.items.properties'),
)
))
)
+78
View File
@@ -0,0 +1,78 @@
from django.views.generic import ListView
from django.views.generic.edit import UpdateView
from django.core.urlresolvers import resolve, reverse
from django import forms
from tixlbase.models import Item, ItemCategory, Property
from tixlcontrol.permissions import EventPermissionRequiredMixin
class ItemList(ListView):
model = Item
context_object_name = 'items'
template_name = 'tixlcontrol/items/index.html'
def get_queryset(self):
return Item.objects.filter(
event=self.request.event
)
class CategoryList(ListView):
model = ItemCategory
context_object_name = 'items'
template_name = 'tixlcontrol/items/index.html'
def get_queryset(self):
return ItemCategory.objects.filter(
event=self.request.event
)
class PropertyList(ListView):
model = Property
context_object_name = 'items'
template_name = 'tixlcontrol/items/index.html'
def get_queryset(self):
return Property.objects.filter(
event=self.request.event
)
class ItemUpdateFormGeneral(forms.ModelForm):
class Meta:
model = Item
localized_fields = '__all__'
fields = [
'category',
'name',
'active',
'short_description',
'long_description',
'default_price',
'tax_rate',
'properties',
]
class ItemUpdateGeneral(EventPermissionRequiredMixin, UpdateView):
model = Item
form_class = ItemUpdateFormGeneral
template_name = 'tixlcontrol/item/index.html'
permission = 'can_change_items'
context_object_name = 'item'
def get_object(self, queryset=None):
url = resolve(self.request.path_info)
return self.request.event.items.get(
id=url.kwargs['item']
)
def get_success_url(self):
return reverse('control:event.item', kwargs={
'organizer': self.request.event.organizer.slug,
'event': self.request.event.slug,
'item': self.get_object().pk,
}) + '?success=true'