示例#1
0
 def perform_update(self, serializer):
     settings_qs = self.get_queryset()
     user = self.request.user if self.category_slug == 'user' else None
     settings_change_list = []
     for key, value in serializer.validated_data.items():
         if key == 'LICENSE' or settings_registry.is_setting_read_only(key):
             continue
         if settings_registry.is_setting_encrypted(key) and \
                 isinstance(value, str) and \
                 value.startswith('$encrypted$'):
             continue
         setattr(serializer.instance, key, value)
         setting = settings_qs.filter(key=key).order_by('pk').first()
         if not setting:
             setting = Setting.objects.create(key=key,
                                              user=user,
                                              value=value)
             settings_change_list.append(key)
         elif setting.value != value:
             setting.value = value
             setting.save(update_fields=['value'])
             settings_change_list.append(key)
     if settings_change_list:
         connection.on_commit(
             lambda: handle_setting_changes.delay(settings_change_list))
示例#2
0
文件: views.py 项目: zhangtiny123/awx
    def perform_destroy(self, instance):
        settings_change_list = []
        for setting in self.get_queryset().exclude(key='LICENSE'):
            if settings_registry.get_setting_field(setting.key).read_only:
                continue
            setting.delete()
            settings_change_list.append(setting.key)
        if settings_change_list and 'migrate_to_database_settings' not in sys.argv:
            handle_setting_changes.delay(settings_change_list)

        # When TOWER_URL_BASE is deleted from the API, reset it to the hostname
        # used to make the request as a default.
        if hasattr(instance, 'TOWER_URL_BASE'):
            url = '{}://{}'.format(self.request.scheme,
                                   self.request.get_host())
            if settings.TOWER_URL_BASE != url:
                settings.TOWER_URL_BASE = url