diff --git a/server/configs/templates/configs/configs/show.html b/server/configs/templates/configs/configs/show.html
index f39c8fa..c038753 100644
--- a/server/configs/templates/configs/configs/show.html
+++ b/server/configs/templates/configs/configs/show.html
@@ -13,7 +13,7 @@
{% trans "Configs management" %}
- {% trans "Home" %}
- {% trans "Configs" %}
- - {{object|safe}}
+ - {{object|safe}}
@@ -129,7 +129,7 @@ {% trans "Details of a config" %}
diff --git a/server/configs/views.py b/server/configs/views.py
index 5f9ceec..0b7a458 100644
--- a/server/configs/views.py
+++ b/server/configs/views.py
@@ -15,6 +15,7 @@
from django.core.cache import cache
from django.core.urlresolvers import reverse
from django.contrib import messages
+from django.utils.translation import ugettext_lazy as _
from configs.models import Config, ConfigLogs
from configs.forms import ConfigForm
@@ -55,7 +56,7 @@ def edit(request, pk):
object = form.save(commit=False)
if not create:
- ConfigLogs(config=object, user=request.user, text='Config has been updated: ' + object.generate_diff(Config.objects.get(pk=pk))).save()
+ ConfigLogs(config=object, user=request.user, text=_('Config has been updated: ') + object.generate_diff(Config.objects.get(pk=pk))).save()
object.save() # To use allowed_users
@@ -67,9 +68,9 @@ def edit(request, pk):
object.save()
if create:
- ConfigLogs(config=object, user=request.user, text='Config has been created: ' + object.generate_diff(Config())).save()
+ ConfigLogs(config=object, user=request.user, text=_('Config has been created: ') + object.generate_diff(Config())).save()
- messages.success(request, 'The config has been saved.')
+ messages.success(request, _('The config has been saved.'))
return redirect('configs.views.list')
else:
@@ -89,7 +90,7 @@ def edit(request, pk):
# raise Http404
# object.delete()
-# messages.success(request, 'Config has been deleted.')
+# messages.success(request, _('Config has been deleted.'))
# return redirect('configs.views.list')
@@ -118,9 +119,9 @@ def new_ipn_key(request, pk):
object.gen_key_ipn()
object.save()
- ConfigLogs(config=object, user=request.user, text='A new IPN key has been generated.').save()
+ ConfigLogs(config=object, user=request.user, text=_('A new IPN key has been generated.')).save()
- messages.success(request, 'A new IPN key has been generated !')
+ messages.success(request, _('A new IPN key has been generated !'))
return redirect('configs.views.show', pk=pk)
@@ -137,9 +138,9 @@ def new_requests_key(request, pk):
object.gen_key_request()
object.save()
- ConfigLogs(config=object, user=request.user, text='A new requests key has been generated.').save()
+ ConfigLogs(config=object, user=request.user, text=_('A new requests key has been generated.')).save()
- messages.success(request, 'A new requests key has been generated !')
+ messages.success(request, _('A new requests key has been generated !'))
return redirect('configs.views.show', pk=pk)
@@ -156,9 +157,9 @@ def new_api_key(request, pk):
object.gen_key_api()
object.save()
- ConfigLogs(config=object, user=request.user, text='A new api key has been generated.').save()
+ ConfigLogs(config=object, user=request.user, text=_('A new api key has been generated.')).save()
- messages.success(request, 'A new api key has been generated !')
+ messages.success(request, _('A new api key has been generated !'))
return redirect('configs.views.show', pk=pk)
diff --git a/server/main/views.py b/server/main/views.py
index 9f57960..a838f9a 100644
--- a/server/main/views.py
+++ b/server/main/views.py
@@ -15,6 +15,7 @@
from django.core.cache import cache
from django.core.urlresolvers import reverse
from django.contrib import messages
+from django.utils.translation import ugettext_lazy as _
@login_required
diff --git a/server/paiements/models.py b/server/paiements/models.py
index 6dc77d2..6c9969a 100644
--- a/server/paiements/models.py
+++ b/server/paiements/models.py
@@ -90,6 +90,9 @@ def internal_status_good(self):
"""Return true if the internal status of the transaction if good (user back from postfinance)"""
return self.internal_status == 'fb'
+ def __unicode__(self):
+ return self.reference
+
class TransactionLog(models.Model):
"""A transaction log"""
diff --git a/server/paiements/templates/paiements/transactions/list.html b/server/paiements/templates/paiements/transactions/list.html
index e76f59a..f1f722e 100644
--- a/server/paiements/templates/paiements/transactions/list.html
+++ b/server/paiements/templates/paiements/transactions/list.html
@@ -51,13 +51,13 @@
{% for elem in list %}
- {{elem.reference}} |
+ {{elem.reference}} |
{{elem.amount_chf|floatformat:"2"}} CHF |
{{elem.get_postfinance_status_display}} |
{{elem.get_internal_status_display}} |
{{elem.creation_date|date}} {{elem.creation_date|time}} ({{elem.creation_date|timesince}}) |
- {% trans "Logs" %}
+ {% trans "Logs" %}
|
{% endfor %}
diff --git a/server/paiements/templates/paiements/transactions/logs.html b/server/paiements/templates/paiements/transactions/logs.html
new file mode 100644
index 0000000..a2e56db
--- /dev/null
+++ b/server/paiements/templates/paiements/transactions/logs.html
@@ -0,0 +1,61 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% load bootstrap3 %}
+
+{% block title %}{{block.super}} :: {% trans "Transactions" %} :: {% trans "Logs" %}{% endblock %}
+
+{% block content %}
+
+
+
+{% trans "Transactions" %}
+
+
+ - {% trans "Home" %}
+ - {{object.config|safe}}
+ - {% trans "Transactions" %}
+ - {{object}}
+ - {% trans "Logs" %}
+
+
+
+
+
+
+
{% trans "Logs for" %} {{object|safe}}
+
+
+
+
+
+
+ {% trans "When" %} |
+ {% trans "What" %} |
+ {% trans "Extra data" %} |
+
+
+
+ {% for elem in list %}
+
+ {{elem.when|date}} {{elem.when|time}} ({{elem.when|timesince}} {% trans "ago" %}) |
+ {{elem.get_log_type_display}} |
+ {{elem.extra_data}} |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/server/paiements/templates/paiements/transactions/show.html b/server/paiements/templates/paiements/transactions/show.html
new file mode 100644
index 0000000..7e0629d
--- /dev/null
+++ b/server/paiements/templates/paiements/transactions/show.html
@@ -0,0 +1,135 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% load bootstrap3 %}
+
+{% block title %}{{block.super}} :: {% trans "Transactions" %} :: {% trans "Details" %}{% endblock %}
+
+{% block content %}
+
+
+
+{% trans "Transactions" %}
+
+
+ - {% trans "Home" %}
+ - {{object.config|safe}}
+ - {% trans "Transactions" %}
+ - {{object}}
+
+
+
+
+
+
+
{% trans "Details of a transaction" %}
+
+
+
+
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/server/paiements/urls.py b/server/paiements/urls.py
index be157fb..e0d610d 100644
--- a/server/paiements/urls.py
+++ b/server/paiements/urls.py
@@ -11,5 +11,7 @@
url(r'^return$', 'return_from_postfinance'),
url(r'^transactions/list$', 'transactions_list'),
+ url(r'^transactions/(?P[0-9]+)/$', 'transactions_show'),
+ url(r'^transactions/(?P[0-9]+)/logs$', 'transactions_show_logs'),
)
diff --git a/server/paiements/views.py b/server/paiements/views.py
index ed7f2e5..08188b6 100644
--- a/server/paiements/views.py
+++ b/server/paiements/views.py
@@ -15,6 +15,7 @@
from django.core.cache import cache
from django.core.urlresolvers import reverse
from django.contrib import messages
+from django.utils.translation import ugettext_lazy as _
import json
import uuid
@@ -228,7 +229,11 @@ def transactions_list(request):
configPk = available_configs[0]
if configPk != 'all' or not request.user.is_superuser:
- config = get_object_or_404(Config, pk=configPk)
+ try:
+ config = get_object_or_404(Config, pk=configPk)
+ except:
+ config = None
+
transactions = Transaction.objects.filter(config=config)
else:
transactions = Transaction.objects
@@ -237,3 +242,29 @@ def transactions_list(request):
transactions = transactions.order_by('-creation_date').all()
return render_to_response('paiements/transactions/list.html', {'list': transactions, 'available_configs': available_configs, 'configPk': configPk, 'config': config}, context_instance=RequestContext(request))
+
+
+@login_required
+def transactions_show_logs(request, pk):
+ """Show logs of transactions"""
+
+ object = get_object_or_404(Transaction, pk=pk)
+
+ if not request.user.is_superuser and not request.user in object.allowed_users:
+ raise Http404
+
+ list = object.transactionlog_set.order_by('-when').all()
+
+ return render_to_response('paiements/transactions/logs.html', {'object': object, 'list': list}, context_instance=RequestContext(request))
+
+
+@login_required
+def transactions_show(request, pk):
+ """Display details of a transaction"""
+
+ object = get_object_or_404(Transaction, pk=pk)
+
+ if not request.user.is_superuser and not request.user in object.allowed_users:
+ raise Http404
+
+ return render_to_response('paiements/transactions/show.html', {'object': object}, context_instance=RequestContext(request))
diff --git a/server/templates/base.html b/server/templates/base.html
index f675e24..7f1187a 100644
--- a/server/templates/base.html
+++ b/server/templates/base.html
@@ -76,7 +76,7 @@
-
+
diff --git a/server/tequila.py b/server/tequila.py
index a69b4eb..e9f0d8f 100644
--- a/server/tequila.py
+++ b/server/tequila.py
@@ -40,8 +40,8 @@ def authenticate(self, token=None):
return None
# Get informations about user
- firstName = re.search('\nfirstname=(.*)', data).group(1)
- name = re.search('\nname=(.*)', data).group(1)
+ firstName = re.search('\nfirstname=(.*)', data).group(1).split(',')[-1]
+ name = re.search('\nname=(.*)', data).group(1).split(',')[-1]
email = re.search('\nemail=(.*)', data).group(1)
sciper = re.search('\nuniqueid=(.*)', data).group(1)
diff --git a/server/users/views.py b/server/users/views.py
index 69ed4f8..19e42c5 100644
--- a/server/users/views.py
+++ b/server/users/views.py
@@ -15,6 +15,7 @@
from django.core.cache import cache
from django.core.urlresolvers import reverse
from django.contrib import messages
+from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User
from users.forms import UserForm
@@ -46,7 +47,7 @@ def edit(request, pk):
if form.is_valid(): # If the form is valid
object = form.save()
- messages.success(request, 'The user has been saved.')
+ messages.success(request, _('The user has been saved.'))
return redirect('users.views.list')
else:
@@ -65,9 +66,9 @@ def delete(request, pk):
# Don't delete ourself
if object.pk != request.user.pk:
object.delete()
- messages.success(request, 'User has been deleted.')
+ messages.success(request, _('User has been deleted.'))
else:
- messages.warning(request, 'You cannot delete yourself !')
+ messages.warning(request, _('You cannot delete yourself !'))
return redirect('users.views.list')