Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for intranet.apps.files.models
from django.contrib.auth.models import Group as DjangoGroup
from django.db import models
from django.db.models import Manager , Q
"""
Sample TJ configuration:
Host.objects.create(name="Computer Systems Lab",
code="csl",
address="remote.tjhsst.edu",
linux=True)
afs = Host.objects.create(name="CSL AFS Root",
code="afs",
address="remote.tjhsst.edu",
directory="/afs/csl/",
linux=True,
available_to_all=True)
afs.groups_visible.add(Group.objects.get(name="admin_all"))
"""
[docs] class HostManager ( Manager ):
[docs] def visible_to_user ( self , user ):
"""Get a list of hosts available to a given user.
Same logic as Announcements and Events.
"""
return Host . objects . filter ( Q ( groups_visible__in = user . groups . all ()) | Q ( groups_visible__isnull = True )) . distinct ()
[docs] class Host ( models . Model ):
objects = HostManager ()
name = models . CharField ( max_length = 255 )
code = models . CharField ( max_length = 32 )
address = models . CharField ( max_length = 255 )
directory = models . CharField ( max_length = 255 , blank = True )
windows = models . BooleanField ( default = False )
linux = models . BooleanField ( default = False )
groups_visible = models . ManyToManyField ( DjangoGroup , blank = True )
available_to_all = models . BooleanField ( default = False )
def visible_to ( self , user ):
if self . groups_visible . count () == 0 :
return True
return self in Host . objects . visible_to_user ( user )
def __str__ ( self ):
return f " { self . name } ( { self . code } )"
class Meta :
ordering = [ "-linux" , "name" ]