|
|
|
@ -70,119 +70,6 @@ def index(request): |
|
|
|
}, 're2o/index.html', request) |
|
|
|
|
|
|
|
|
|
|
|
#: Binding the corresponding char sequence of history url to re2o models. |
|
|
|
HISTORY_BIND = { |
|
|
|
'users': { |
|
|
|
'user': users.models.User, |
|
|
|
'ban': users.models.Ban, |
|
|
|
'mailalias': users.models.MailAlias, |
|
|
|
'whitelist': users.models.Whitelist, |
|
|
|
'school': users.models.School, |
|
|
|
'listright': users.models.ListRight, |
|
|
|
'serviceuser': users.models.ServiceUser, |
|
|
|
'listshell': users.models.ListShell, |
|
|
|
}, |
|
|
|
'preferences': { |
|
|
|
'service': preferences.models.Service, |
|
|
|
'mailcontact': preferences.models.MailContact, |
|
|
|
}, |
|
|
|
'cotisations': { |
|
|
|
'facture': cotisations.models.Facture, |
|
|
|
'article': cotisations.models.Article, |
|
|
|
'paiement': cotisations.models.Paiement, |
|
|
|
'banque': cotisations.models.Banque, |
|
|
|
}, |
|
|
|
'topologie': { |
|
|
|
'switch': topologie.models.Switch, |
|
|
|
'port': topologie.models.Port, |
|
|
|
'room': topologie.models.Room, |
|
|
|
'stack': topologie.models.Stack, |
|
|
|
'modelswitch': topologie.models.ModelSwitch, |
|
|
|
'constructorswitch': topologie.models.ConstructorSwitch, |
|
|
|
'accesspoint': topologie.models.AccessPoint, |
|
|
|
'switchbay': topologie.models.SwitchBay, |
|
|
|
'building': topologie.models.Building, |
|
|
|
}, |
|
|
|
'machines': { |
|
|
|
'machine': machines.models.Machine, |
|
|
|
'interface': machines.models.Interface, |
|
|
|
'domain': machines.models.Domain, |
|
|
|
'machinetype': machines.models.MachineType, |
|
|
|
'iptype': machines.models.IpType, |
|
|
|
'extension': machines.models.Extension, |
|
|
|
'soa': machines.models.SOA, |
|
|
|
'mx': machines.models.Mx, |
|
|
|
'txt': machines.models.Txt, |
|
|
|
'dname': machines.models.DName, |
|
|
|
'srv': machines.models.Srv, |
|
|
|
'ns': machines.models.Ns, |
|
|
|
'service': machines.models.Service, |
|
|
|
'role': machines.models.Role, |
|
|
|
'vlan': machines.models.Vlan, |
|
|
|
'nas': machines.models.Nas, |
|
|
|
'ipv6list': machines.models.Ipv6List, |
|
|
|
'sshfingerprint': machines.models.SshFingerprint, |
|
|
|
'sshfpralgo': machines.models.SshFprAlgo, |
|
|
|
}, |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
def history(request, application, object_name, object_id): |
|
|
|
"""Render history for a model. |
|
|
|
|
|
|
|
The model is determined using the `HISTORY_BIND` dictionnary if none is |
|
|
|
found, raises a Http404. The view checks if the user is allowed to see the |
|
|
|
history using the `can_view` method of the model. |
|
|
|
|
|
|
|
Args: |
|
|
|
request: The request sent by the user. |
|
|
|
object_name: Name of the model. |
|
|
|
object_id: Id of the object you want to acces history. |
|
|
|
|
|
|
|
Returns: |
|
|
|
The rendered page of history if access is granted, else the user is |
|
|
|
redirected to their profile page, with an error message. |
|
|
|
|
|
|
|
Raises: |
|
|
|
Http404: This kind of models doesn't have history. |
|
|
|
""" |
|
|
|
try: |
|
|
|
model = HISTORY_BIND[application][object_name] |
|
|
|
except KeyError: |
|
|
|
raise Http404(u"Il n'existe pas d'historique pour ce modèle.") |
|
|
|
object_name_id = object_name + 'id' |
|
|
|
kwargs = {object_name_id: object_id} |
|
|
|
try: |
|
|
|
instance = model.get_instance(**kwargs) |
|
|
|
except model.DoesNotExist: |
|
|
|
messages.error(request, u"Entrée inexistante") |
|
|
|
return redirect(reverse( |
|
|
|
'users:profil', |
|
|
|
kwargs={'userid': str(request.user.id)} |
|
|
|
)) |
|
|
|
can, msg = instance.can_view(request.user) |
|
|
|
if not can: |
|
|
|
messages.error(request, msg or "Vous ne pouvez pas accéder à ce menu") |
|
|
|
return redirect(reverse( |
|
|
|
'users:profil', |
|
|
|
kwargs={'userid': str(request.user.id)} |
|
|
|
)) |
|
|
|
pagination_number = GeneralOption.get_cached_value('pagination_number') |
|
|
|
reversions = Version.objects.get_for_object(instance) |
|
|
|
if hasattr(instance, 'linked_objects'): |
|
|
|
for related_object in chain(instance.linked_objects()): |
|
|
|
reversions = (reversions | |
|
|
|
Version.objects.get_for_object(related_object)) |
|
|
|
reversions = re2o_paginator(request, reversions, pagination_number) |
|
|
|
return render( |
|
|
|
request, |
|
|
|
're2o/history.html', |
|
|
|
{'reversions': reversions, 'object': instance} |
|
|
|
) |
|
|
|
>>>>>>> e42b8f9... Page de contact coté utilisateur |
|
|
|
|
|
|
|
|
|
|
|
@cache_page(7 * 24 * 60 * 60) |
|
|
|
def about_page(request): |
|
|
|
""" The view for the about page. |
|
|
|
|