8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-23 11:53:12 +00:00

Cannonisation de l'affichage des apps optionnels sur le profil et imports conditionnels dans les urls

This commit is contained in:
Grizzly 2019-07-25 14:44:40 +00:00 committed by Gabriel Detraz
parent 7099d6d57a
commit 575e570d16
7 changed files with 53 additions and 30 deletions

View file

@ -78,7 +78,6 @@ LOCAL_APPS = (
're2o', 're2o',
'preferences', 'preferences',
'logs', 'logs',
'tickets',
) )
INSTALLED_APPS = ( INSTALLED_APPS = (
DJANGO_CONTRIB_APPS + DJANGO_CONTRIB_APPS +

View file

@ -49,6 +49,8 @@ from django.contrib import admin
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import RedirectView from django.views.generic import RedirectView
from .settings_local import OPTIONNAL_APPS
from .views import index, about_page, contact_page from .views import index, about_page, contact_page
# Admin site configuration # Admin site configuration
@ -70,7 +72,6 @@ urlpatterns = [
include('cotisations.urls', namespace='cotisations') include('cotisations.urls', namespace='cotisations')
), ),
url(r'^machines/', include('machines.urls', namespace='machines')), url(r'^machines/', include('machines.urls', namespace='machines')),
url(r'^tickets/', include('tickets.urls', namespace='tickets')),
url(r'^topologie/', include('topologie.urls', namespace='topologie')), url(r'^topologie/', include('topologie.urls', namespace='topologie')),
url(r'^logs/', include('logs.urls', namespace='logs')), url(r'^logs/', include('logs.urls', namespace='logs')),
url( url(
@ -84,6 +85,10 @@ urlpatterns = [
url(r'^admin/login/$', RedirectView.as_view(pattern_name='login')), url(r'^admin/login/$', RedirectView.as_view(pattern_name='login')),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
] ]
urlpatterns += [url(r'^{}/'.format(app), include('{}.urls'.format(app), namespace=app)) for app in OPTIONNAL_APPS]
# Add debug_toolbar URLs if activated # Add debug_toolbar URLs if activated
if 'debug_toolbar' in settings.INSTALLED_APPS: if 'debug_toolbar' in settings.INSTALLED_APPS:
import debug_toolbar import debug_toolbar

View file

@ -100,7 +100,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
{% can_view_app cotisations %} {% can_view_app cotisations %}
<li><a href="{% url 'cotisations:index' %}"><i class="fa fa-eur"></i> {% trans "Manage the subscriptions" %}</a></li> <li><a href="{% url 'cotisations:index' %}"><i class="fa fa-eur"></i> {% trans "Manage the subscriptions" %}</a></li>
{% acl_end %} {% acl_end %}
{% comment %}
<li><a href="{% url 'tickets:aff-tickets' %}"><i class="fa fa-ticket"></i> {% trans "Tickets" %}</a></li> <li><a href="{% url 'tickets:aff-tickets' %}"><i class="fa fa-ticket"></i> {% trans "Tickets" %}</a></li>
{% endcomment %}
</ul> </ul>
</li> </li>
{% acl_end %} {% acl_end %}
@ -131,7 +134,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
<ul class="dropdown-menu"> <ul class="dropdown-menu">
<li><a href="{% url 'about' %}"><i class="fa fa-info-circle"></i> {% trans "About" %}</a></li> <li><a href="{% url 'about' %}"><i class="fa fa-info-circle"></i> {% trans "About" %}</a></li>
<li><a href="{% url 'contact' %}"><i class="fa fa-at"></i> {% trans "Contact" %}</a></li> <li><a href="{% url 'contact' %}"><i class="fa fa-at"></i> {% trans "Contact" %}</a></li>
{% comment %}
<li><a href="{% url 'tickets:new-ticket' %}"><i class="fa fa-ticket"></i> {% trans "Ouvrir un ticket" %}</a><li> <li><a href="{% url 'tickets:new-ticket' %}"><i class="fa fa-ticket"></i> {% trans "Ouvrir un ticket" %}</a><li>
{% endcomment %}
</ul> </ul>
</li> </li>
{% if not request.user.is_authenticated %} {% if not request.user.is_authenticated %}

View file

@ -0,0 +1,23 @@
{% load i18n %}
<div class="panel panel-default">
<div class="panel-heading clearfix profil" data-parent="#accordion" data-toggle="collapse" data-target="#ticket">
<h3 class="panel-title pull-left">
<i class="fa fa-ticket"></i>{% trans " Tickets" %}
</h3>
</div>
<div id="ticket" class="panel-collapse collapse">
<div class="panel-body">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'tickets:new-ticket' %}">
<i class="fa fa-ticket"></i>{% trans " Open a Ticket" %}
</a>
</div>
<div class="panel-body">
{% if tickets_list %}
{% include 'tickets/aff_tickets.html' with tickets_list=tickets_list %}
{% else %}
<p>{% trans "No tickets" %}</p>
{% endif %}
</div>
</div>
</div>

View file

@ -1,5 +1,6 @@
from django.contrib import messages from django.contrib import messages
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from django.template.loader import render_to_string
from django.urls import reverse from django.urls import reverse
from django.forms import modelformset_factory from django.forms import modelformset_factory
from re2o.views import form from re2o.views import form
@ -50,3 +51,8 @@ def aff_tickets(request):
tickets = Ticket.objects.all().order_by('-date') tickets = Ticket.objects.all().order_by('-date')
return render(request,'tickets/index.html', return render(request,'tickets/index.html',
{'tickets_list':tickets}) {'tickets_list':tickets})
def profil(request,user):
""" Vue cannonique d'affichage des tickets dans l'accordeon du profil"""
tickets = Ticket.objects.filter(user=user).all().order_by('-date')
context = {'tickets_list':tickets}
return render_to_string('tickets/profil.html', context=context, request=request, using=None)

View file

@ -528,27 +528,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default">
<div class="panel-heading clearfix profil" data-parent="#accordion" data-toggle="collapse" data-target="#ticket"> {% for template in optionnal_templates_list %}
<h3 class="panel-title pull-left"> {{ template }}
<i class="fa fa-ticket"></i>{% trans " Tickets" %} {% endfor %}
</h3>
</div>
<div id="ticket" class="panel-collapse collapse">
<div class="panel-body">
<a class="btn btn-primary btn-sm" role="button" href="{% url 'tickets:new-ticket' %}">
<i class="fa fa-ticket"></i>{% trans " Open a Ticket" %}
</a>
</div>
<div class="panel-body">
{% if tickets_list %}
{% include 'tickets/aff_tickets.html' with tickets_list=tickets_list %}
{% else %}
<p>{% trans "No tickets" %}</p>
{% endif %}
</div>
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View file

@ -47,6 +47,7 @@ from django.http import HttpResponse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from django.template import loader
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
from reversion import revisions as reversion from reversion import revisions as reversion
@ -54,10 +55,9 @@ from reversion import revisions as reversion
from cotisations.models import Facture, Paiement from cotisations.models import Facture, Paiement
from machines.models import Machine from machines.models import Machine
# A IMPORTER SOUS CONDITION QUE TICKET SOIT INSTALLED
from tickets.models import Ticket
from preferences.models import OptionalUser, GeneralOption, AssoOption from preferences.models import OptionalUser, GeneralOption, AssoOption
from importlib import import_module
from re2o.settings_local import OPTIONNAL_APPS
from re2o.views import form from re2o.views import form
from re2o.utils import ( from re2o.utils import (
all_has_access, all_has_access,
@ -978,8 +978,10 @@ def profil(request, users, **_kwargs):
request.GET.get('order'), request.GET.get('order'),
SortTable.MACHINES_INDEX SortTable.MACHINES_INDEX
) )
tickets = Ticket.objects.filter(user=users).all().order_by('-date')
nb_tickets = tickets.count() optionnal_apps = [import_module(app) for app in OPTIONNAL_APPS]
optionnal_templates_list = [app.views.profil(request,users) for app in optionnal_apps]
pagination_large_number = GeneralOption.get_cached_value( pagination_large_number = GeneralOption.get_cached_value(
'pagination_large_number' 'pagination_large_number'
) )
@ -1022,8 +1024,7 @@ def profil(request, users, **_kwargs):
'users': users, 'users': users,
'machines_list': machines, 'machines_list': machines,
'nb_machines': nb_machines, 'nb_machines': nb_machines,
'tickets_list': tickets, 'optionnal_templates_list': optionnal_templates_list,
'nb_tickets': nb_tickets,
'facture_list': factures, 'facture_list': factures,
'ban_list': bans, 'ban_list': bans,
'white_list': whitelists, 'white_list': whitelists,