Query on user name in definition query

3850
2
09-16-2015 08:39 AM
David_van_Riel
New Contributor III

Hi All,

I want an ArcMap definition query so that the layer only shows features based off of what the computer login user name is.

I have a field named USERNAME that would contain different user names.  Then I would use the definition query to only show and label those features that have the same computer login name.  For example: USERNAME = SYSTEM_USER.

I can get user name and PC name to label using Python but I want to query on user name and that uses SQL.

Can it be done?

Thanks,

David

2 Replies
MahtabAlam1
Occasional Contributor

I am afraid this can't be done as SQL expression doesn't support advanced syntax like label expressions.

But you could write a simple python addin extension A Python Addin Extension

Which can be used to apply to definition query to your layer something like below:

import arcpy
import pythonaddins
import getpass


class ExtensionClass1(object):
    """Implementation for pyaddins_addin.extension2 (Extension)"""
    def __init__(self):
        # For performance considerations, please remove all unused methods in this class.
        self.enabled = True
    def startup(self):
        pass


    def applyDefQuery(self):


        lyr = arcpy.mapping.ListLayers(arcpy.mapping.MapDocument("CURRENT"))[0]
        if lyr.supports("DEFINITIONQUERY"): 
            lyr.definitionQuery = "USERNAME='{0}'".format(getpass.getuser().upper())
            arcpy.RefreshActiveView()
            
        return
    
    def newDocument(self):


        self.applyDefQuery()
        return   
            
    def openDocument(self):
        self.applyDefQuery()
        return 
MichaelRobb
Occasional Contributor III

Do you think this is doable in the web world?  (Using ArcGIS Server -- Web application builder) ?  thoughts?

my initial thought is that this sounds like a job for SOIs...

0 Kudos