|
|
|
@ -28,6 +28,7 @@ from re2o.base import get_input_formats_help_text |
|
|
|
import inspect |
|
|
|
|
|
|
|
# Import all models in which there are classes to be filtered on |
|
|
|
import cotisations.models |
|
|
|
import machines.models |
|
|
|
import preferences.models |
|
|
|
import tickets.models |
|
|
|
@ -35,7 +36,23 @@ import topologie.models |
|
|
|
import users.models |
|
|
|
|
|
|
|
|
|
|
|
def get_classes(module): |
|
|
|
CHOICES_ACTION_TYPE = ( |
|
|
|
("users", _("Users")), |
|
|
|
("machines", _("Machines")), |
|
|
|
("subscriptions", _("Subscription")), |
|
|
|
("whitelists", _("Whitelists")), |
|
|
|
("bans", _("Bans")), |
|
|
|
("topology", _("Topology")), |
|
|
|
("all", _("All")), |
|
|
|
) |
|
|
|
|
|
|
|
CHOICES_TYPE = ( |
|
|
|
("ip", _("IPv4")), |
|
|
|
("mac", _("MAC address")), |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def all_classes(module): |
|
|
|
classes = [] |
|
|
|
|
|
|
|
for name, obj in inspect.getmembers(module): |
|
|
|
@ -45,18 +62,37 @@ def get_classes(module): |
|
|
|
return classes |
|
|
|
|
|
|
|
|
|
|
|
# Get the list of all imported classes |
|
|
|
modules = [machines.models, preferences.models, tickets.models, topologie.models, users.models] |
|
|
|
classes = sum([get_classes(m) for m in modules], []) |
|
|
|
def classes_for_action_type(action_type): |
|
|
|
"""Return the list of class names to be displayed for a |
|
|
|
given actions type filter""" |
|
|
|
if action_type == "users": |
|
|
|
return [ |
|
|
|
users.models.User.__name__, |
|
|
|
users.models.Adherent.__name__, |
|
|
|
users.models.Club.__name__, |
|
|
|
users.models.EMailAddress.__name__ |
|
|
|
] |
|
|
|
|
|
|
|
CHOICES_ACTION_TYPE = [ |
|
|
|
(str(i), classes[i]) for i in range(len(classes)) |
|
|
|
] |
|
|
|
if action_type == "machines": |
|
|
|
return [ |
|
|
|
machines.models.Machine.__name__, |
|
|
|
machines.models.Interface.__name__ |
|
|
|
] |
|
|
|
|
|
|
|
CHOICES_TYPE = ( |
|
|
|
("ip", _("IPv4")), |
|
|
|
("mac", _("MAC address")), |
|
|
|
) |
|
|
|
if action_type == "subscriptions": |
|
|
|
return all_classes(cotisations.models) |
|
|
|
|
|
|
|
if action_type == "whitelists": |
|
|
|
return [users.models.Whitelist.__name__] |
|
|
|
|
|
|
|
if action_type == "ban": |
|
|
|
return [users.models.Ban.__name__] |
|
|
|
|
|
|
|
if action_type == "topology": |
|
|
|
return all_classes(topologie.models) |
|
|
|
|
|
|
|
# "all" is a special case, just return None |
|
|
|
return None |
|
|
|
|
|
|
|
|
|
|
|
class ActionsSearchForm(Form): |
|
|
|
|