also sync recent user changes (#26071)

This commit is contained in:
Frédéric Péters 2018-09-07 11:19:30 +02:00
parent dd9e9977ae
commit ac3dcae4a2
1 changed files with 19 additions and 0 deletions

View File

@ -14,6 +14,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import datetime
import requests
import sys
@ -55,6 +56,24 @@ class Command(BaseCommand):
account.user.save()
OIDCAccount.objects.filter(sub__in=unknown_uuids).delete()
# update recently modified users
cut_users = OIDCProvider.objects.get(name='cut')
url = settings.CUT_API_BASE_URL + 'users/?modified__gt=%s' % (
datetime.datetime.now() - datetime.timedelta(seconds=120)).strftime('%Y-%m-%dT%H:%M:%S')
resp = requests.get(url, auth=settings.CUT_API_CREDENTIALS)
for user_dict in resp.json()['results']:
try:
account = OIDCAccount.objects.get(user__email=user_dict['email'])
except OIDCAccount.DoesNotExist:
continue
for claim in cut_users.claim_mappings.all():
setattr(account.user, claim.attribute, user_dict.get(claim.claim))
try:
setattr(account.user.attributes, claim.attribute, user_dict.get(claim.claim))
except AttributeError:
pass
account.user.save()
# get new agents
cut_agents = OIDCProvider.objects.get(name='cut-agents')