mirror of
https://github.com/ae-utbm/sith.git
synced 2026-10-13 06:06:06 +00:00
Make sellings for clubs
This commit is contained in:
1 parent
90e47c9d7d
commit
5b5006892d
13 files changed
+289
-198
No files matched your search
@@ -1,65 +0,0 @@
|
|||||||
{% extends "core/base.jinja" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="tool-bar">
|
|
||||||
<div>{{ club.name }}</div>
|
|
||||||
<div class="tools">
|
|
||||||
<a href="{{ url('club:club_view', club_id=club.id) }}"
|
|
||||||
{%- if tab == "infos" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Infos{% endtrans %}</a>
|
|
||||||
|
|
||||||
{% if can_view(club, user) %}
|
|
||||||
<a href="{{ url('club:club_members', club_id=club.pk) }}"
|
|
||||||
{%- if tab == "members" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Members{% endtrans %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if can_view(club, user) %}
|
|
||||||
<a href="{{ url('club:club_old_members', club_id=club.pk) }}"
|
|
||||||
{%- if tab == "elderlies" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Old members{% endtrans %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if can_view(club, user) %}
|
|
||||||
<a href="{{ url('club:tools', club_id=club.id) }}"
|
|
||||||
{%- if tab == "tools" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Tools{% endtrans %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if can_edit(club, request.user) %}
|
|
||||||
<a href="{{ url('club:club_edit', club_id=club.id) }}"
|
|
||||||
{%- if tab == "edit" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Edit{% endtrans %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if can_edit_prop(club, request.user) %}
|
|
||||||
<a href="{{ url('club:club_prop', club_id=club.id) }}"
|
|
||||||
{%- if tab == "props" -%}
|
|
||||||
class="selected_tab"
|
|
||||||
{%- endif -%}
|
|
||||||
>{% trans %}Props{% endtrans %}</a>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
{% block club %}
|
|
||||||
{% endblock %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
<td>{% trans %}To{% endtrans %}</td>
|
<td>{% trans %}To{% endtrans %}</td>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for m in club.members.exclude(end_date=None).order_by('-role', '-end_date').all() %}
|
{% for m in club.members.exclude(end_date=None).order_by('-role', 'description', '-end_date').all() %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ user_profile_link(m.user) }}</td>
|
<td>{{ user_profile_link(m.user) }}</td>
|
||||||
<td>{{ settings.SITH_CLUB_ROLES[m.role] }}</td>
|
<td>{{ settings.SITH_CLUB_ROLES[m.role] }}</td>
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{% extends "core/base.jinja" %}
|
||||||
|
{% from 'core/macros.jinja' import user_profile_link %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h3>{% trans %}Sellings{% endtrans %}</h3>
|
||||||
|
<form action="" method="get">
|
||||||
|
{% csrf_token %}
|
||||||
|
{{ form }}
|
||||||
|
<p><input type="submit" value="{% trans %}Show{% endtrans %}" /></p>
|
||||||
|
</form>
|
||||||
|
<p>
|
||||||
|
{% trans %}Quantity: {% endtrans %}{{ result.count() }} {% trans %}units{% endtrans %}<br/>
|
||||||
|
{% trans %}Total: {% endtrans %}{{ total }} €
|
||||||
|
</p>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td>{% trans %}Date{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Counter{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Barman{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Customer{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Label{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Quantity{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Total{% endtrans %}</td>
|
||||||
|
<td>{% trans %}Payment method{% endtrans %}</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for s in result %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ s.date|localtime|date(DATETIME_FORMAT) }} {{ s.date|localtime|time(DATETIME_FORMAT) }}</td>
|
||||||
|
<td>{{ s.counter }}</td>
|
||||||
|
<td><a href="{{ s.seller.get_absolute_url() }}">{{ s.seller.get_display_name() }}</a></td>
|
||||||
|
<td><a href="{{ s.customer.user.get_absolute_url() }}">{{ s.customer.user.get_display_name() }}</a></td>
|
||||||
|
<td>{{ s.label }}</td>
|
||||||
|
<td>{{ s.quantity }}</td>
|
||||||
|
<td>{{ s.quantity * s.unit_price }} €</td>
|
||||||
|
<td>{{ s.get_payment_method_display() }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -9,6 +9,7 @@ urlpatterns = [
|
|||||||
url(r'^(?P<club_id>[0-9]+)/edit$', ClubEditView.as_view(), name='club_edit'),
|
url(r'^(?P<club_id>[0-9]+)/edit$', ClubEditView.as_view(), name='club_edit'),
|
||||||
url(r'^(?P<club_id>[0-9]+)/members$', ClubMembersView.as_view(), name='club_members'),
|
url(r'^(?P<club_id>[0-9]+)/members$', ClubMembersView.as_view(), name='club_members'),
|
||||||
url(r'^(?P<club_id>[0-9]+)/elderlies$', ClubOldMembersView.as_view(), name='club_old_members'),
|
url(r'^(?P<club_id>[0-9]+)/elderlies$', ClubOldMembersView.as_view(), name='club_old_members'),
|
||||||
|
url(r'^(?P<club_id>[0-9]+)/sellings$', ClubSellingView.as_view(), name='club_sellings'),
|
||||||
url(r'^(?P<club_id>[0-9]+)/prop$', ClubEditPropView.as_view(), name='club_prop'),
|
url(r'^(?P<club_id>[0-9]+)/prop$', ClubEditPropView.as_view(), name='club_prop'),
|
||||||
url(r'^(?P<club_id>[0-9]+)/tools$', ClubToolsView.as_view(), name='tools'),
|
url(r'^(?P<club_id>[0-9]+)/tools$', ClubToolsView.as_view(), name='tools'),
|
||||||
url(r'^membership/(?P<membership_id>[0-9]+)/set_old$', MembershipSetOldView.as_view(), name='membership_set_old'),
|
url(r'^membership/(?P<membership_id>[0-9]+)/set_old$', MembershipSetOldView.as_view(), name='membership_set_old'),
|
||||||
|
|||||||
@@ -8,10 +8,15 @@ from django.http import HttpResponseRedirect
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, TabedViewMixin
|
from core.views import CanViewMixin, CanEditMixin, CanEditPropMixin, TabedViewMixin
|
||||||
|
from core.views.forms import SelectDate, SelectSingle, SelectDateTime
|
||||||
from club.models import Club, Membership
|
from club.models import Club, Membership
|
||||||
from sith.settings import SITH_MAXIMUM_FREE_ROLE, SITH_MAIN_BOARD_GROUP
|
from sith.settings import SITH_MAXIMUM_FREE_ROLE, SITH_MAIN_BOARD_GROUP
|
||||||
|
from counter.models import Product, Selling, Counter
|
||||||
|
|
||||||
class ClubTabsMixin(TabedViewMixin):
|
class ClubTabsMixin(TabedViewMixin):
|
||||||
def get_tabs_title(self):
|
def get_tabs_title(self):
|
||||||
@@ -46,6 +51,11 @@ class ClubTabsMixin(TabedViewMixin):
|
|||||||
'slug': 'edit',
|
'slug': 'edit',
|
||||||
'name': _("Edit"),
|
'name': _("Edit"),
|
||||||
})
|
})
|
||||||
|
tab_list.append({
|
||||||
|
'url': reverse('club:club_sellings', kwargs={'club_id': self.object.id}),
|
||||||
|
'slug': 'sellings',
|
||||||
|
'name': _("Sellings"),
|
||||||
|
})
|
||||||
if self.request.user.is_owner(self.object):
|
if self.request.user.is_owner(self.object):
|
||||||
tab_list.append({
|
tab_list.append({
|
||||||
'url': reverse('club:club_prop', kwargs={'club_id': self.object.id}),
|
'url': reverse('club:club_prop', kwargs={'club_id': self.object.id}),
|
||||||
@@ -143,6 +153,47 @@ class ClubOldMembersView(ClubTabsMixin, CanViewMixin, DetailView):
|
|||||||
template_name = 'club/club_old_members.jinja'
|
template_name = 'club/club_old_members.jinja'
|
||||||
current_tab = "elderlies"
|
current_tab = "elderlies"
|
||||||
|
|
||||||
|
class SellingsFormBase(forms.Form):
|
||||||
|
begin_date = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("Begin date"), required=False, widget=SelectDateTime)
|
||||||
|
end_date = forms.DateTimeField(['%Y-%m-%d %H:%M:%S'], label=_("End date"), required=False, widget=SelectDateTime)
|
||||||
|
counter = forms.ModelChoiceField(Counter.objects.order_by('name').all(), label=_("Counter"), required=False)
|
||||||
|
|
||||||
|
class ClubSellingView(ClubTabsMixin, CanEditMixin, DetailView):
|
||||||
|
"""
|
||||||
|
Sellings of a club
|
||||||
|
"""
|
||||||
|
model = Club
|
||||||
|
pk_url_kwarg = "club_id"
|
||||||
|
template_name = 'club/club_sellings.jinja'
|
||||||
|
current_tab = "sellings"
|
||||||
|
|
||||||
|
def get_form_class(self):
|
||||||
|
kwargs = {
|
||||||
|
'product': forms.ModelChoiceField(self.object.products.order_by('name').all(), label=_("Product"), required=False)
|
||||||
|
}
|
||||||
|
return type('SellingsForm', (SellingsFormBase,), kwargs)
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
kwargs = super(ClubSellingView, self).get_context_data(**kwargs)
|
||||||
|
form = self.get_form_class()(self.request.GET, initial={'begin_date': timezone.now()-timedelta(days=7)})
|
||||||
|
# form = self.get_form_class()(initial={'begin_date': timezone.now()-timedelta(days=7)})
|
||||||
|
qs = Selling.objects.filter(club=self.object)
|
||||||
|
if form.is_valid():
|
||||||
|
if form.cleaned_data['begin_date']:
|
||||||
|
qs = qs.filter(date__gte=form.cleaned_data['begin_date'])
|
||||||
|
if form.cleaned_data['end_date']:
|
||||||
|
qs = qs.filter(date__lte=form.cleaned_data['end_date'])
|
||||||
|
if form.cleaned_data['counter']:
|
||||||
|
qs = qs.filter(counter=form.cleaned_data['counter'])
|
||||||
|
if form.cleaned_data['product']:
|
||||||
|
qs = qs.filter(product__id=form.cleaned_data['product'].id)
|
||||||
|
kwargs['result'] = qs.all().order_by('-id')
|
||||||
|
kwargs['total'] = sum([s.quantity * s.unit_price for s in qs.all()])
|
||||||
|
else:
|
||||||
|
kwargs['result'] = qs[:0]
|
||||||
|
kwargs['form'] = form
|
||||||
|
return kwargs
|
||||||
|
|
||||||
class ClubEditView(ClubTabsMixin, CanEditMixin, UpdateView):
|
class ClubEditView(ClubTabsMixin, CanEditMixin, UpdateView):
|
||||||
"""
|
"""
|
||||||
Edit a Club's main informations (for the club's members)
|
Edit a Club's main informations (for the club's members)
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
.xdsoft_datetimepicker{box-shadow:0 5px 15px -5px rgba(0,0,0,0.506);background:#fff;border-bottom:1px solid #bbb;border-left:1px solid #ccc;border-right:1px solid #ccc;border-top:1px solid #ccc;color:#333;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:8px;padding-left:0;padding-top:2px;position:absolute;z-index:9999;-moz-box-sizing:border-box;box-sizing:border-box;display:none}.xdsoft_datetimepicker.xdsoft_rtl{padding:8px 0 8px 8px}.xdsoft_datetimepicker iframe{position:absolute;left:0;top:0;width:75px;height:210px;background:transparent;border:0}.xdsoft_datetimepicker button{border:none !important}.xdsoft_noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.xdsoft_noselect::selection{background:transparent}.xdsoft_noselect::-moz-selection{background:transparent}.xdsoft_datetimepicker.xdsoft_inline{display:inline-block;position:static;box-shadow:none}.xdsoft_datetimepicker *{-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin:0}.xdsoft_datetimepicker .xdsoft_datepicker,.xdsoft_datetimepicker .xdsoft_timepicker{display:none}.xdsoft_datetimepicker .xdsoft_datepicker.active,.xdsoft_datetimepicker .xdsoft_timepicker.active{display:block}.xdsoft_datetimepicker .xdsoft_datepicker{width:224px;float:left;margin-left:8px}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_datepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker{width:256px}.xdsoft_datetimepicker .xdsoft_timepicker{width:58px;float:left;text-align:center;margin-left:8px;margin-top:0}.xdsoft_datetimepicker.xdsoft_rtl .xdsoft_timepicker{float:right;margin-right:8px;margin-left:0}.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{margin-top:8px;margin-bottom:3px}.xdsoft_datetimepicker .xdsoft_monthpicker{position:relative;text-align:center}.xdsoft_datetimepicker .xdsoft_label i,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC)}.xdsoft_datetimepicker .xdsoft_label i{opacity:.5;background-position:-92px -19px;display:inline-block;width:9px;height:20px;vertical-align:middle}.xdsoft_datetimepicker .xdsoft_prev{float:left;background-position:-20px 0}.xdsoft_datetimepicker .xdsoft_today_button{float:left;background-position:-70px 0;margin-left:5px}.xdsoft_datetimepicker .xdsoft_next{float:right;background-position:0 0}.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_today_button{background-color:transparent;background-repeat:no-repeat;border:0 none;cursor:pointer;display:block;height:30px;opacity:.5;-ms-filter:"alpha(opacity=50)";outline:medium none;overflow:hidden;padding:0;position:relative;text-indent:100%;white-space:nowrap;width:20px;min-width:0}.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{float:none;background-position:-40px -15px;height:15px;width:Line truncated
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
var DateFormatter;!function(){"use strict";var e,t,a,r,n,o;n=864e5,o=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.length<a?t(n+o,a):o},a=function(e){var t,r;for(e=e||{},t=1;t<arguments.length;t++)if(r=arguments[t])for(var n in r)r.hasOwnProperty(n)&&("object"==typeof r[n]?a(e[n],r[n]):e[n]=r[n]);return e},r={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},DateFormatter=function(e){var t=this,n=a(r,e);t.dateSettings=n.dateSettings,t.separators=n.separators,t.validParts=n.validParts,t.intParts=n.intParts,t.tzParts=n.tzParts,t.tzClip=n.tzClip},DateFormatter.prototype={constructor:DateFormatter,parseDate:function(t,a){var r,n,o,i,s,d,u,l,f,c,m=this,h=!1,g=!1,p=m.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return void 0;if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("U"===a)return o=parseInt(t),o?new Date(1e3*o):t;if("string"!=typeof t)return"";if(r=a.match(m.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(n=t.replace(m.separators,"\x00").split("\x00"),o=0;o<n.length;o++)switch(i=n[o],s=parseInt(i),r[o]){case"y":case"Y":f=i.length,2===f?y.year=parseInt((70>s?"20":"19")+i):4===f&&(y.year=s),h=!0;break;case"m":case"n":case"M":case"F":isNaN(i)?(d=p.monthsShort.indexOf(i),d>-1&&(y.month=d+1),d=p.months.indexOf(i),d>-1&&(y.month=d+1)):s>=1&&12>=s&&(y.month=s),h=!0;break;case"d":case"j":s>=1&&31>=s&&(y.day=s),h=!0;break;case"g":case"h":u=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[u],u>-1?(l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?y.hour=s+l:s>=0&&23>=s&&(y.hour=s)):s>=0&&23>=s&&(y.hour=s),g=!0;break;case"G":case"H":s>=0&&23>=s&&(y.hour=s),g=!0;break;case"i":s>=0&&59>=s&&(y.min=s),g=!0;break;case"s":s>=0&&59>=s&&(y.sec=s),g=!0}if(h===!0&&y.year&&y.month&&y.day)y.date=new Date(y.year,y.month-1,y.day,y.hour,y.min,y.sec,0);else{if(g!==!0)return!1;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i=this,s=e.replace(i.separators,"\x00").split("\x00"),d=/^[djmn]/g,u=t.match(i.validParts),l=new Date,f=0;if(!d.test(u[0]))return e;for(r=0;r<s.length;r++){switch(f=2,n=s[r],o=parseInt(n.substr(0,2)),r){case 0:"m"===u[0]||"n"===u[0]?l.setMonth(o-1):l.setDate(o);break;case 1:"m"===u[0]||"n"===u[0]?l.setDate(o):l.setMonth(o-1);break;case 2:a=l.getFullYear(),n.length<4?(l.setFullYear(parseInt(a.toString().substr(0,4-n.length)+n)),f=n.length):(l.setFullYear=parseInt(n.substr(0,4)),f=4);break;case 3:l.setHours(o);break;case 4:l.setMinutes(o);break;case 5:l.setSeconds(o)}n.substr(f).length>0&&s.splice(r+1,0,n.substr(f))}return l},parseFormat:function(e,a){var r,i=this,s=i.dateSettings,d=/\\?(.?)/gi,u=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/n)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/n/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4===0&&e%100!==0||e%400===0?1:0},o:function(){var e=r.n(),t=r.W(),a=r.Y();return a+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*o,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+o)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){var e=/\((.*)Line truncated
|
||||||
|
e.each(n.highlightedPeriods,function(a,n){var i,s,d,u,l,f,c;if(e.isArray(n))i=n[0],s=n[1],d=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc,f&&f.length&&u.desc&&u.desc.length&&(o[l].desc=f+"\n"+u.desc)):o[l]=u}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(q=!0,J.addClass("xdsoft_inline"),a.after(J).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?I.addClass("active"):I.removeClass("active"),C.timepicker?E.addClass("active"):E.removeClass("active"),C.value&&(j.setCurrentTime(C.value),a&&a.val&&a.val(j.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||R.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(j.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(j.strToDateTime(C.maxDate),C.formatDate)),V.toggle(C.showApplyButton),N.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),N.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),N.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),J.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&n>=0&&60>n?[a,n].map(function(e){return e>9?e:"0"+e}).join(":"):r.formatDate(j.now(),C.format))}J.data("xdsoft_datetime").setCurrentTime(e(this).val())}J.trigger("changedatetime.xdsoft"),J.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,J.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},J.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),U.hide(),G.hide(),!1}),R.append(B),R.xdsoftScroller(),J.on("afterOpen.xdsoft",function(){R.xdsoftScroller()}),J.append(I).append(E),C.withoutCopyright!==!0&&J.append(z),I.append(N).append(L).append(V),e(C.parentID).append(J),d=function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),C.yearOffset&&n.setFullYear(n.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes())),n},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,J.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),r},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(J,t);if("undefined"!=typeof a)return a}var r=new Date(t.getFullYear(),0,1);return 4!=r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidLine truncated
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
<title>{% block title %}{% trans %}Welcome!{% endtrans %}{% endblock %}</title>
|
<title>{% block title %}{% trans %}Welcome!{% endtrans %}{% endblock %}</title>
|
||||||
<link rel="stylesheet" href="{{ static('core/base.css') }}">
|
<link rel="stylesheet" href="{{ static('core/base.css') }}">
|
||||||
<link rel="stylesheet" href="{{ static('core/multiple-select.css') }}">
|
<link rel="stylesheet" href="{{ static('core/multiple-select.css') }}">
|
||||||
|
<link rel="stylesheet" href="{{ static('core/jquery.datetimepicker.min.css') }}">
|
||||||
<link rel="stylesheet" href="{{ static('core/js/ui/jquery-ui.min.css') }}">
|
<link rel="stylesheet" href="{{ static('core/js/ui/jquery-ui.min.css') }}">
|
||||||
<link rel="stylesheet" href="{{ static('ajax_select/css/ajax_select.css') }}">
|
<link rel="stylesheet" href="{{ static('ajax_select/css/ajax_select.css') }}">
|
||||||
<link rel="stylesheet" href="{{ static('core/style.css') }}">
|
<link rel="stylesheet" href="{{ static('core/style.css') }}">
|
||||||
@@ -113,8 +114,10 @@
|
|||||||
<script src="{{ static('core/js/jquery-3.1.0.min.js') }}"></script>
|
<script src="{{ static('core/js/jquery-3.1.0.min.js') }}"></script>
|
||||||
<script src="{{ static('core/js/ui/jquery-ui.min.js') }}"></script>
|
<script src="{{ static('core/js/ui/jquery-ui.min.js') }}"></script>
|
||||||
<script src="{{ static('core/js/ui/i18n/datepicker-fr.js') }}"></script>
|
<script src="{{ static('core/js/ui/i18n/datepicker-fr.js') }}"></script>
|
||||||
|
<script src="{{ static('core/js/jquery.datetimepicker.full.min.js') }}"></script>
|
||||||
<script src="{{ static('core/js/multiple-select.js') }}"></script>
|
<script src="{{ static('core/js/multiple-select.js') }}"></script>
|
||||||
<script src="{{ static('ajax_select/js/ajax_select.js') }}"></script>
|
<script src="{{ static('ajax_select/js/ajax_select.js') }}"></script>
|
||||||
|
<script src="{{ url('javascript-catalog') }}"></script>
|
||||||
<script src="{{ static('core/js/script.js') }}"></script>
|
<script src="{{ static('core/js/script.js') }}"></script>
|
||||||
<script>
|
<script>
|
||||||
$('.select_single').multipleSelect({
|
$('.select_single').multipleSelect({
|
||||||
@@ -146,6 +149,10 @@ $(document).keydown(function (e) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
jQuery.datetimepicker.setLocale('{{ request.LANGUAGE_CODE|lower }}');
|
||||||
|
$('.select_datetime').datetimepicker({
|
||||||
|
format: 'Y-m-d H:i:s',
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -13,5 +13,17 @@ def markdown(text):
|
|||||||
md = mistune.Markdown()
|
md = mistune.Markdown()
|
||||||
return mark_safe(md(escape(text)))
|
return mark_safe(md(escape(text)))
|
||||||
|
|
||||||
|
@register.filter()
|
||||||
|
@stringfilter
|
||||||
|
def datetime_format_python_to_PHP(python_format_string):
|
||||||
|
"""
|
||||||
|
Given a python datetime format string, attempts to convert it to the nearest PHP datetime format string possible.
|
||||||
|
"""
|
||||||
|
python2PHP = {"%a": "D", "%a": "D", "%A": "l", "%b": "M", "%B": "F", "%c": "", "%d": "d", "%H": "H", "%I": "h", "%j": "z", "%m": "m", "%M": "i", "%p": "A", "%S": "s", "%U": "", "%w": "w", "%W": "W", "%x": "", "%X": "", "%y": "y", "%Y": "Y", "%Z": "e" }
|
||||||
|
|
||||||
|
php_format_string = python_format_string
|
||||||
|
for py, php in python2PHP.items():
|
||||||
|
php_format_string = php_format_string.replace(py, php)
|
||||||
|
return php_format_string
|
||||||
|
|
||||||
|
|
||||||
+9
-1
@@ -3,7 +3,7 @@ from django import forms
|
|||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
from django.contrib.auth import logout, login, authenticate
|
from django.contrib.auth import logout, login, authenticate
|
||||||
from django.forms import CheckboxSelectMultiple, Select, DateInput, TextInput
|
from django.forms import CheckboxSelectMultiple, Select, DateInput, TextInput, DateTimeInput
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
from phonenumber_field.widgets import PhoneNumberInternationalFallbackWidget
|
from phonenumber_field.widgets import PhoneNumberInternationalFallbackWidget
|
||||||
|
|
||||||
@@ -31,6 +31,14 @@ class SelectMultiple(Select):
|
|||||||
attrs = {'class': "select_multiple"}
|
attrs = {'class': "select_multiple"}
|
||||||
return super(SelectMultiple, self).render(name, value, attrs)
|
return super(SelectMultiple, self).render(name, value, attrs)
|
||||||
|
|
||||||
|
class SelectDateTime(DateTimeInput):
|
||||||
|
def render(self, name, value, attrs=None):
|
||||||
|
if attrs:
|
||||||
|
attrs['class'] = "select_datetime"
|
||||||
|
else:
|
||||||
|
attrs = {'class': "select_datetime"}
|
||||||
|
return super(SelectDateTime, self).render(name, value, attrs)
|
||||||
|
|
||||||
class SelectDate(DateInput):
|
class SelectDate(DateInput):
|
||||||
def render(self, name, value, attrs=None):
|
def render(self, name, value, attrs=None):
|
||||||
if attrs:
|
if attrs:
|
||||||
|
|||||||
Binary file not shown.
+153
-131
@@ -6,7 +6,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2016-09-09 01:48+0200\n"
|
"POT-Creation-Date: 2016-09-09 16:22+0200\n"
|
||||||
"PO-Revision-Date: 2016-07-18\n"
|
"PO-Revision-Date: 2016-07-18\n"
|
||||||
"Last-Translator: Skia <skia@libskia.so>\n"
|
"Last-Translator: Skia <skia@libskia.so>\n"
|
||||||
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
"Language-Team: AE info <ae.info@utbm.fr>\n"
|
||||||
@@ -180,7 +180,7 @@ msgstr "Compte"
|
|||||||
msgid "Company"
|
msgid "Company"
|
||||||
msgstr "Entreprise"
|
msgstr "Entreprise"
|
||||||
|
|
||||||
#: accounting/models.py:190 sith/settings.py:286 sith/settings_sample.py:275
|
#: accounting/models.py:190 sith/settings.py:289 sith/settings_sample.py:275
|
||||||
msgid "Other"
|
msgid "Other"
|
||||||
msgstr "Autre"
|
msgstr "Autre"
|
||||||
|
|
||||||
@@ -304,8 +304,7 @@ msgid "Delete"
|
|||||||
msgstr "Supprimer"
|
msgstr "Supprimer"
|
||||||
|
|
||||||
#: accounting/templates/accounting/bank_account_details.jinja:17
|
#: accounting/templates/accounting/bank_account_details.jinja:17
|
||||||
#: club/templates/club/club_base.jinja:11 club/views.py:25
|
#: club/views.py:30 core/views/user.py:126
|
||||||
#: core/views/user.py:126
|
|
||||||
msgid "Infos"
|
msgid "Infos"
|
||||||
msgstr "Infos"
|
msgstr "Infos"
|
||||||
|
|
||||||
@@ -324,8 +323,7 @@ msgstr "Nouveau compte club"
|
|||||||
#: accounting/templates/accounting/bank_account_details.jinja:26
|
#: accounting/templates/accounting/bank_account_details.jinja:26
|
||||||
#: accounting/templates/accounting/bank_account_list.jinja:21
|
#: accounting/templates/accounting/bank_account_list.jinja:21
|
||||||
#: accounting/templates/accounting/club_account_details.jinja:53
|
#: accounting/templates/accounting/club_account_details.jinja:53
|
||||||
#: accounting/templates/accounting/journal_details.jinja:66
|
#: accounting/templates/accounting/journal_details.jinja:66 club/views.py:52
|
||||||
#: club/templates/club/club_base.jinja:42 club/views.py:47
|
|
||||||
#: core/templates/core/file.jinja:38 core/templates/core/page.jinja:31
|
#: core/templates/core/file.jinja:38 core/templates/core/page.jinja:31
|
||||||
#: core/templates/core/user_tools.jinja:33 core/views/user.py:143
|
#: core/templates/core/user_tools.jinja:33 core/views/user.py:143
|
||||||
#: counter/templates/counter/counter_list.jinja:17
|
#: counter/templates/counter/counter_list.jinja:17
|
||||||
@@ -445,6 +443,7 @@ msgid "Nb"
|
|||||||
msgstr "No"
|
msgstr "No"
|
||||||
|
|
||||||
#: accounting/templates/accounting/journal_details.jinja:27
|
#: accounting/templates/accounting/journal_details.jinja:27
|
||||||
|
#: club/templates/club/club_sellings.jinja:18
|
||||||
#: core/templates/core/user_account.jinja:16
|
#: core/templates/core/user_account.jinja:16
|
||||||
#: core/templates/core/user_account.jinja:44
|
#: core/templates/core/user_account.jinja:44
|
||||||
#: core/templates/core/user_account.jinja:76
|
#: core/templates/core/user_account.jinja:76
|
||||||
@@ -567,26 +566,6 @@ msgstr "L'utilisateur est déjà membre de ce club"
|
|||||||
msgid "past member"
|
msgid "past member"
|
||||||
msgstr "Anciens membres"
|
msgstr "Anciens membres"
|
||||||
|
|
||||||
#: club/templates/club/club_base.jinja:18 club/views.py:31
|
|
||||||
msgid "Members"
|
|
||||||
msgstr "Membres"
|
|
||||||
|
|
||||||
#: club/templates/club/club_base.jinja:26 club/views.py:36
|
|
||||||
msgid "Old members"
|
|
||||||
msgstr "Anciens membres"
|
|
||||||
|
|
||||||
#: club/templates/club/club_base.jinja:34 club/views.py:42
|
|
||||||
#: core/templates/core/base.jinja:37 core/views/user.py:132
|
|
||||||
msgid "Tools"
|
|
||||||
msgstr "Outils"
|
|
||||||
|
|
||||||
#: club/templates/club/club_base.jinja:50 club/views.py:53
|
|
||||||
#: counter/templates/counter/counter_list.jinja:20
|
|
||||||
#: counter/templates/counter/counter_list.jinja:34
|
|
||||||
#: counter/templates/counter/counter_list.jinja:48
|
|
||||||
msgid "Props"
|
|
||||||
msgstr "Propriétés"
|
|
||||||
|
|
||||||
#: club/templates/club/club_list.jinja:4
|
#: club/templates/club/club_list.jinja:4
|
||||||
#: club/templates/club/club_list.jinja:24
|
#: club/templates/club/club_list.jinja:24
|
||||||
msgid "Club list"
|
msgid "Club list"
|
||||||
@@ -640,6 +619,68 @@ msgstr "Du"
|
|||||||
msgid "To"
|
msgid "To"
|
||||||
msgstr "Au"
|
msgstr "Au"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:5 club/views.py:57
|
||||||
|
#: counter/templates/counter/counter_main.jinja:19
|
||||||
|
msgid "Sellings"
|
||||||
|
msgstr "Ventes"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:9
|
||||||
|
msgid "Show"
|
||||||
|
msgstr "Montrer"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:12
|
||||||
|
msgid "Quantity: "
|
||||||
|
msgstr "Quantité : "
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:12
|
||||||
|
msgid "units"
|
||||||
|
msgstr "unités"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:13
|
||||||
|
#: counter/templates/counter/counter_click.jinja:67
|
||||||
|
#: counter/templates/counter/counter_main.jinja:28
|
||||||
|
#: eboutic/templates/eboutic/eboutic_main.jinja:34
|
||||||
|
msgid "Total: "
|
||||||
|
msgstr "Total : "
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:19 club/views.py:159
|
||||||
|
#: core/templates/core/user_account.jinja:17
|
||||||
|
#: core/templates/core/user_account.jinja:45
|
||||||
|
msgid "Counter"
|
||||||
|
msgstr "Comptoir"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:20
|
||||||
|
#: core/templates/core/user_account.jinja:18
|
||||||
|
#: core/templates/core/user_account.jinja:46
|
||||||
|
msgid "Barman"
|
||||||
|
msgstr "Barman"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:21
|
||||||
|
#: counter/templates/counter/counter_click.jinja:29
|
||||||
|
msgid "Customer"
|
||||||
|
msgstr "Client"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:22
|
||||||
|
#: core/templates/core/user_account.jinja:47
|
||||||
|
msgid "Label"
|
||||||
|
msgstr "Intitulé"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:23
|
||||||
|
#: core/templates/core/user_account.jinja:48
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr "Quantité"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:24
|
||||||
|
#: core/templates/core/user_account.jinja:49
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: club/templates/club/club_sellings.jinja:25
|
||||||
|
#: core/templates/core/user_account.jinja:20
|
||||||
|
#: core/templates/core/user_account.jinja:50
|
||||||
|
msgid "Payment method"
|
||||||
|
msgstr "Méthode de paiement"
|
||||||
|
|
||||||
#: club/templates/club/club_tools.jinja:4
|
#: club/templates/club/club_tools.jinja:4
|
||||||
#: core/templates/core/user_tools.jinja:58
|
#: core/templates/core/user_tools.jinja:58
|
||||||
msgid "Club tools"
|
msgid "Club tools"
|
||||||
@@ -657,6 +698,36 @@ msgstr "Comptabilité : "
|
|||||||
msgid "Manage launderettes"
|
msgid "Manage launderettes"
|
||||||
msgstr "Gestion des laveries"
|
msgstr "Gestion des laveries"
|
||||||
|
|
||||||
|
#: club/views.py:36
|
||||||
|
msgid "Members"
|
||||||
|
msgstr "Membres"
|
||||||
|
|
||||||
|
#: club/views.py:41
|
||||||
|
msgid "Old members"
|
||||||
|
msgstr "Anciens membres"
|
||||||
|
|
||||||
|
#: club/views.py:47 core/templates/core/base.jinja:38 core/views/user.py:132
|
||||||
|
msgid "Tools"
|
||||||
|
msgstr "Outils"
|
||||||
|
|
||||||
|
#: club/views.py:63 counter/templates/counter/counter_list.jinja:20
|
||||||
|
#: counter/templates/counter/counter_list.jinja:34
|
||||||
|
#: counter/templates/counter/counter_list.jinja:48
|
||||||
|
msgid "Props"
|
||||||
|
msgstr "Propriétés"
|
||||||
|
|
||||||
|
#: club/views.py:157
|
||||||
|
msgid "Begin date"
|
||||||
|
msgstr "Date de début"
|
||||||
|
|
||||||
|
#: club/views.py:158
|
||||||
|
msgid "End date"
|
||||||
|
msgstr "Date de fin"
|
||||||
|
|
||||||
|
#: club/views.py:172
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "Produit"
|
||||||
|
|
||||||
#: core/models.py:28
|
#: core/models.py:28
|
||||||
msgid "meta group status"
|
msgid "meta group status"
|
||||||
msgstr "status du meta-groupe"
|
msgstr "status du meta-groupe"
|
||||||
@@ -1061,65 +1132,65 @@ msgstr "404. Non trouvé"
|
|||||||
msgid "Welcome!"
|
msgid "Welcome!"
|
||||||
msgstr "Bienvenue!"
|
msgstr "Bienvenue!"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:18
|
#: core/templates/core/base.jinja:19
|
||||||
msgid "Logo"
|
msgid "Logo"
|
||||||
msgstr "Logo"
|
msgstr "Logo"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:21 core/templates/core/login.jinja:4
|
#: core/templates/core/base.jinja:22 core/templates/core/login.jinja:4
|
||||||
#: core/templates/core/password_reset_complete.jinja:5
|
#: core/templates/core/password_reset_complete.jinja:5
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Connexion"
|
msgstr "Connexion"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:22 core/templates/core/register.jinja:18
|
#: core/templates/core/base.jinja:23 core/templates/core/register.jinja:18
|
||||||
msgid "Register"
|
msgid "Register"
|
||||||
msgstr "S'enregister"
|
msgstr "S'enregister"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:38
|
#: core/templates/core/base.jinja:39
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Déconnexion"
|
msgstr "Déconnexion"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:40 core/templates/core/base.jinja.py:41
|
#: core/templates/core/base.jinja:41 core/templates/core/base.jinja.py:42
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Recherche"
|
msgstr "Recherche"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:63
|
#: core/templates/core/base.jinja:64
|
||||||
msgid "Main"
|
msgid "Main"
|
||||||
msgstr "Accueil"
|
msgstr "Accueil"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:64
|
#: core/templates/core/base.jinja:65
|
||||||
msgid "Matmatronch"
|
msgid "Matmatronch"
|
||||||
msgstr "Matmatronch"
|
msgstr "Matmatronch"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:65
|
#: core/templates/core/base.jinja:66
|
||||||
msgid "Wiki"
|
msgid "Wiki"
|
||||||
msgstr "Wiki"
|
msgstr "Wiki"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:66
|
#: core/templates/core/base.jinja:67
|
||||||
msgid "SAS"
|
msgid "SAS"
|
||||||
msgstr "SAS"
|
msgstr "SAS"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:67
|
#: core/templates/core/base.jinja:68
|
||||||
msgid "Forum"
|
msgid "Forum"
|
||||||
msgstr "Forum"
|
msgstr "Forum"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:68
|
#: core/templates/core/base.jinja:69
|
||||||
msgid "Services"
|
msgid "Services"
|
||||||
msgstr "Services"
|
msgstr "Services"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:69 core/templates/core/file.jinja:20
|
#: core/templates/core/base.jinja:70 core/templates/core/file.jinja:20
|
||||||
#: core/views/files.py:42
|
#: core/views/files.py:42
|
||||||
msgid "Files"
|
msgid "Files"
|
||||||
msgstr "Fichiers"
|
msgstr "Fichiers"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:70
|
#: core/templates/core/base.jinja:71
|
||||||
msgid "Sponsors"
|
msgid "Sponsors"
|
||||||
msgstr "Partenaires"
|
msgstr "Partenaires"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:71
|
#: core/templates/core/base.jinja:72
|
||||||
msgid "Help"
|
msgid "Help"
|
||||||
msgstr "Aide"
|
msgstr "Aide"
|
||||||
|
|
||||||
#: core/templates/core/base.jinja:103
|
#: core/templates/core/base.jinja:104
|
||||||
msgid "Site made by good people"
|
msgid "Site made by good people"
|
||||||
msgstr "Site réalisé par des gens bons"
|
msgstr "Site réalisé par des gens bons"
|
||||||
|
|
||||||
@@ -1490,37 +1561,10 @@ msgstr "Compte utilisateur"
|
|||||||
msgid "Refillings"
|
msgid "Refillings"
|
||||||
msgstr "Rechargements"
|
msgstr "Rechargements"
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:17
|
|
||||||
#: core/templates/core/user_account.jinja:45
|
|
||||||
msgid "Counter"
|
|
||||||
msgstr "Comptoir"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:18
|
|
||||||
#: core/templates/core/user_account.jinja:46
|
|
||||||
msgid "Barman"
|
|
||||||
msgstr "Barman"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:20
|
|
||||||
#: core/templates/core/user_account.jinja:50
|
|
||||||
msgid "Payment method"
|
|
||||||
msgstr "Méthode de paiement"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:40
|
#: core/templates/core/user_account.jinja:40
|
||||||
msgid "Account buyings"
|
msgid "Account buyings"
|
||||||
msgstr "Achat sur compte utilisateur"
|
msgstr "Achat sur compte utilisateur"
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:47
|
|
||||||
msgid "Label"
|
|
||||||
msgstr "Intitulé"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:48
|
|
||||||
msgid "Quantity"
|
|
||||||
msgstr "Quantité"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:49
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Total"
|
|
||||||
|
|
||||||
#: core/templates/core/user_account.jinja:72
|
#: core/templates/core/user_account.jinja:72
|
||||||
msgid "Eboutic invoices"
|
msgid "Eboutic invoices"
|
||||||
msgstr "Facture eboutic"
|
msgstr "Facture eboutic"
|
||||||
@@ -1663,8 +1707,6 @@ msgid "Products management"
|
|||||||
msgstr "Gestion des produits"
|
msgstr "Gestion des produits"
|
||||||
|
|
||||||
#: core/templates/core/user_tools.jinja:28
|
#: core/templates/core/user_tools.jinja:28
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Products type management"
|
|
||||||
msgid "Product types management"
|
msgid "Product types management"
|
||||||
msgstr "Gestion des types de produit"
|
msgstr "Gestion des types de produit"
|
||||||
|
|
||||||
@@ -1685,24 +1727,24 @@ msgstr "Ajouter un nouveau dossier"
|
|||||||
msgid "Error creating folder %(folder_name)s: %(msg)s"
|
msgid "Error creating folder %(folder_name)s: %(msg)s"
|
||||||
msgstr "Erreur de création du dossier %(folder_name)s : %(msg)s"
|
msgstr "Erreur de création du dossier %(folder_name)s : %(msg)s"
|
||||||
|
|
||||||
#: core/views/files.py:61 core/views/forms.py:172 core/views/forms.py:176
|
#: core/views/files.py:61 core/views/forms.py:180 core/views/forms.py:184
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Error uploading file %(file_name)s: %(msg)s"
|
msgid "Error uploading file %(file_name)s: %(msg)s"
|
||||||
msgstr "Erreur d'envoie du fichier %(file_name)s : %(msg)s"
|
msgstr "Erreur d'envoie du fichier %(file_name)s : %(msg)s"
|
||||||
|
|
||||||
#: core/views/forms.py:50 core/views/forms.py:53
|
#: core/views/forms.py:58 core/views/forms.py:61
|
||||||
msgid "Choose file"
|
msgid "Choose file"
|
||||||
msgstr "Choisir un fichier"
|
msgstr "Choisir un fichier"
|
||||||
|
|
||||||
#: core/views/forms.py:64 core/views/forms.py:67
|
#: core/views/forms.py:72 core/views/forms.py:75
|
||||||
msgid "Choose user"
|
msgid "Choose user"
|
||||||
msgstr "Choisir un utilisateur"
|
msgstr "Choisir un utilisateur"
|
||||||
|
|
||||||
#: core/views/forms.py:89
|
#: core/views/forms.py:97
|
||||||
msgid "Username, email, or account number"
|
msgid "Username, email, or account number"
|
||||||
msgstr "Nom d'utilisateur, email, ou numéro de compte AE"
|
msgstr "Nom d'utilisateur, email, ou numéro de compte AE"
|
||||||
|
|
||||||
#: core/views/forms.py:131
|
#: core/views/forms.py:139
|
||||||
msgid ""
|
msgid ""
|
||||||
"Profile: you need to be visible on the picture, in order to be recognized (e."
|
"Profile: you need to be visible on the picture, in order to be recognized (e."
|
||||||
"g. by the barmen)"
|
"g. by the barmen)"
|
||||||
@@ -1710,15 +1752,15 @@ msgstr ""
|
|||||||
"Photo de profil: vous devez être visible sur la photo afin d'être reconnu "
|
"Photo de profil: vous devez être visible sur la photo afin d'être reconnu "
|
||||||
"(par exemple par les barmen)"
|
"(par exemple par les barmen)"
|
||||||
|
|
||||||
#: core/views/forms.py:132
|
#: core/views/forms.py:140
|
||||||
msgid "Avatar: used on the forum"
|
msgid "Avatar: used on the forum"
|
||||||
msgstr "Avatar : utilisé sur le forum"
|
msgstr "Avatar : utilisé sur le forum"
|
||||||
|
|
||||||
#: core/views/forms.py:133
|
#: core/views/forms.py:141
|
||||||
msgid "Scrub: let other know how your scrub looks like!"
|
msgid "Scrub: let other know how your scrub looks like!"
|
||||||
msgstr "Blouse : montrez aux autres à quoi ressemble votre blouse !"
|
msgstr "Blouse : montrez aux autres à quoi ressemble votre blouse !"
|
||||||
|
|
||||||
#: core/views/forms.py:177
|
#: core/views/forms.py:185
|
||||||
msgid "Bad image format, only jpeg, png, and gif are accepted"
|
msgid "Bad image format, only jpeg, png, and gif are accepted"
|
||||||
msgstr "Mauvais format d'image, seuls les jpeg, png, et gif sont acceptés"
|
msgstr "Mauvais format d'image, seuls les jpeg, png, et gif sont acceptés"
|
||||||
|
|
||||||
@@ -1811,7 +1853,7 @@ msgstr "Bureau"
|
|||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:24
|
#: eboutic/templates/eboutic/eboutic_main.jinja:24
|
||||||
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:8
|
#: eboutic/templates/eboutic/eboutic_makecommand.jinja:8
|
||||||
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
#: eboutic/templates/eboutic/eboutic_payment_result.jinja:4
|
||||||
#: sith/settings.py:285 sith/settings.py:293 sith/settings_sample.py:274
|
#: sith/settings.py:288 sith/settings.py:296 sith/settings_sample.py:274
|
||||||
#: sith/settings_sample.py:282
|
#: sith/settings_sample.py:282
|
||||||
msgid "Eboutic"
|
msgid "Eboutic"
|
||||||
msgstr "Eboutic"
|
msgstr "Eboutic"
|
||||||
@@ -1849,8 +1891,8 @@ msgstr "quantité"
|
|||||||
msgid "Sith account"
|
msgid "Sith account"
|
||||||
msgstr "Compte utilisateur"
|
msgstr "Compte utilisateur"
|
||||||
|
|
||||||
#: counter/models.py:246 sith/settings.py:278 sith/settings.py:283
|
#: counter/models.py:246 sith/settings.py:281 sith/settings.py:286
|
||||||
#: sith/settings.py:305 sith/settings_sample.py:267
|
#: sith/settings.py:308 sith/settings_sample.py:267
|
||||||
#: sith/settings_sample.py:272 sith/settings_sample.py:294
|
#: sith/settings_sample.py:272 sith/settings_sample.py:294
|
||||||
msgid "Credit card"
|
msgid "Credit card"
|
||||||
msgstr "Carte bancaire"
|
msgstr "Carte bancaire"
|
||||||
@@ -1896,10 +1938,6 @@ msgstr "élément de relevé de caisse"
|
|||||||
msgid "Make a cash register summary"
|
msgid "Make a cash register summary"
|
||||||
msgstr "Faire un relevé de caisse"
|
msgstr "Faire un relevé de caisse"
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:29
|
|
||||||
msgid "Customer"
|
|
||||||
msgstr "Client"
|
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:34
|
#: counter/templates/counter/counter_click.jinja:34
|
||||||
#: launderette/templates/launderette/launderette_admin.jinja:8
|
#: launderette/templates/launderette/launderette_admin.jinja:8
|
||||||
msgid "Selling"
|
msgid "Selling"
|
||||||
@@ -1930,12 +1968,6 @@ msgstr "Valider"
|
|||||||
msgid "Basket: "
|
msgid "Basket: "
|
||||||
msgstr "Panier : "
|
msgstr "Panier : "
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:67
|
|
||||||
#: counter/templates/counter/counter_main.jinja:28
|
|
||||||
#: eboutic/templates/eboutic/eboutic_main.jinja:34
|
|
||||||
msgid "Total: "
|
|
||||||
msgstr "Total : "
|
|
||||||
|
|
||||||
#: counter/templates/counter/counter_click.jinja:71
|
#: counter/templates/counter/counter_click.jinja:71
|
||||||
msgid "Finish"
|
msgid "Finish"
|
||||||
msgstr "Terminer"
|
msgstr "Terminer"
|
||||||
@@ -1972,10 +2004,6 @@ msgstr "Il n'y a pas de comptoirs dans ce site web."
|
|||||||
msgid "%(counter_name)s counter"
|
msgid "%(counter_name)s counter"
|
||||||
msgstr "Comptoir %(counter_name)s"
|
msgstr "Comptoir %(counter_name)s"
|
||||||
|
|
||||||
#: counter/templates/counter/counter_main.jinja:19
|
|
||||||
msgid "Sellings"
|
|
||||||
msgstr "Ventes"
|
|
||||||
|
|
||||||
#: counter/templates/counter/counter_main.jinja:21
|
#: counter/templates/counter/counter_main.jinja:21
|
||||||
msgid "Last selling: "
|
msgid "Last selling: "
|
||||||
msgstr "Dernière vente : "
|
msgstr "Dernière vente : "
|
||||||
@@ -2280,12 +2308,12 @@ msgid "Washing and drying"
|
|||||||
msgstr "Lavage et séchage"
|
msgstr "Lavage et séchage"
|
||||||
|
|
||||||
#: launderette/templates/launderette/launderette_book.jinja:26
|
#: launderette/templates/launderette/launderette_book.jinja:26
|
||||||
#: sith/settings.py:419 sith/settings_sample.py:408
|
#: sith/settings.py:422 sith/settings_sample.py:408
|
||||||
msgid "Washing"
|
msgid "Washing"
|
||||||
msgstr "Lavage"
|
msgstr "Lavage"
|
||||||
|
|
||||||
#: launderette/templates/launderette/launderette_book.jinja:30
|
#: launderette/templates/launderette/launderette_book.jinja:30
|
||||||
#: sith/settings.py:419 sith/settings_sample.py:408
|
#: sith/settings.py:422 sith/settings_sample.py:408
|
||||||
msgid "Drying"
|
msgid "Drying"
|
||||||
msgstr "Séchage"
|
msgstr "Séchage"
|
||||||
|
|
||||||
@@ -2340,119 +2368,119 @@ msgstr "L'utilisateur n'a pas réservé de créneau"
|
|||||||
msgid "Token not found"
|
msgid "Token not found"
|
||||||
msgstr "Jeton non trouvé"
|
msgstr "Jeton non trouvé"
|
||||||
|
|
||||||
#: sith/settings.py:173 sith/settings_sample.py:162
|
#: sith/settings.py:176 sith/settings_sample.py:162
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr "Anglais"
|
msgstr "Anglais"
|
||||||
|
|
||||||
#: sith/settings.py:174 sith/settings_sample.py:163
|
#: sith/settings.py:177 sith/settings_sample.py:163
|
||||||
msgid "French"
|
msgid "French"
|
||||||
msgstr "Français"
|
msgstr "Français"
|
||||||
|
|
||||||
#: sith/settings.py:275 sith/settings.py:282 sith/settings.py:303
|
#: sith/settings.py:278 sith/settings.py:285 sith/settings.py:306
|
||||||
#: sith/settings_sample.py:264 sith/settings_sample.py:271
|
#: sith/settings_sample.py:264 sith/settings_sample.py:271
|
||||||
#: sith/settings_sample.py:292
|
#: sith/settings_sample.py:292
|
||||||
msgid "Check"
|
msgid "Check"
|
||||||
msgstr "Chèque"
|
msgstr "Chèque"
|
||||||
|
|
||||||
#: sith/settings.py:276 sith/settings.py:284 sith/settings.py:304
|
#: sith/settings.py:279 sith/settings.py:287 sith/settings.py:307
|
||||||
#: sith/settings_sample.py:265 sith/settings_sample.py:273
|
#: sith/settings_sample.py:265 sith/settings_sample.py:273
|
||||||
#: sith/settings_sample.py:293
|
#: sith/settings_sample.py:293
|
||||||
msgid "Cash"
|
msgid "Cash"
|
||||||
msgstr "Espèces"
|
msgstr "Espèces"
|
||||||
|
|
||||||
#: sith/settings.py:277 sith/settings_sample.py:266
|
#: sith/settings.py:280 sith/settings_sample.py:266
|
||||||
msgid "Transfert"
|
msgid "Transfert"
|
||||||
msgstr "Virement"
|
msgstr "Virement"
|
||||||
|
|
||||||
#: sith/settings.py:290 sith/settings_sample.py:279
|
#: sith/settings.py:293 sith/settings_sample.py:279
|
||||||
msgid "Belfort"
|
msgid "Belfort"
|
||||||
msgstr "Belfort"
|
msgstr "Belfort"
|
||||||
|
|
||||||
#: sith/settings.py:291 sith/settings_sample.py:280
|
#: sith/settings.py:294 sith/settings_sample.py:280
|
||||||
msgid "Sevenans"
|
msgid "Sevenans"
|
||||||
msgstr "Sevenans"
|
msgstr "Sevenans"
|
||||||
|
|
||||||
#: sith/settings.py:292 sith/settings_sample.py:281
|
#: sith/settings.py:295 sith/settings_sample.py:281
|
||||||
msgid "Montbéliard"
|
msgid "Montbéliard"
|
||||||
msgstr "Montbéliard"
|
msgstr "Montbéliard"
|
||||||
|
|
||||||
#: sith/settings.py:332 sith/settings_sample.py:321
|
#: sith/settings.py:335 sith/settings_sample.py:321
|
||||||
msgid "One semester"
|
msgid "One semester"
|
||||||
msgstr "Un semestre, 15 €"
|
msgstr "Un semestre, 15 €"
|
||||||
|
|
||||||
#: sith/settings.py:337 sith/settings_sample.py:326
|
#: sith/settings.py:340 sith/settings_sample.py:326
|
||||||
msgid "Two semesters"
|
msgid "Two semesters"
|
||||||
msgstr "Deux semestres, 28 €"
|
msgstr "Deux semestres, 28 €"
|
||||||
|
|
||||||
#: sith/settings.py:342 sith/settings_sample.py:331
|
#: sith/settings.py:345 sith/settings_sample.py:331
|
||||||
msgid "Common core cursus"
|
msgid "Common core cursus"
|
||||||
msgstr "Cursus tronc commun, 45 €"
|
msgstr "Cursus tronc commun, 45 €"
|
||||||
|
|
||||||
#: sith/settings.py:347 sith/settings_sample.py:336
|
#: sith/settings.py:350 sith/settings_sample.py:336
|
||||||
msgid "Branch cursus"
|
msgid "Branch cursus"
|
||||||
msgstr "Cursus branche, 45 €"
|
msgstr "Cursus branche, 45 €"
|
||||||
|
|
||||||
#: sith/settings.py:352 sith/settings_sample.py:341
|
#: sith/settings.py:355 sith/settings_sample.py:341
|
||||||
msgid "Alternating cursus"
|
msgid "Alternating cursus"
|
||||||
msgstr "Cursus alternant, 30 €"
|
msgstr "Cursus alternant, 30 €"
|
||||||
|
|
||||||
#: sith/settings.py:357 sith/settings_sample.py:346
|
#: sith/settings.py:360 sith/settings_sample.py:346
|
||||||
msgid "Honorary member"
|
msgid "Honorary member"
|
||||||
msgstr "Membre honoraire, 0 €"
|
msgstr "Membre honoraire, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:362 sith/settings_sample.py:351
|
#: sith/settings.py:365 sith/settings_sample.py:351
|
||||||
msgid "Assidu member"
|
msgid "Assidu member"
|
||||||
msgstr "Membre d'Assidu, 0 €"
|
msgstr "Membre d'Assidu, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:367 sith/settings_sample.py:356
|
#: sith/settings.py:370 sith/settings_sample.py:356
|
||||||
msgid "Amicale/DOCEO member"
|
msgid "Amicale/DOCEO member"
|
||||||
msgstr "Membre de l'Amicale/DOCEO, 0 €"
|
msgstr "Membre de l'Amicale/DOCEO, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:372 sith/settings_sample.py:361
|
#: sith/settings.py:375 sith/settings_sample.py:361
|
||||||
msgid "UT network member"
|
msgid "UT network member"
|
||||||
msgstr "Cotisant du réseau UT, 0 €"
|
msgstr "Cotisant du réseau UT, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:377 sith/settings_sample.py:366
|
#: sith/settings.py:380 sith/settings_sample.py:366
|
||||||
msgid "CROUS member"
|
msgid "CROUS member"
|
||||||
msgstr "Membres du CROUS, 0 €"
|
msgstr "Membres du CROUS, 0 €"
|
||||||
|
|
||||||
#: sith/settings.py:382 sith/settings_sample.py:371
|
#: sith/settings.py:385 sith/settings_sample.py:371
|
||||||
msgid "Sbarro/ESTA member"
|
msgid "Sbarro/ESTA member"
|
||||||
msgstr "Membre de Sbarro ou de l'ESTA, 15 €"
|
msgstr "Membre de Sbarro ou de l'ESTA, 15 €"
|
||||||
|
|
||||||
#: sith/settings.py:390 sith/settings_sample.py:379
|
#: sith/settings.py:393 sith/settings_sample.py:379
|
||||||
msgid "President"
|
msgid "President"
|
||||||
msgstr "Président"
|
msgstr "Président"
|
||||||
|
|
||||||
#: sith/settings.py:391 sith/settings_sample.py:380
|
#: sith/settings.py:394 sith/settings_sample.py:380
|
||||||
msgid "Vice-President"
|
msgid "Vice-President"
|
||||||
msgstr "Vice-Président"
|
msgstr "Vice-Président"
|
||||||
|
|
||||||
#: sith/settings.py:392 sith/settings_sample.py:381
|
#: sith/settings.py:395 sith/settings_sample.py:381
|
||||||
msgid "Treasurer"
|
msgid "Treasurer"
|
||||||
msgstr "Trésorier"
|
msgstr "Trésorier"
|
||||||
|
|
||||||
#: sith/settings.py:393 sith/settings_sample.py:382
|
#: sith/settings.py:396 sith/settings_sample.py:382
|
||||||
msgid "Communication supervisor"
|
msgid "Communication supervisor"
|
||||||
msgstr "Responsable com"
|
msgstr "Responsable com"
|
||||||
|
|
||||||
#: sith/settings.py:394 sith/settings_sample.py:383
|
#: sith/settings.py:397 sith/settings_sample.py:383
|
||||||
msgid "Secretary"
|
msgid "Secretary"
|
||||||
msgstr "Secrétaire"
|
msgstr "Secrétaire"
|
||||||
|
|
||||||
#: sith/settings.py:395 sith/settings_sample.py:384
|
#: sith/settings.py:398 sith/settings_sample.py:384
|
||||||
msgid "IT supervisor"
|
msgid "IT supervisor"
|
||||||
msgstr "Responsable info"
|
msgstr "Responsable info"
|
||||||
|
|
||||||
#: sith/settings.py:396 sith/settings_sample.py:385
|
#: sith/settings.py:399 sith/settings_sample.py:385
|
||||||
msgid "Board member"
|
msgid "Board member"
|
||||||
msgstr "Membre du bureau"
|
msgstr "Membre du bureau"
|
||||||
|
|
||||||
#: sith/settings.py:397 sith/settings_sample.py:386
|
#: sith/settings.py:400 sith/settings_sample.py:386
|
||||||
msgid "Active member"
|
msgid "Active member"
|
||||||
msgstr "Membre actif"
|
msgstr "Membre actif"
|
||||||
|
|
||||||
#: sith/settings.py:398 sith/settings_sample.py:387
|
#: sith/settings.py:401 sith/settings_sample.py:387
|
||||||
msgid "Curious"
|
msgid "Curious"
|
||||||
msgstr "Curieux"
|
msgstr "Curieux"
|
||||||
|
|
||||||
@@ -2496,9 +2524,3 @@ msgstr "Un utilisateur avec cette adresse email existe déjà"
|
|||||||
msgid "You must either choose an existing user or create a new one properly"
|
msgid "You must either choose an existing user or create a new one properly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vous devez soit choisir un utilisateur existant, ou en créer un proprement."
|
"Vous devez soit choisir un utilisateur existant, ou en créer un proprement."
|
||||||
|
|
||||||
#~ msgid "Edit club"
|
|
||||||
#~ msgstr "Éditer le club"
|
|
||||||
|
|
||||||
#~ msgid "Edit club properties"
|
|
||||||
#~ msgstr "Éditer les propriétés du club"
|
|
||||||
@@ -17,8 +17,13 @@ from django.conf.urls import include, url
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.views.i18n import javascript_catalog
|
||||||
from ajax_select import urls as ajax_select_urls
|
from ajax_select import urls as ajax_select_urls
|
||||||
|
|
||||||
|
js_info_dict = {
|
||||||
|
'packages': ('sith',),
|
||||||
|
}
|
||||||
|
|
||||||
handler403 = "core.views.forbidden"
|
handler403 = "core.views.forbidden"
|
||||||
handler404 = "core.views.not_found"
|
handler404 = "core.views.not_found"
|
||||||
|
|
||||||
@@ -34,5 +39,6 @@ urlpatterns = [
|
|||||||
url(r'^admin/', include(admin.site.urls)),
|
url(r'^admin/', include(admin.site.urls)),
|
||||||
url(r'^ajax_select/', include(ajax_select_urls)),
|
url(r'^ajax_select/', include(ajax_select_urls)),
|
||||||
url(r'^i18n/', include('django.conf.urls.i18n')),
|
url(r'^i18n/', include('django.conf.urls.i18n')),
|
||||||
|
url(r'^jsi18n/$', javascript_catalog, js_info_dict, name='javascript-catalog'),
|
||||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # TODO: remove me for production!!!
|
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # TODO: remove me for production!!!
|
||||||
|
|
||||||
Reference in new issue
Block a user