def save(self, domain): try: settings = Dhis2Settings.for_domain(domain.name) if settings is None: # Create settings settings = Dhis2Settings() settings.domain = domain.name settings.dhis2 = { 'enabled': self.cleaned_data['enabled'], 'host': self.cleaned_data['host'], 'username': self.cleaned_data['username'], 'password': self.cleaned_data['password'], 'top_org_unit_name': self.cleaned_data['top_org_unit_name'], } settings.save() else: # Update settings settings.dhis2.update({ 'enabled': self.cleaned_data['enabled'], 'host': self.cleaned_data['host'], 'username': self.cleaned_data['username'], 'top_org_unit_name': self.cleaned_data['top_org_unit_name'], }) # Only update the password if it has been set if self.cleaned_data['password']: settings.dhis2['password'] = self.cleaned_data['password'] settings.save() return True except Exception as err: # TODO: What Exception? logger.error('Unable to save DHIS2 API settings: %s' % err) return False