forked from DGNum/gestioCOF
Merge branch 'k-fet' of git.eleves.ens.fr:cof-geek/gestioCOF into Aufinal/own_password
This commit is contained in:
commit
5654fd84e8
978 changed files with 465 additions and 78528 deletions
|
@ -1,9 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
|
||||
from django.shortcuts import render
|
||||
from django.http import Http404
|
||||
from django.db.models import Q
|
||||
|
@ -11,6 +7,7 @@ from gestioncof.models import User, Clipper
|
|||
from kfet.decorators import teamkfet_required
|
||||
from kfet.models import Account
|
||||
|
||||
|
||||
@teamkfet_required
|
||||
def account_create(request):
|
||||
if "q" not in request.GET:
|
||||
|
@ -25,48 +22,48 @@ def account_create(request):
|
|||
queries = {}
|
||||
search_words = q.split()
|
||||
|
||||
queries['kfet'] = Account.objects
|
||||
queries['users_cof'] = User.objects.filter(Q(profile__is_cof = True))
|
||||
queries['users_notcof'] = User.objects.filter(Q(profile__is_cof = False))
|
||||
queries['clippers'] = Clipper.objects
|
||||
queries['kfet'] = Account.objects
|
||||
queries['users_cof'] = User.objects.filter(Q(profile__is_cof=True))
|
||||
queries['users_notcof'] = User.objects.filter(Q(profile__is_cof=False))
|
||||
queries['clippers'] = Clipper.objects
|
||||
|
||||
for word in search_words:
|
||||
queries['kfet'] = queries['kfet'].filter(
|
||||
Q(cofprofile__user__username__icontains = word)
|
||||
| Q(cofprofile__user__first_name__icontains = word)
|
||||
| Q(cofprofile__user__last_name__icontains = word)
|
||||
Q(cofprofile__user__username__icontains=word) |
|
||||
Q(cofprofile__user__first_name__icontains=word) |
|
||||
Q(cofprofile__user__last_name__icontains=word)
|
||||
)
|
||||
queries['users_cof'] = queries['users_cof'].filter(
|
||||
Q(username__icontains = word)
|
||||
| Q(first_name__icontains = word)
|
||||
| Q(last_name__icontains = word)
|
||||
Q(username__icontains=word) |
|
||||
Q(first_name__icontains=word) |
|
||||
Q(last_name__icontains=word)
|
||||
)
|
||||
queries['users_notcof'] = queries['users_notcof'].filter(
|
||||
Q(username__icontains = word)
|
||||
| Q(first_name__icontains = word)
|
||||
| Q(last_name__icontains = word)
|
||||
Q(username__icontains=word) |
|
||||
Q(first_name__icontains=word) |
|
||||
Q(last_name__icontains=word)
|
||||
)
|
||||
queries['clippers'] = queries['clippers'].filter(
|
||||
Q(username__icontains = word)
|
||||
| Q(fullname__icontains = word)
|
||||
queries['clippers'] = queries['clippers'].filter(
|
||||
Q(username__icontains=word) |
|
||||
Q(fullname__icontains=word)
|
||||
)
|
||||
|
||||
queries['kfet'] = queries['kfet'].distinct()
|
||||
|
||||
usernames = list( \
|
||||
usernames = list(
|
||||
queries['kfet'].values_list('cofprofile__user__username', flat=True))
|
||||
|
||||
queries['kfet'] = [ (account, account.cofprofile.user) \
|
||||
for account in queries['kfet'] ]
|
||||
queries['kfet'] = [(account, account.cofprofile.user)
|
||||
for account in queries['kfet']]
|
||||
|
||||
queries['users_cof'] = \
|
||||
queries['users_cof'] = \
|
||||
queries['users_cof'].exclude(username__in=usernames).distinct()
|
||||
queries['users_notcof'] = \
|
||||
queries['users_notcof'] = \
|
||||
queries['users_notcof'].exclude(username__in=usernames).distinct()
|
||||
|
||||
usernames += list( \
|
||||
usernames += list(
|
||||
queries['users_cof'].values_list('username', flat=True))
|
||||
usernames += list( \
|
||||
usernames += list(
|
||||
queries['users_notcof'].values_list('username', flat=True))
|
||||
|
||||
queries['clippers'] = \
|
||||
|
@ -80,3 +77,25 @@ def account_create(request):
|
|||
data['options'] = options
|
||||
|
||||
return render(request, "kfet/account_create_autocomplete.html", data)
|
||||
|
||||
|
||||
def account_search(request):
|
||||
if "q" not in request.GET:
|
||||
raise Http404
|
||||
q = request.GET.get("q")
|
||||
words = q.split()
|
||||
|
||||
data = {'q': q}
|
||||
|
||||
for word in words:
|
||||
query = Account.objects.filter(
|
||||
Q(cofprofile__user__username__icontains=word) |
|
||||
Q(cofprofile__user__first_name__icontains=word) |
|
||||
Q(cofprofile__user__last_name__icontains=word)
|
||||
).distinct()
|
||||
|
||||
query = [(account.trigramme, account.cofprofile.user.get_full_name())
|
||||
for account in query]
|
||||
|
||||
data['accounts'] = query
|
||||
return render(request, 'kfet/account_search_autocomplete.html', data)
|
||||
|
|
|
@ -1,21 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
|
||||
from decimal import Decimal
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.core.validators import MinLengthValidator
|
||||
from django.contrib.auth.models import User, Group, Permission
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.forms import modelformset_factory, inlineformset_factory
|
||||
from django.forms.models import BaseInlineFormSet
|
||||
from django.forms import modelformset_factory
|
||||
from django.utils import timezone
|
||||
from kfet.models import (Account, Checkout, Article, OperationGroup, Operation,
|
||||
from kfet.models import (
|
||||
Account, Checkout, Article, OperationGroup, Operation,
|
||||
CheckoutStatement, ArticleCategory, Settings, AccountNegative, Transfer,
|
||||
TransferGroup, Supplier, Inventory, InventoryArticle)
|
||||
TransferGroup, Supplier)
|
||||
from gestioncof.models import CofProfile
|
||||
|
||||
# -----
|
||||
|
@ -131,7 +127,16 @@ class UserRestrictTeamForm(UserForm):
|
|||
|
||||
class UserGroupForm(forms.ModelForm):
|
||||
groups = forms.ModelMultipleChoiceField(
|
||||
Group.objects.filter(name__icontains='K-Fêt'))
|
||||
Group.objects.filter(name__icontains='K-Fêt'),
|
||||
required=False)
|
||||
|
||||
def clean_groups(self):
|
||||
groups = self.cleaned_data.get('groups')
|
||||
# Si aucun groupe, on le dénomme
|
||||
if not groups:
|
||||
groups = self.instance.groups.exclude(name__icontains='K-Fêt')
|
||||
return groups
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ['groups']
|
||||
|
|
19
kfet/migrations/0047_auto_20170104_1528.py
Normal file
19
kfet/migrations/0047_auto_20170104_1528.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('kfet', '0046_account_created_at'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='account',
|
||||
name='promo',
|
||||
field=models.IntegerField(blank=True, choices=[(1980, 1980), (1981, 1981), (1982, 1982), (1983, 1983), (1984, 1984), (1985, 1985), (1986, 1986), (1987, 1987), (1988, 1988), (1989, 1989), (1990, 1990), (1991, 1991), (1992, 1992), (1993, 1993), (1994, 1994), (1995, 1995), (1996, 1996), (1997, 1997), (1998, 1998), (1999, 1999), (2000, 2000), (2001, 2001), (2002, 2002), (2003, 2003), (2004, 2004), (2005, 2005), (2006, 2006), (2007, 2007), (2008, 2008), (2009, 2009), (2010, 2010), (2011, 2011), (2012, 2012), (2013, 2013), (2014, 2014), (2015, 2015), (2016, 2016), (2017, 2017)], default=2016, null=True),
|
||||
),
|
||||
]
|
|
@ -8,5 +8,5 @@ from channels.routing import route, route_class
|
|||
from kfet import consumers
|
||||
|
||||
channel_routing = [
|
||||
route_class(consumers.KPsul, path=r"^ws/k-fet/k-psul/$"),
|
||||
route_class(consumers.KPsul, path=r"^/ws/k-fet/k-psul/$"),
|
||||
]
|
||||
|
|
|
@ -83,3 +83,24 @@
|
|||
padding-right: 50px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
/* Account autocomplete window */
|
||||
|
||||
#account_results ul {
|
||||
list-style-type:none;
|
||||
background:rgba(255,255,255,0.9);
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#account_results li {
|
||||
display:block;
|
||||
padding:5px 20px;
|
||||
height:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
#account_results .hilight {
|
||||
background:rgba(200,16,46,0.9);
|
||||
color:#fff;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ input[type=number]::-webkit-outer-spin-button {
|
|||
margin: 0;
|
||||
}
|
||||
|
||||
#account, #checkout, input, #history, #basket, #basket_rel, #articles_data {
|
||||
#account, #checkout, input, #history, #basket, #basket_rel, #previous_op, #articles_data {
|
||||
background:#fff;
|
||||
}
|
||||
|
||||
|
@ -335,12 +335,13 @@ input[type=number]::-webkit-outer-spin-button {
|
|||
padding:0;
|
||||
}
|
||||
|
||||
#basket, #basket_rel {
|
||||
#basket, #basket_rel, #previous_op {
|
||||
height:100%;
|
||||
}
|
||||
|
||||
#basket_rel {
|
||||
#basket_rel, #previous_op {
|
||||
border-top:1px solid #C8102E;
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
#basket {
|
||||
|
@ -354,6 +355,11 @@ input[type=number]::-webkit-outer-spin-button {
|
|||
#basket_rel {
|
||||
border-top:0;
|
||||
margin-left:7px;
|
||||
margin-right:7px;
|
||||
}
|
||||
#previous_op {
|
||||
border-top:0;
|
||||
margin-left:7px;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -385,6 +391,16 @@ input[type=number]::-webkit-outer-spin-button {
|
|||
|
||||
/* History */
|
||||
|
||||
#previous_op .trigramme {
|
||||
width:100%;
|
||||
background-color:rgba(200,16,46,0.85);
|
||||
color:#FFF;
|
||||
font-weight:bold;
|
||||
padding:3px;
|
||||
margin-left: -3px;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.kpsul_middle_right_col {
|
||||
overflow:auto;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ function amountDisplay(amount, is_cof=false, tri='') {
|
|||
|
||||
function amountToUKF(amount, is_cof=false) {
|
||||
var coef_cof = is_cof ? 1 + settings['subvention_cof'] / 100 : 1;
|
||||
return Math.round(amount * coef_cof * 10);
|
||||
return Math.floor(amount * coef_cof * 10);
|
||||
}
|
||||
|
||||
function isValidTrigramme(trigramme) {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</a>
|
||||
</li>
|
||||
{% if kfet %}
|
||||
<li class="user_category"><span class="text">Comptes existant</span></li>
|
||||
<li class="user_category"><span class="text">Comptes existants</span></li>
|
||||
{% for account, user in kfet %}
|
||||
<li><span class="text">{{ account }} [{{ user|highlight_user:q }}]</span></li>
|
||||
{% endfor %}
|
||||
|
|
14
kfet/templates/kfet/account_search_autocomplete.html
Normal file
14
kfet/templates/kfet/account_search_autocomplete.html
Normal file
|
@ -0,0 +1,14 @@
|
|||
{% load kfet_tags %}
|
||||
|
||||
<ul>
|
||||
{% if accounts %}
|
||||
{% for trigramme, user in accounts %}
|
||||
<li class='choice'>{{ user|highlight_text:q }} (<span class="trigramme">{{ trigramme }}</span>)</li>
|
||||
{% endfor %}
|
||||
{% elif not q %}
|
||||
<li class="user_category"><span class="text">Pas de recherche, pas de résultats !</span></li>
|
||||
{% else %}
|
||||
<li class="user_category"><span class="text">Aucune correspondance trouvée :-(</span></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
{% block extra_head %}
|
||||
<link rel="stylesheet" style="text/css" href="{% static 'kfet/css/jquery-ui.min.css' %}">
|
||||
<link rel="stylesheet" style="text/css" href="{% static 'kfet/css/kpsul_grid.css' %}">
|
||||
<script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script>
|
||||
<script type="text/javascript" src="{% static 'kfet/js/js.cookie.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'kfet/js/reconnecting-websocket.js' %}"></script>
|
||||
<script type="text/javascript" src="{% static 'kfet/js/jquery-ui.min.js' %}"></script>
|
||||
|
@ -138,10 +139,14 @@
|
|||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-3">
|
||||
<div id="basket_rel">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<div id="previous_op">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -256,12 +261,56 @@ $(document).ready(function() {
|
|||
buttons += '<a href="'+url_base+'?trigramme='+trigramme+'" class="btn btn-primary" target="_blank" title="Créer"><span class="glyphicon glyphicon-plus"></span></a>';
|
||||
} else {
|
||||
var url_base = '{% url 'kfet.account' %}'
|
||||
buttons += '<a href="'+url_base+'" class="btn btn-primary" target="_blank" title="Rechercher"><span class="glyphicon glyphicon-search"></span></a>';
|
||||
buttons += '<button class="btn btn-primary search" title="Rechercher"><span class="glyphicon glyphicon-search"></span></button>';
|
||||
}
|
||||
}
|
||||
account_container.find('.buttons').html(buttons);
|
||||
}
|
||||
|
||||
// Search for an account
|
||||
function searchAccount() {
|
||||
var content = '<input type="text" name="q" id="search_autocomplete" spellcheck="false" autofocus><div id="account_results"></div>' ;
|
||||
$.dialog({
|
||||
title: 'Recherche de compte',
|
||||
content: content,
|
||||
backgroundDismiss: true,
|
||||
animation: 'top',
|
||||
closeAnimation: 'bottom',
|
||||
keyboardEnabled: true,
|
||||
onOpen: function() {
|
||||
var that=this ;
|
||||
$('input#search_autocomplete').yourlabsAutocomplete({
|
||||
url: '{% url "kfet.account.search.autocomplete" %}',
|
||||
minimumCharacters: 2,
|
||||
id: 'search_autocomplete',
|
||||
choiceSelector: '.choice',
|
||||
placeholder: "Chercher un utilisateur K-Fêt",
|
||||
box: $("#account_results"),
|
||||
});
|
||||
$('input#search_autocomplete').bind(
|
||||
'selectChoice',
|
||||
function(e, choice, autocomplete) {
|
||||
autocomplete.hide() ;
|
||||
triInput.val(choice.find('.trigramme').text()) ;
|
||||
triInput.trigger('input') ;
|
||||
that.close() ;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
account_container.on('click', '.search', function () {
|
||||
searchAccount() ;
|
||||
}) ;
|
||||
|
||||
account_container.on('keydown', function(e) {
|
||||
if (e.which == 70 && e.ctrlKey) {
|
||||
// Ctrl + F : universal search shortcut
|
||||
searchAccount() ;
|
||||
e.preventDefault() ;
|
||||
}
|
||||
});
|
||||
|
||||
// Clear data
|
||||
function resetAccountData() {
|
||||
account_data = account_data_default;
|
||||
|
@ -476,6 +525,7 @@ $(document).ready(function() {
|
|||
},
|
||||
})
|
||||
.done(function(data) {
|
||||
updatePreviousOp();
|
||||
coolReset();
|
||||
lock = 0;
|
||||
})
|
||||
|
@ -909,7 +959,7 @@ $(document).ready(function() {
|
|||
var title = is_checkout ? 'Montant de la charge' : "Montant de l'édition";
|
||||
$.confirm({
|
||||
title: title,
|
||||
content: '<input type="number" step="0.01" min="0.01" on autofocus placeholder="€">',
|
||||
content: '<input type="number" lang="en" step="0.01" min="0.01" on autofocus placeholder="€">',
|
||||
backgroundDismiss: true,
|
||||
animation:'top',
|
||||
closeAnimation:'bottom',
|
||||
|
@ -936,7 +986,7 @@ $(document).ready(function() {
|
|||
function askWithdraw() {
|
||||
$.confirm({
|
||||
title: 'Montant du retrait',
|
||||
content: '<input type="number" step="0.01" min="0.01" on autofocus placeholder="€">',
|
||||
content: '<input type="number" lang="en" step="0.01" min="0.01" on autofocus placeholder="€">',
|
||||
backgroundDismiss: true,
|
||||
animation:'top',
|
||||
closeAnimation:'bottom',
|
||||
|
@ -1048,6 +1098,20 @@ $(document).ready(function() {
|
|||
});
|
||||
}
|
||||
|
||||
var previousop_container = $('#previous_op');
|
||||
|
||||
function updatePreviousOp() {
|
||||
var previousop_html = '';
|
||||
var trigramme = account_data['trigramme'];
|
||||
previousop_html += '<div class="trigramme">Trigramme : '+trigramme+'</div>';
|
||||
previousop_html += basketrel_container.html();
|
||||
previousop_container.html(previousop_html);
|
||||
}
|
||||
|
||||
function resetPreviousOp() {
|
||||
previousop_container.html('');
|
||||
}
|
||||
|
||||
// -----
|
||||
// Addcost
|
||||
// -----
|
||||
|
@ -1100,7 +1164,7 @@ $(document).ready(function() {
|
|||
function askAddcost(errors = '') {
|
||||
$.confirm({
|
||||
title: 'Majoration',
|
||||
content: errors + '<input type="text" placeholder="Trigramme" autocomplete="off" name="trigramme" spellcheck="false" style="text-transform:uppercase" autofocus><input type="number" step="0.01" min="0.01" placeholder="€" name="amount">',
|
||||
content: errors + '<input type="text" placeholder="Trigramme" autocomplete="off" name="trigramme" spellcheck="false" style="text-transform:uppercase" autofocus><input type="number" lang="en" step="0.01" min="0.01" placeholder="€" name="amount">',
|
||||
backgroundDismiss: true,
|
||||
animation:'top',
|
||||
closeAnimation:'bottom',
|
||||
|
@ -1187,7 +1251,7 @@ $(document).ready(function() {
|
|||
}
|
||||
for (var i=0; i<data['articles'].length; i++) {
|
||||
article = data['articles'][i];
|
||||
articles_container.find('[data-article='+article['id']+'] .stock')
|
||||
articles_container.find('#data-article-'+article['id']+' .stock')
|
||||
.text(article['stock']);
|
||||
}
|
||||
if (data['addcost']) {
|
||||
|
@ -1216,6 +1280,7 @@ $(document).ready(function() {
|
|||
coolReset(give_tri_focus);
|
||||
checkoutInput.trigger('change');
|
||||
resetArticles();
|
||||
resetPreviousOp();
|
||||
khistory.reset();
|
||||
resetSettings();
|
||||
getArticles();
|
||||
|
|
|
@ -1,22 +1,24 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
|
||||
from django import template
|
||||
from django.utils.html import escape
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.core.cache import cache
|
||||
from kfet.models import Settings
|
||||
from math import floor
|
||||
import re
|
||||
|
||||
register = template.Library()
|
||||
|
||||
|
||||
@register.filter()
|
||||
def highlight_text(text, q):
|
||||
q2 = "|".join(q.split())
|
||||
pattern = re.compile(r"(?P<filter>%s)" % q2, re.IGNORECASE)
|
||||
return mark_safe(re.sub(pattern, r"<span class='highlight_autocomplete'>\g<filter></span>", text))
|
||||
return mark_safe(
|
||||
re.sub(pattern,
|
||||
r"<span class='highlight_autocomplete'>\g<filter></span>",
|
||||
escape(text)))
|
||||
|
||||
|
||||
@register.filter(is_safe=True)
|
||||
def highlight_user(user, q):
|
||||
|
@ -24,7 +26,8 @@ def highlight_user(user, q):
|
|||
text = "%s %s (%s)" % (user.first_name, user.last_name, user.username)
|
||||
else:
|
||||
text = user.username
|
||||
return highlight_text(escape(text), q)
|
||||
return highlight_text(text, q)
|
||||
|
||||
|
||||
@register.filter(is_safe=True)
|
||||
def highlight_clipper(clipper, q):
|
||||
|
@ -32,10 +35,11 @@ def highlight_clipper(clipper, q):
|
|||
text = "%s (%s)" % (clipper.fullname, clipper.username)
|
||||
else:
|
||||
text = clipper.username
|
||||
return highlight_text(escape(text), q)
|
||||
return highlight_text(text, q)
|
||||
|
||||
|
||||
@register.filter()
|
||||
def ukf(balance, is_cof):
|
||||
grant = is_cof and (1 + Settings.SUBVENTION_COF() / 100) or 1
|
||||
# float nécessaire car sinon problème avec le round de future.builtins
|
||||
return round(float(balance * 10 * grant))
|
||||
return floor(float(balance) * 10 * grant)
|
||||
|
|
144
kfet/tests.py
144
kfet/tests.py
|
@ -1,144 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
from django.test import TestCase
|
||||
|
||||
from kfet.models import Account
|
||||
from gestioncof.models import CofProfile, User
|
||||
|
||||
|
||||
|
||||
names = ['Abelardus',
|
||||
'Abrahamus',
|
||||
'Acacius',
|
||||
'Accius',
|
||||
'Achaicus',
|
||||
'Achill',
|
||||
'Achilles',
|
||||
'Achilleus',
|
||||
'Acrisius',
|
||||
'Actaeon',
|
||||
'Acteon',
|
||||
'Adalricus',
|
||||
'Adelfonsus',
|
||||
'Adelphus',
|
||||
'Adeodatus',
|
||||
'Adolfus',
|
||||
'Adolphus',
|
||||
'Adrastus',
|
||||
'Adrianus',
|
||||
'Ægidius',
|
||||
'Ælia',
|
||||
'Ælianus',
|
||||
'Æmilianus',
|
||||
'Æmilius',
|
||||
'Aeneas',
|
||||
'Æolus',
|
||||
'Æschylus',
|
||||
'Æson',
|
||||
'Æsop',
|
||||
'Æther',
|
||||
'Ætius',
|
||||
'Agapetus',
|
||||
'Agapitus',
|
||||
'Agapius',
|
||||
'Agathangelus',
|
||||
'Aigidius',
|
||||
'Aiolus',
|
||||
'Ajax',
|
||||
'Alair',
|
||||
'Alaricus',
|
||||
'Albanus',
|
||||
'Alberic',
|
||||
'Albericus',
|
||||
'Albertus',
|
||||
'Albinus',
|
||||
'Albus',
|
||||
'Alcaeus',
|
||||
'Alcander',
|
||||
'Alcimus',
|
||||
'Alcinder',
|
||||
'Alerio',
|
||||
'Alexandrus',
|
||||
'Alexis',
|
||||
'Alexius',
|
||||
'Alexus',
|
||||
'Alfonsus',
|
||||
'Alfredus',
|
||||
'Almericus',
|
||||
'Aloisius',
|
||||
'Aloysius',
|
||||
'Alphaeus',
|
||||
'Alpheaus',
|
||||
'Alpheus',
|
||||
'Alphoeus',
|
||||
'Alphonsus',
|
||||
'Alphonzus',
|
||||
'Alvinius',
|
||||
'Alvredus',
|
||||
'Amadeus',
|
||||
'Amaliricus',
|
||||
'Amandus',
|
||||
'Amantius',
|
||||
'Amarandus',
|
||||
'Amaranthus',
|
||||
'Amatus',
|
||||
'Ambrosianus',
|
||||
'Ambrosius',
|
||||
'Amedeus',
|
||||
'Americus',
|
||||
'Amlethus',
|
||||
'Amletus',
|
||||
'Amor',
|
||||
'Ampelius',
|
||||
'Amphion',
|
||||
'Anacletus',
|
||||
'Anastasius',
|
||||
'Anastatius',
|
||||
'Anastius',
|
||||
'Anatolius',
|
||||
'Androcles',
|
||||
'Andronicus',
|
||||
'Anencletus',
|
||||
'Angelicus',
|
||||
'Angelus',
|
||||
'Anicetus',
|
||||
'Antigonus',
|
||||
'Antipater',
|
||||
'Antoninus',
|
||||
'Antonius',
|
||||
'Aphrodisius',
|
||||
'Apollinaris']
|
||||
|
||||
class TestFoo(TestCase):
|
||||
fixtures = ['users', 'sites', 'gestion', 'articles']
|
||||
|
||||
def test_foo(self):
|
||||
pass
|
||||
# for name in names:
|
||||
# user = User(username=name,
|
||||
# last_name='Romain',
|
||||
# first_name=name)
|
||||
# user.email = '{}.{}@ens.fr'.format(user.first_name, user.last_name)
|
||||
# user.save()
|
||||
|
||||
# galois_trigrammes = map('{:03d}'.format, range(40))
|
||||
# galois = CofProfile.objects.filter(user__last_name='Gaulois')
|
||||
|
||||
# romains_trigrammes = map(lambda x: str(100+x), range(40))
|
||||
# romains = CofProfile.objects.filter(user__last_name='Romain')
|
||||
|
||||
# for t, c in zip(galois_trigrammes, galois):
|
||||
# Account.objects.create(cofprofile=c, trigramme=t)
|
||||
# for t, c in zip(romains_trigrammes, romains):
|
||||
# Account.objects.create(cofprofile=c, trigramme=t)
|
||||
|
||||
|
||||
# class TestBar(TestCase):
|
||||
# fixtures = ['users', 'sites', 'gestion', 'articles', 'groups', 'accounts']
|
||||
|
||||
|
||||
# def test_foo(self):
|
||||
# pass
|
132
kfet/urls.py
132
kfet/urls.py
|
@ -1,9 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
from builtins import *
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from kfet import views
|
||||
|
@ -12,11 +8,11 @@ from kfet.decorators import teamkfet_required
|
|||
|
||||
urlpatterns = [
|
||||
url(r'^$', views.home,
|
||||
name = 'kfet.home'),
|
||||
name='kfet.home'),
|
||||
url(r'^login/genericteam$', views.login_genericteam,
|
||||
name = 'kfet.login.genericteam'),
|
||||
name='kfet.login.genericteam'),
|
||||
url(r'^history$', views.history,
|
||||
name = 'kfet.history'),
|
||||
name='kfet.history'),
|
||||
|
||||
# -----
|
||||
# Account urls
|
||||
|
@ -24,45 +20,53 @@ urlpatterns = [
|
|||
|
||||
# Account - General
|
||||
url(r'^accounts/$', views.account,
|
||||
name = 'kfet.account'),
|
||||
name='kfet.account'),
|
||||
url(r'^accounts/is_validandfree$', views.account_is_validandfree_ajax,
|
||||
name = 'kfet.account.is_validandfree.ajax'),
|
||||
name='kfet.account.is_validandfree.ajax'),
|
||||
|
||||
# Account - Create
|
||||
url(r'^accounts/new$', views.account_create,
|
||||
name = 'kfet.account.create'),
|
||||
name='kfet.account.create'),
|
||||
url(r'^accounts/new_special$', views.account_create_special,
|
||||
name = 'kfet.account.create_special'),
|
||||
name='kfet.account.create_special'),
|
||||
url(r'^accounts/new/user/(?P<username>.+)$', views.account_create_ajax,
|
||||
name = 'kfet.account.create.fromuser'),
|
||||
url(r'^accounts/new/clipper/(?P<login_clipper>.+)$', views.account_create_ajax,
|
||||
name = 'kfet.account.create.fromclipper'),
|
||||
name='kfet.account.create.fromuser'),
|
||||
url(r'^accounts/new/clipper/(?P<login_clipper>.+)$',
|
||||
views.account_create_ajax,
|
||||
name='kfet.account.create.fromclipper'),
|
||||
url(r'^accounts/new/empty$', views.account_create_ajax,
|
||||
name = 'kfet.account.create.empty'),
|
||||
name='kfet.account.create.empty'),
|
||||
url(r'^autocomplete/account_new$', autocomplete.account_create,
|
||||
name = 'kfet.account.create.autocomplete'),
|
||||
name='kfet.account.create.autocomplete'),
|
||||
|
||||
# Account - Search
|
||||
url(r'^autocomplete/account_search$', autocomplete.account_search,
|
||||
name='kfet.account.search.autocomplete'),
|
||||
|
||||
# Account - Read
|
||||
url(r'^accounts/(?P<trigramme>.{3})$', views.account_read,
|
||||
name = 'kfet.account.read'),
|
||||
name='kfet.account.read'),
|
||||
|
||||
# Account - Update
|
||||
url(r'^accounts/(?P<trigramme>.{3})/edit$', views.account_update,
|
||||
name = 'kfet.account.update'),
|
||||
name='kfet.account.update'),
|
||||
|
||||
# Account - Groups
|
||||
url(r'^accounts/groups$', views.account_group,
|
||||
name = 'kfet.account.group'),
|
||||
name='kfet.account.group'),
|
||||
url(r'^accounts/groups/new$',
|
||||
permission_required('kfet.manage_perms')(views.AccountGroupCreate.as_view()),
|
||||
name = 'kfet.account.group.create'),
|
||||
permission_required('kfet.manage_perms')
|
||||
(views.AccountGroupCreate.as_view()),
|
||||
name='kfet.account.group.create'),
|
||||
url(r'^accounts/groups/(?P<pk>\d+)/edit$',
|
||||
permission_required('kfet.manage_perms')(views.AccountGroupUpdate.as_view()),
|
||||
name = 'kfet.account.group.update'),
|
||||
permission_required('kfet.manage_perms')
|
||||
(views.AccountGroupUpdate.as_view()),
|
||||
name='kfet.account.group.update'),
|
||||
|
||||
url(r'^accounts/negatives$',
|
||||
permission_required('kfet.view_negs')(views.AccountNegativeList.as_view()),
|
||||
name = 'kfet.account.negative'),
|
||||
permission_required('kfet.view_negs')
|
||||
(views.AccountNegativeList.as_view()),
|
||||
name='kfet.account.negative'),
|
||||
|
||||
# -----
|
||||
# Checkout urls
|
||||
|
@ -71,34 +75,36 @@ urlpatterns = [
|
|||
# Checkout - General
|
||||
url('^checkouts/$',
|
||||
teamkfet_required(views.CheckoutList.as_view()),
|
||||
name = 'kfet.checkout'),
|
||||
name='kfet.checkout'),
|
||||
# Checkout - Create
|
||||
url('^checkouts/new$',
|
||||
teamkfet_required(views.CheckoutCreate.as_view()),
|
||||
name = 'kfet.checkout.create'),
|
||||
name='kfet.checkout.create'),
|
||||
# Checkout - Read
|
||||
url('^checkouts/(?P<pk>\d+)$',
|
||||
teamkfet_required(views.CheckoutRead.as_view()),
|
||||
name = 'kfet.checkout.read'),
|
||||
name='kfet.checkout.read'),
|
||||
# Checkout - Update
|
||||
url('^checkouts/(?P<pk>\d+)/edit$',
|
||||
teamkfet_required(views.CheckoutUpdate.as_view()),
|
||||
name = 'kfet.checkout.update'),
|
||||
name='kfet.checkout.update'),
|
||||
|
||||
### Checkout Statements urls
|
||||
# -----
|
||||
# Checkout Statement urls
|
||||
# -----
|
||||
|
||||
# Checkout Statement - General
|
||||
url('^checkouts/statements/$',
|
||||
teamkfet_required(views.CheckoutStatementList.as_view()),
|
||||
name = 'kfet.checkoutstatement'),
|
||||
name='kfet.checkoutstatement'),
|
||||
# Checkout Statement - Create
|
||||
url('^checkouts/(?P<pk_checkout>\d+)/statements/add',
|
||||
teamkfet_required(views.CheckoutStatementCreate.as_view()),
|
||||
name = 'kfet.checkoutstatement.create'),
|
||||
name='kfet.checkoutstatement.create'),
|
||||
# Checkout Statement - Update
|
||||
url('^checkouts/(?P<pk_checkout>\d+)/statements/(?P<pk>\d+)/edit',
|
||||
teamkfet_required(views.CheckoutStatementUpdate.as_view()),
|
||||
name = 'kfet.checkoutstatement.update'),
|
||||
name='kfet.checkoutstatement.update'),
|
||||
|
||||
# -----
|
||||
# Article urls
|
||||
|
@ -107,46 +113,46 @@ urlpatterns = [
|
|||
# Article - General
|
||||
url('^articles/$',
|
||||
teamkfet_required(views.ArticleList.as_view()),
|
||||
name = 'kfet.article'),
|
||||
name='kfet.article'),
|
||||
# Article - Create
|
||||
url('^articles/new$',
|
||||
teamkfet_required(views.ArticleCreate.as_view()),
|
||||
name = 'kfet.article.create'),
|
||||
name='kfet.article.create'),
|
||||
# Article - Read
|
||||
url('^articles/(?P<pk>\d+)$',
|
||||
teamkfet_required(views.ArticleRead.as_view()),
|
||||
name = 'kfet.article.read'),
|
||||
name='kfet.article.read'),
|
||||
# Article - Update
|
||||
url('^articles/(?P<pk>\d+)/edit$',
|
||||
teamkfet_required(views.ArticleUpdate.as_view()),
|
||||
name = 'kfet.article.update'),
|
||||
name='kfet.article.update'),
|
||||
|
||||
# -----
|
||||
# K-Psul urls
|
||||
# -----
|
||||
|
||||
url('^k-psul/$', views.kpsul, name = 'kfet.kpsul'),
|
||||
url('^k-psul/$', views.kpsul, name='kfet.kpsul'),
|
||||
url('^k-psul/checkout_data$', views.kpsul_checkout_data,
|
||||
name = 'kfet.kpsul.checkout_data'),
|
||||
name='kfet.kpsul.checkout_data'),
|
||||
url('^k-psul/perform_operations$', views.kpsul_perform_operations,
|
||||
name = 'kfet.kpsul.perform_operations'),
|
||||
name='kfet.kpsul.perform_operations'),
|
||||
url('^k-psul/cancel_operations$', views.kpsul_cancel_operations,
|
||||
name = 'kfet.kpsul.cancel_operations'),
|
||||
name='kfet.kpsul.cancel_operations'),
|
||||
url('^k-psul/articles_data', views.kpsul_articles_data,
|
||||
name = 'kfet.kpsul.articles_data'),
|
||||
name='kfet.kpsul.articles_data'),
|
||||
url('^k-psul/update_addcost$', views.kpsul_update_addcost,
|
||||
name = 'kfet.kpsul.update_addcost'),
|
||||
name='kfet.kpsul.update_addcost'),
|
||||
url('^k-psul/get_settings$', views.kpsul_get_settings,
|
||||
name = 'kfet.kpsul.get_settings'),
|
||||
name='kfet.kpsul.get_settings'),
|
||||
|
||||
# -----
|
||||
# JSON urls
|
||||
# -----
|
||||
|
||||
url(r'^history.json$', views.history_json,
|
||||
name = 'kfet.history.json'),
|
||||
name='kfet.history.json'),
|
||||
url(r'^accounts/read.json$', views.account_read_json,
|
||||
name = 'kfet.account.read.json'),
|
||||
name='kfet.account.read.json'),
|
||||
|
||||
|
||||
# -----
|
||||
|
@ -154,24 +160,26 @@ urlpatterns = [
|
|||
# -----
|
||||
|
||||
url(r'^settings/$',
|
||||
permission_required('kfet.change_settings')(views.SettingsList.as_view()),
|
||||
name = 'kfet.settings'),
|
||||
permission_required('kfet.change_settings')
|
||||
(views.SettingsList.as_view()),
|
||||
name='kfet.settings'),
|
||||
url(r'^settings/(?P<pk>\d+)/edit$',
|
||||
permission_required('kfet.change_settings')(views.SettingsUpdate.as_view()),
|
||||
name = 'kfet.settings.update'),
|
||||
permission_required('kfet.change_settings')
|
||||
(views.SettingsUpdate.as_view()),
|
||||
name='kfet.settings.update'),
|
||||
|
||||
# -----
|
||||
# Transfers urls
|
||||
# -----
|
||||
|
||||
url(r'^transfers/$', views.transfers,
|
||||
name = 'kfet.transfers'),
|
||||
name='kfet.transfers'),
|
||||
url(r'^transfers/new$', views.transfers_create,
|
||||
name = 'kfet.transfers.create'),
|
||||
name='kfet.transfers.create'),
|
||||
url(r'^transfers/perform$', views.perform_transfers,
|
||||
name = 'kfet.transfers.perform'),
|
||||
name='kfet.transfers.perform'),
|
||||
url(r'^transfers/cancel$', views.cancel_transfers,
|
||||
name = 'kfet.transfers.cancel'),
|
||||
name='kfet.transfers.cancel'),
|
||||
|
||||
# -----
|
||||
# Inventories urls
|
||||
|
@ -179,12 +187,12 @@ urlpatterns = [
|
|||
|
||||
url(r'^inventaires/$',
|
||||
teamkfet_required(views.InventoryList.as_view()),
|
||||
name = 'kfet.inventory'),
|
||||
name='kfet.inventory'),
|
||||
url(r'^inventaires/new$', views.inventory_create,
|
||||
name = 'kfet.inventory.create'),
|
||||
name='kfet.inventory.create'),
|
||||
url(r'^inventaires/(?P<pk>\d+)$',
|
||||
teamkfet_required(views.InventoryRead.as_view()),
|
||||
name = 'kfet.inventory.read'),
|
||||
name='kfet.inventory.read'),
|
||||
|
||||
# -----
|
||||
# Order urls
|
||||
|
@ -192,15 +200,15 @@ urlpatterns = [
|
|||
|
||||
url(r'^orders/$',
|
||||
teamkfet_required(views.OrderList.as_view()),
|
||||
name = 'kfet.order'),
|
||||
name='kfet.order'),
|
||||
url(r'^orders/(?P<pk>\d+)$',
|
||||
teamkfet_required(views.OrderRead.as_view()),
|
||||
name = 'kfet.order.read'),
|
||||
name='kfet.order.read'),
|
||||
url(r'^orders/suppliers/(?P<pk>\d+)/edit$',
|
||||
teamkfet_required(views.SupplierUpdate.as_view()),
|
||||
name = 'kfet.order.supplier.update'),
|
||||
name='kfet.order.supplier.update'),
|
||||
url(r'^orders/suppliers/(?P<pk>\d+)/new-order$', views.order_create,
|
||||
name = 'kfet.order.new'),
|
||||
name='kfet.order.new'),
|
||||
url(r'^orders/(?P<pk>\d+)/to_inventory$', views.order_to_inventory,
|
||||
name = 'kfet.order.to_inventory'),
|
||||
name='kfet.order.to_inventory'),
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue