mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-22 11:23:10 +00:00
Formulaire de creation de ticket
This commit is contained in:
parent
1381433501
commit
c4259658eb
7 changed files with 103 additions and 31 deletions
|
@ -1,3 +1,4 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from .models import Ticket
|
||||||
|
admin.site.register(Ticket)
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
|
|
@ -1,27 +1,34 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.forms import ModelForm, Form
|
from django.forms import ModelForm, Form
|
||||||
|
from re2o.field_permissions import FieldPermissionFormMixin
|
||||||
|
from re2o.mixins import FormRevMixin
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from .models import(
|
from .models import(
|
||||||
Ticket
|
Ticket
|
||||||
)
|
)
|
||||||
|
|
||||||
class EditTicketForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
class EditTicketForm(FormRevMixin, ModelForm):
|
||||||
"""Formulaire d'edition d'un Ticket"""
|
"""Formulaire d'edition d'un Ticket"""
|
||||||
|
|
||||||
|
#def __init__(self,*args, **kwargs):
|
||||||
|
#prefix = kwargs.pop('prefix',self.Meta.model.__name__)
|
||||||
|
#super(EditTicketForm, self).__init__(*args, prefix=prefix, **kwargs)
|
||||||
|
#self.fields['title'].label = _("Titre du ticket")
|
||||||
|
#self.fields['decription'].label = _("Description du ticket")
|
||||||
|
#self.fields['solved'].label = _("Problème réglé ?")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Ticket
|
model = Ticket
|
||||||
exclude = ['user','assigned_staff','date']
|
exclude = ['user','assigned_staff','date']
|
||||||
|
|
||||||
def __init__(self,*args, **kwargs):
|
|
||||||
prefix = kwargs.pop('prefix',self.Meta.model.__name__)
|
|
||||||
super(EditMachineForm, self).__init__(*args, prefix=prefix, **kwargs)
|
|
||||||
self.fields['title'].label = _("Titre du ticket")
|
|
||||||
self.fields['decription'].label = _("Description du ticket")
|
|
||||||
self.field['solved'].label = _("Problème réglé ?")
|
|
||||||
|
|
||||||
|
|
||||||
|
class NewTicketForm(ModelForm):
|
||||||
class NewTicketForm(EditTicketForm):
|
|
||||||
""" Creation d'une machine"""
|
""" Creation d'une machine"""
|
||||||
class Meta(EditeTicketForm):
|
class Meta:
|
||||||
fields = '__all__'
|
model = Ticket
|
||||||
|
fields = ['title', 'description']
|
||||||
|
|
||||||
|
#def __init(self,*args, **kwargs):
|
||||||
|
#prefix = kwargs.pop('prefix', self.Meta.model.__name__)
|
||||||
|
#super(NewTicketForm, self).__init__(*args, prefix=prefix, **kwargs)
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Ticket(models.Model):
|
||||||
help_text=_("Nom du ticket"),
|
help_text=_("Nom du ticket"),
|
||||||
blank=False,
|
blank=False,
|
||||||
null=False,)
|
null=False,)
|
||||||
description = models.CharField(
|
description = models.TextField(
|
||||||
max_length=3000,
|
max_length=3000,
|
||||||
help_text=_("Description du ticket"),
|
help_text=_("Description du ticket"),
|
||||||
blank=False,
|
blank=False,
|
||||||
|
@ -25,7 +25,7 @@ class Ticket(models.Model):
|
||||||
'users.User',
|
'users.User',
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.PROTECT,
|
||||||
related_name="tickets_assigned",
|
related_name="tickets_assigned",
|
||||||
blank=False,
|
blank=True,
|
||||||
null=True)
|
null=True)
|
||||||
#categories = models.OneToManyFiled('Category')
|
#categories = models.OneToManyFiled('Category')
|
||||||
solved = models.BooleanField(default=False)
|
solved = models.BooleanField(default=False)
|
||||||
|
|
48
tickets/templates/tickets/form_ticket.html
Normal file
48
tickets/templates/tickets/form_ticket.html
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
{% extends 'machines/sidebar.html' %}
|
||||||
|
{% comment %}
|
||||||
|
Re2o est un logiciel d'administration développé initiallement au rezometz. Il
|
||||||
|
se veut agnostique au réseau considéré, de manière à être installable en
|
||||||
|
quelques clics.
|
||||||
|
|
||||||
|
Copyright © 2017 Gabriel Détraz
|
||||||
|
Copyright © 2017 Goulven Kermarec
|
||||||
|
Copyright © 2017 Augustin Lemesle
|
||||||
|
Copyright © 2017 Maël Kervella
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% load bootstrap3 %}
|
||||||
|
{% load massive_bootstrap_form %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block title %}{% trans "Ticket" %}{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2> Ouverture d'un Ticket </h2>
|
||||||
|
|
||||||
|
{% for message in messages %}
|
||||||
|
<div class="{{ message| bootstrap_message_classes }} alert-dismissable">
|
||||||
|
<button type="button" class="close" data_dismiss="alert" aria-hidden="true">}</button>
|
||||||
|
{{ message | safe }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form ticketform %}
|
||||||
|
{% bootstrap_button "Ouvrir le Ticket" button_type="submit" icon='ok' button_class='btn-success' %}
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
|
@ -5,5 +5,5 @@ from . import views
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', views.aff_tickets, name='aff-tickets'),
|
url(r'^$', views.aff_tickets, name='aff-tickets'),
|
||||||
url(r'^ticket/(?P<ticketid>[0-9]+)$', views.aff_ticket, name='aff-ticket'),
|
url(r'^ticket/(?P<ticketid>[0-9]+)$', views.aff_ticket, name='aff-ticket'),
|
||||||
url(r'^new_ticket/(?P<userid>[0-9]+)$',views.new_ticket,name='new-ticket'),
|
url(r'^new_ticket/$',views.new_ticket,name='new-ticket'),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,24 +1,35 @@
|
||||||
from django.shortcuts import render
|
from django.contrib import messages
|
||||||
|
from django.shortcuts import render, redirect
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.forms import modelformset_factory
|
||||||
|
from re2o.views import form
|
||||||
|
|
||||||
from .models import(
|
from .models import(
|
||||||
Ticket
|
Ticket
|
||||||
)
|
)
|
||||||
|
|
||||||
def new_ticket(request,user):
|
from .forms import (
|
||||||
""" Vue de création d'un ticket """
|
NewTicketForm
|
||||||
ticket = NewTicketForm(request.POST or None, user=request.user)
|
)
|
||||||
if ticket.is_valid():
|
|
||||||
new_ticket_obj = machine.save(commit=False)
|
|
||||||
nex_ticket_obj.user = user
|
|
||||||
new_machine_obj.save()
|
|
||||||
|
|
||||||
return form(
|
def new_ticket(request):
|
||||||
{
|
""" Vue de création d'un ticket """
|
||||||
'ticketform':ticket,
|
ticketform = NewTicketForm(request.POST or None)#, user=request.user)
|
||||||
},
|
|
||||||
'ticket/ticket.html',
|
if request.method == 'POST':
|
||||||
request
|
ticketform = NewTicketForm(request.POST)
|
||||||
)
|
|
||||||
|
if ticketform.is_valid():
|
||||||
|
ticket = ticketform.save(commit=False)
|
||||||
|
ticket.user = request.user
|
||||||
|
ticket.save()
|
||||||
|
messages.success(request,'Votre ticket à été ouvert. Nous vous répondront le plus rapidement possible.')
|
||||||
|
return redirect(reverse('users:profil',kwargs={'userid':str(request.user.id)}))
|
||||||
|
else:
|
||||||
|
messages.error(request, 'Formulaire invalide')
|
||||||
|
else:
|
||||||
|
ticketform = NewTicketForm
|
||||||
|
return form({'ticketform':ticketform,},'tickets/form_ticket.html',request)
|
||||||
|
|
||||||
def aff_ticket(request,ticketid):
|
def aff_ticket(request,ticketid):
|
||||||
"""Vue d'affichage d'un ticket"""
|
"""Vue d'affichage d'un ticket"""
|
||||||
|
|
|
@ -119,6 +119,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<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 class="panel-group" id="accordion">
|
<div class="panel-group" id="accordion">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading clearfix profil" data-parent="#accordion" data-toggle="collapse"
|
<div class="panel-heading clearfix profil" data-parent="#accordion" data-toggle="collapse"
|
||||||
|
|
Loading…
Reference in a new issue