def instance(cls): if cls._instance is None: # Call startup() to fill UserProfiles also in a # multi-threaded environment: settings.SITE.startup() cls._instance = AnonymousUser() from lino.modlib.users.choicelists import UserProfiles cls._instance.profile = UserProfiles.get_by_value( settings.SITE.anonymous_user_profile, None) if cls._instance.profile is None: raise Exception( "Invalid value %r for `SITE.anonymous_user_profile`. " "Must be one of %s" % ( settings.SITE.anonymous_user_profile, [i.value for i in UserProfiles.items()])) return cls._instance
def setup_user_profiles(self): """ Defines application-specific default user profiles. Local site administrators can override this in their :xfile:. """ from lino.modlib.users.choicelists import UserProfiles from django.utils.translation import ugettext_lazy as _ UserProfiles.reset('* office accounts') add = UserProfiles.add_item add('000', _("Anonymous"), '_ _ _', 'anonymous', readonly=True, authenticated=False) add('100', _("User"), 'U U U', 'user') add('900', _("Administrator"), 'A A A', 'admin')
def get_user_profiles(cls): """Yield a series of all user profiles on this site which satisfy this role. """ from lino.modlib.users.choicelists import UserProfiles for p in UserProfiles.items(): if p.has_required_roles([cls]): yield p
def visible_for(ba): """Shows a list of user profiles for which this action is visible.""" if ba is None: return "N/A" visible = [] hidden = [] for p in UserProfiles.objects(): name = p.name or p.value if ba.get_view_permission(p): visible.append(name) else: hidden.append(name) if len(hidden) == 0: return "all" if len(visible) == 0: return "nobody" # if len(hidden) < len(visible): # return "all except %s" % ', '.join(hidden) return ' '.join(visible)
e.g. :mod:`lino.projects.polly`. """ from django.utils.translation import ugettext_lazy as _ from lino.core.roles import UserRole, SiteUser, SiteAdmin class PollsUser(SiteUser): """A user who has access to polls functionality. """ class PollsStaff(PollsUser): """A user who manages configuration of polls functionality. """ class PollsAdmin(PollsStaff, SiteAdmin): pass from lino.modlib.users.choicelists import UserProfiles UserProfiles.clear() add = UserProfiles.add_item add('000', _("Anonymous"), UserRole, name='anonymous', readonly=True) add('100', _("User"), PollsUser, name='user') add('900', _("Administrator"), PollsAdmin, name='admin')
#~ def setup_handle(self,lh): #~ lh.config.label = _("Site Parameters") #~ lh.about.label = _("About") class SiteConfigs(dd.Table): """ The table used to present the :class:`SiteConfig` row in a Detail form. See also :meth:`lino.Lino.get_site_config`. Deserves more documentation. """ model = 'system.SiteConfig' required_roles = dd.required(SiteStaff) default_action = actions.ShowDetailAction() #~ has_navigator = False hide_top_toolbar = True #~ can_delete = perms.never detail_layout = """ default_build_method # lino.ModelsBySite """ do_build = BuildSiteCache() if settings.SITE.user_model == 'auth.User': dd.inject_field(settings.SITE.user_model, 'profile', UserProfiles.field()) dd.inject_field(settings.SITE.user_model, 'language', dd.LanguageField())
""" from django.utils.translation import ugettext_lazy as _ from lino.core.roles import UserRole, SiteUser, SiteAdmin class PollsUser(SiteUser): """A user who has access to polls functionality. """ class PollsStaff(PollsUser): """A user who manages configuration of polls functionality. """ class PollsAdmin(PollsStaff, SiteAdmin): pass from lino.modlib.users.choicelists import UserProfiles UserProfiles.clear() add = UserProfiles.add_item add('000', _("Anonymous"), UserRole, name='anonymous', readonly=True) add('100', _("User"), PollsUser, name='user') add('900', _("Administrator"), PollsAdmin, name='admin')