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
9a292d38
Commit
9a292d38
authored
Nov 02, 2017
by
Maël Kervella
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pep8 et pylint
parent
439b0fb3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
44 deletions
+42
-44
search/admin.py
search/admin.py
+2
-2
search/forms.py
search/forms.py
+6
-0
search/urls.py
search/urls.py
+2
-0
search/views.py
search/views.py
+32
-42
No files found.
search/admin.py
View file @
9a292d38
...
...
@@ -21,8 +21,8 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from
__future__
import
unicode_literals
"""The field used in the admin view for the search app"""
from
django.contrib
import
admin
from
__future__
import
unicode_literals
# Register your models here.
search/forms.py
View file @
9a292d38
...
...
@@ -20,6 +20,8 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""The forms used by the search app"""
from
__future__
import
unicode_literals
from
django
import
forms
...
...
@@ -44,14 +46,18 @@ CHOICES_AFF = (
def
initial_choices
(
c
):
"""Return the choices that should be activated by default for a
given set of choices"""
return
[
i
[
0
]
for
i
in
c
]
class
SearchForm
(
Form
):
"""The form for a simple search"""
q
=
forms
.
CharField
(
label
=
'Search'
,
max_length
=
100
)
class
SearchFormPlus
(
Form
):
"""The form for an advanced search (with filters)"""
q
=
forms
.
CharField
(
label
=
'Search'
,
max_length
=
100
,
...
...
search/urls.py
View file @
9a292d38
...
...
@@ -20,6 +20,8 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
"""The urls used by the search app"""
from
__future__
import
unicode_literals
from
django.conf.urls
import
url
...
...
search/views.py
View file @
9a292d38
...
...
@@ -20,21 +20,19 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# App de recherche pour re2o
# Augustin lemesle, Gabriel Détraz, Goulven Kermarec
# Gplv2
"""The views for the search app, responsible for finding the matches
Augustin lemesle, Gabriel Détraz, Goulven Kermarec, Maël Kervella
Gplv2"""
from
__future__
import
unicode_literals
from
django.shortcuts
import
render
from
django.shortcuts
import
get_object_or_404
from
django.template.context_processors
import
csrf
from
django.template
import
Context
,
RequestContext
,
loader
from
django.contrib.auth.decorators
import
login_required
from
django.db.models
import
Q
from
users.models
import
User
,
Ban
,
Whitelist
from
machines.models
import
Machine
,
Interface
from
machines.models
import
Machine
from
topologie.models
import
Port
,
Switch
,
Room
from
cotisations.models
import
Facture
from
preferences.models
import
GeneralOption
...
...
@@ -72,36 +70,24 @@ def get_results(query, request, filters={}):
user_state
=
filters
.
get
(
'u'
,
initial_choices
(
CHOICES_USER
))
aff
=
filters
.
get
(
'a'
,
initial_choices
(
CHOICES_AFF
))
options
,
created
=
GeneralOption
.
objects
.
get_or_create
()
options
,
_
=
GeneralOption
.
objects
.
get_or_create
()
max_result
=
options
.
search_display_page
user_state_filter
=
Q
()
for
s
in
user_state
:
user_state_filter
|=
Q
(
state
=
s
)
connexion
=
[]
for
state
in
user_state
:
user_state_filter
|=
Q
(
state
=
state
)
results
=
{
'users_list'
:
User
.
objects
.
none
(),
'machines_list'
:
Machine
.
objects
.
none
(),
'factures_list'
:
Facture
.
objects
.
none
(),
'bans_list'
:
Ban
.
objects
.
none
(),
'machines_list'
:
Machine
.
objects
.
none
(),
'factures_list'
:
Facture
.
objects
.
none
(),
'bans_list'
:
Ban
.
objects
.
none
(),
'whitelists_list'
:
Whitelist
.
objects
.
none
(),
'rooms_list'
:
Room
.
objects
.
none
(),
'switch_ports_list'
:
Port
.
objects
.
none
(),
'switches_list'
:
Switch
.
objects
.
none
()
}
users_filter
=
Q
(
user__pseudo__icontains
=
query
)
|
Q
(
user__adherent__name__icontains
=
query
)
|
Q
(
user__surname__icontains
=
query
)
if
not
request
.
user
.
has_perms
((
'cableur'
,)):
users_filter
&=
Q
(
user
=
request
.
user
)
# Users
if
'0'
in
aff
:
filter_user_list
=
Q
(
...
...
@@ -155,9 +141,9 @@ def get_results(query, request, filters={}):
filter_facture_list
=
Q
(
user__pseudo__icontains
=
query
)
if
start
!=
None
:
if
start
is
not
None
:
filter_facture_list
&=
Q
(
date__gte
=
start
)
if
end
!=
None
:
if
end
is
not
None
:
filter_facture_list
&=
Q
(
date__lte
=
end
)
results
[
'factures_list'
]
=
Facture
.
objects
.
filter
(
filter_facture_list
)
results
[
'factures_list'
]
=
SortTable
.
sort
(
...
...
@@ -174,7 +160,7 @@ def get_results(query, request, filters={}):
)
|
Q
(
raison__icontains
=
query
)
if
start
!=
None
:
if
start
is
not
None
:
date_filter
&=
(
Q
(
date_start__gte
=
start
)
&
Q
(
date_end__gte
=
start
)
)
|
(
...
...
@@ -182,7 +168,7 @@ def get_results(query, request, filters={}):
)
|
(
Q
(
date_start__gte
=
start
)
&
Q
(
date_end__lte
=
start
)
)
if
end
!=
None
:
if
end
is
not
None
:
date_filter
&=
(
Q
(
date_start__lte
=
end
)
&
Q
(
date_end__lte
=
end
)
)
|
(
...
...
@@ -205,7 +191,7 @@ def get_results(query, request, filters={}):
)
|
Q
(
raison__icontains
=
query
)
if
start
!=
None
:
if
start
is
not
None
:
date_filter
&=
(
Q
(
date_start__gte
=
start
)
&
Q
(
date_end__gte
=
start
)
)
|
(
...
...
@@ -213,7 +199,7 @@ def get_results(query, request, filters={}):
)
|
(
Q
(
date_start__gte
=
start
)
&
Q
(
date_end__lte
=
start
)
)
if
end
!=
None
:
if
end
is
not
None
:
date_filter
&=
(
Q
(
date_start__lte
=
end
)
&
Q
(
date_end__lte
=
end
)
)
|
(
...
...
@@ -248,7 +234,7 @@ def get_results(query, request, filters={}):
# Switch ports
if
'6'
in
aff
and
request
.
user
.
has_perms
((
'cableur'
,)):
filter_
switch_
ports_list
=
Q
(
filter_ports_list
=
Q
(
room__name__icontains
=
query
)
|
Q
(
machine_interface__domain__name__icontains
=
query
...
...
@@ -262,10 +248,10 @@ def get_results(query, request, filters={}):
details__icontains
=
query
)
if
is_int
(
query
):
filter_
switch_
ports_list
|=
Q
(
filter_ports_list
|=
Q
(
port
=
query
)
results
[
'switch_ports_list'
]
=
Port
.
objects
.
filter
(
filter_
switch_
ports_list
)
results
[
'switch_ports_list'
]
=
Port
.
objects
.
filter
(
filter_ports_list
)
results
[
'switch_ports_list'
]
=
SortTable
.
sort
(
results
[
'switch_ports_list'
],
request
.
GET
.
get
(
'col'
),
...
...
@@ -275,7 +261,7 @@ def get_results(query, request, filters={}):
# Switches
if
'7'
in
aff
and
request
.
user
.
has_perms
((
'cableur'
,)):
filter_switches
=
Q
(
filter_switches
_list
=
Q
(
switch_interface__domain__name__icontains
=
query
)
|
Q
(
switch_interface__ipv4__ipv4__icontains
=
query
...
...
@@ -291,12 +277,12 @@ def get_results(query, request, filters={}):
details__icontains
=
query
)
if
is_int
(
query
):
filter_switch
_port
s_list
|=
Q
(
filter_switch
e
s_list
|=
Q
(
number
=
query
)
|
Q
(
stack_member_id
=
query
)
results
[
'switches_list'
]
=
Switch
.
objects
.
filter
(
filter_switches
)
results
[
'switches_list'
]
=
Switch
.
objects
.
filter
(
filter_switches
_list
)
results
[
'switches_list'
]
=
SortTable
.
sort
(
results
[
'switches_list'
],
request
.
GET
.
get
(
'col'
),
...
...
@@ -304,16 +290,18 @@ def get_results(query, request, filters={}):
SortTable
.
TOPOLOGIE_INDEX
)
for
r
in
results
.
key
s
():
results
[
r
]
=
results
[
r
]
.
distinct
()[:
max_result
]
for
name
,
val
in
results
.
item
s
():
results
[
name
]
=
val
.
distinct
()[:
max_result
]
results
.
update
({
'max_result'
:
max_result
})
results
.
update
({
'search_term'
:
query
})
return
results
@
login_required
def
search
(
request
):
""" La page de recherche standard """
search_form
=
SearchForm
(
request
.
GET
or
None
)
if
search_form
.
is_valid
():
return
render
(
...
...
@@ -325,10 +313,12 @@ def search(request):
search_form
.
cleaned_data
)
)
return
render
(
request
,
'search/search.html'
,
{
'search_form'
:
search_form
})
return
render
(
request
,
'search/search.html'
,
{
'search_form'
:
search_form
})
@
login_required
def
searchp
(
request
):
""" La page de recherche avancée """
search_form
=
SearchFormPlus
(
request
.
GET
or
None
)
if
search_form
.
is_valid
():
return
render
(
...
...
@@ -340,4 +330,4 @@ def searchp(request):
search_form
.
cleaned_data
)
)
return
render
(
request
,
'search/search.html'
,
{
'search_form'
:
search_form
})
return
render
(
request
,
'search/search.html'
,
{
'search_form'
:
search_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