Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
re2o
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
re2o
Commits
50945f0d
Commit
50945f0d
authored
Jul 04, 2016
by
Dalahro
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Ajout de la recherche avancée
parent
6e811ca3
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
98 additions
and
29 deletions
+98
-29
search/models.py
search/models.py
+20
-1
search/templates/search/index.html
search/templates/search/index.html
+6
-2
search/templates/search/search.html
search/templates/search/search.html
+6
-1
search/templates/search/sidebar.html
search/templates/search/sidebar.html
+2
-10
search/urls.py
search/urls.py
+1
-0
search/views.py
search/views.py
+62
-15
templates/base.html
templates/base.html
+1
-0
No files found.
search/models.py
View file @
50945f0d
...
...
@@ -12,8 +12,27 @@ CHOICES = (
(
'2'
,
'Archivés'
),
)
CHOICES2
=
(
(
1
,
'Active'
),
(
""
,
'Désactivée'
),
)
CHOICES3
=
(
(
'0'
,
'Utilisateurs'
),
(
'1'
,
'Machines'
),
(
'2'
,
'Factures'
),
(
'3'
,
'Bannissements'
),
(
'4'
,
'Accès à titre gracieux'
),
)
class
SearchForm
(
Form
):
search_field
=
forms
.
CharField
(
label
=
'Search'
,
max_length
=
100
)
class
SearchFormPlus
(
Form
):
search_field
=
forms
.
CharField
(
label
=
'Search'
,
max_length
=
100
,
required
=
False
)
filtre
=
forms
.
MultipleChoiceField
(
label
=
"Filtre utilisateur"
,
required
=
False
,
widget
=
forms
.
CheckboxSelectMultiple
,
choices
=
CHOICES
)
filtre
=
forms
.
MultipleChoiceField
(
label
=
"Filtre utilisateurs"
,
required
=
False
,
widget
=
forms
.
CheckboxSelectMultiple
,
choices
=
CHOICES
)
connexion
=
forms
.
MultipleChoiceField
(
label
=
"Filtre connexion"
,
required
=
False
,
widget
=
forms
.
CheckboxSelectMultiple
,
choices
=
CHOICES2
)
affichage
=
forms
.
MultipleChoiceField
(
label
=
"Filtre affichage"
,
required
=
False
,
widget
=
forms
.
CheckboxSelectMultiple
,
choices
=
CHOICES3
)
date_deb
=
forms
.
DateField
(
required
=
False
,
label
=
"Date de début"
,
help_text
=
'DD/MM/YYYY'
,
input_formats
=
[
'%d/%m/%Y'
])
date_fin
=
forms
.
DateField
(
required
=
False
,
help_text
=
'DD/MM/YYYY'
,
input_formats
=
[
'%d/%m/%Y'
],
label
=
"Date de fin"
)
search/templates/search/index.html
View file @
50945f0d
{% extends "
users
/sidebar.html" %}
{% extends "
search
/sidebar.html" %}
{% load bootstrap3 %}
{% block title %}Résultats de la recherche{% endblock %}
...
...
@@ -16,11 +16,15 @@
<h2>
Résultats dans les factures :
</h2>
{% include "cotisations/aff_cotisations.html" with facture_list=facture_list %}
{% endif %}
{% if white_list %}
<h2>
Résultats dans les accès à titre gracieux :
</h2>
{% include "users/aff_whitelists.html" with white_list=white_list %}
{% endif %}
{% if ban_list %}
<h2>
Résultats dans les banissements :
</h2>
{% include "users/aff_bans.html" with ban_list=ban_list %}
{% endif %}
{% if not ban_list and not machine_list and not users_list and not facture_list%}
{% if not ban_list and not machine_list and not users_list and not facture_list
and not white_list
%}
<h3>
Aucun résultat
</h3>
{% endif %}
<br
/>
...
...
search/templates/search/search.html
View file @
50945f0d
{% extends "
users
/sidebar.html" %}
{% extends "
search
/sidebar.html" %}
{% load bootstrap3 %}
{% block title %}Recherche{% endblock %}
...
...
@@ -11,4 +11,9 @@
{% bootstrap_form searchform %}
{% bootstrap_button "Search" button_type="submit" icon="search" %}
</form>
<br
/>
<br
/>
<br
/>
<br
/>
<br
/>
{% endblock %}
search/templates/search/sidebar.html
View file @
50945f0d
{% extends "base.html" %}
{% block sidebar %}
<p><a
href=
"{% url "
users:new-user
"
%}"
>
Créer un adhérent
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Editer un adhérent
</a></p>
<p><a
href=
"{% url "
users:index
"
%}"
>
Liste des adhérents
</a></p>
<p><a
href=
"{% url "
users:add-right
"
%}"
>
Ajouter un droit rezo
</a></p>
<p><a
href=
"{% url "
users:del-right
"
%}"
>
Retirer un droit rezo
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Ajouter un bannissement
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Gérer les bannissements
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Créer une facture
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Editer une facture
</a></p>
<p><a
href=
"{% url "
cotisations:index
"
%}"
>
Liste des factures
</a></p>
<p><a
href=
"{% url "
search:search
"
%}"
>
Recherche simple
</a></p>
<p><a
href=
"{% url "
search:searchp
"
%}"
>
Recherche avancée
</a></p>
{% endblock %}
search/urls.py
View file @
50945f0d
...
...
@@ -4,4 +4,5 @@ from . import views
urlpatterns
=
[
url
(
r
'^$'
,
views
.
search
,
name
=
'search'
),
url
(
r
'^avance/$'
,
views
.
searchp
,
name
=
'searchp'
),
]
search/views.py
View file @
50945f0d
...
...
@@ -7,10 +7,10 @@ from django.core.context_processors import csrf
from
django.template
import
Context
,
RequestContext
,
loader
from
django.db.models
import
Q
from
users.models
import
User
,
Ban
from
users.models
import
User
,
Ban
,
Whitelist
from
machines.models
import
Machine
,
Interface
from
cotisations.models
import
Facture
from
search.models
import
SearchForm
from
search.models
import
SearchForm
,
SearchFormPlus
from
users.views
import
has_access
def
form
(
ctx
,
template
,
request
):
...
...
@@ -18,25 +18,72 @@ def form(ctx, template, request):
c
.
update
(
csrf
(
request
))
return
render_to_response
(
template
,
c
,
context_instance
=
RequestContext
(
request
))
def
search
(
request
):
if
request
.
method
==
'POST'
:
search
=
SearchForm
(
request
.
POST
or
None
)
if
search
.
is_valid
():
states
=
search
.
cleaned_data
[
'filtre'
]
search
=
search
.
cleaned_data
[
'search_field'
]
query
=
Q
()
for
s
in
states
:
query
=
query
|
Q
(
state
=
s
)
def
search_result
(
search
,
type
):
date_deb
=
None
date_fin
=
None
states
=
[]
co
=
[]
aff
=
[
0
,
1
,
2
,
3
,
4
]
if
(
type
):
aff
=
search
.
cleaned_data
[
'affichage'
]
co
=
search
.
cleaned_data
[
'connexion'
]
states
=
search
.
cleaned_data
[
'filtre'
]
date_deb
=
search
.
cleaned_data
[
'date_deb'
]
date_fin
=
search
.
cleaned_data
[
'date_fin'
]
date_query
=
Q
()
if
aff
==
[]:
aff
=
[
0
,
1
,
2
,
3
,
4
]
if
date_deb
!=
None
:
date_query
=
date_query
&
Q
(
date__gte
=
date_deb
)
if
date_fin
!=
None
:
date_query
=
date_query
&
Q
(
date__lte
=
date_fin
)
search
=
search
.
cleaned_data
[
'search_field'
]
query
=
Q
()
for
s
in
states
:
query
=
query
|
Q
(
state
=
s
)
users
=
None
machines
=
None
factures
=
None
bans
=
None
whitelists
=
None
connexion
=
[]
for
i
in
aff
:
if
i
==
'0'
:
users
=
User
.
objects
.
filter
((
Q
(
pseudo__icontains
=
search
)
|
Q
(
name__icontains
=
search
)
|
Q
(
surname__icontains
=
search
))
&
query
)
connexion
=
[]
for
user
in
users
:
connexion
.
append
([
user
,
has_access
(
user
)])
query
=
Q
(
user__pseudo__icontains
=
search
)
|
Q
(
user__name__icontains
=
search
)
|
Q
(
user__surname__icontains
=
search
)
access
=
has_access
(
user
)
if
(
len
(
co
)
==
0
or
(
len
(
co
)
==
1
and
bool
(
co
[
0
])
==
access
)
or
(
len
(
co
)
==
2
and
(
bool
(
co
[
0
])
==
access
or
bool
(
co
[
1
])
==
access
))):
connexion
.
append
([
user
,
access
])
query
=
Q
(
user__pseudo__icontains
=
search
)
|
Q
(
user__name__icontains
=
search
)
|
Q
(
user__surname__icontains
=
search
)
if
i
==
'1'
:
machines
=
Interface
.
objects
.
filter
(
machine
=
Machine
.
objects
.
filter
(
query
))
|
Interface
.
objects
.
filter
(
Q
(
dns__icontains
=
search
))
factures
=
Facture
.
objects
.
filter
(
query
)
if
i
==
'2'
:
factures
=
Facture
.
objects
.
filter
(
query
&
date_query
)
if
i
==
'3'
:
bans
=
Ban
.
objects
.
filter
(
query
)
return
form
({
'users_list'
:
connexion
,
'machine_list'
:
machines
,
'facture_list'
:
factures
,
'ban_list'
:
bans
},
'search/index.html'
,
request
)
if
i
==
'4'
:
whitelists
=
Whitelist
.
objects
.
filter
(
query
)
return
{
'users_list'
:
connexion
,
'machine_list'
:
machines
,
'facture_list'
:
factures
,
'ban_list'
:
bans
,
'white_list'
:
whitelists
}
def
search
(
request
):
if
request
.
method
==
'POST'
:
search
=
SearchForm
(
request
.
POST
or
None
)
if
search
.
is_valid
():
return
form
(
search_result
(
search
,
False
),
'search/index.html'
,
request
)
return
form
({
'searchform'
:
search
},
'search/search.html'
,
request
)
else
:
search
=
SearchForm
(
request
.
POST
or
None
)
return
form
({
'searchform'
:
search
},
'search/search.html'
,
request
)
def
searchp
(
request
):
if
request
.
method
==
'POST'
:
search
=
SearchFormPlus
(
request
.
POST
or
None
)
if
search
.
is_valid
():
return
form
(
search_result
(
search
,
True
),
'search/index.html'
,
request
)
return
form
({
'searchform'
:
search
},
'search/search.html'
,
request
)
else
:
search
=
SearchFormPlus
(
request
.
POST
or
None
)
return
form
({
'searchform'
:
search
},
'search/search.html'
,
request
)
templates/base.html
View file @
50945f0d
...
...
@@ -40,6 +40,7 @@
<input
type=
"text"
class=
"form-control"
placeholder=
"Search"
name=
"search_field"
id=
"search-term"
>
<div
class=
"input-group-btn"
>
<button
class=
"btn btn-default"
type=
"submit"
><i
class=
"glyphicon glyphicon-search"
></i></button>
<a
href=
"{% url "
search:searchp
"
%}"
class=
"btn btn-default"
role=
"button"
><i
class=
"glyphicon glyphicon-plus"
></i></a>
</div>
</div>
</form>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment