def test_edit_hidden02(self): "Hidden => not editable (value=False)" self.login() sk = SettingKey( id='persons-test_edit_hidden02', description='Display logo ?', app_label='persons', type=SettingKey.BOOL, hidden=True, ) setting_key_registry.register(sk) # sv = SettingValue.objects.create(key=sk, value=False) sv = SettingValue(key=sk) sv.value = False sv.save() # self.assertGET404(self._build_edit_url(sv)) self.assertGET409(self._build_edit_url(sv))
def test_edit_hour(self): self.login() sk = SettingKey( id='persons-test_edit_hour', description='Reminder hour', app_label='persons', type=SettingKey.HOUR, ) setting_key_registry.register(sk) hour = 11 sv = SettingValue(key=sk) sv.value = hour sv.save() url = self._build_edit_url(sv) hour += 1 self.assertNoFormError(self.client.post(url, data={'value': hour})) self.assertEqual(hour, self.refresh(sv).value) response = self.assertPOST200(url, data={'value': 24}) self.assertFormError( response, 'form', 'value', _('Ensure this value is less than or equal to %(limit_value)s.') % { 'limit_value': 23, }, ) response = self.assertPOST200(url, data={'value': -1}) self.assertFormError( response, 'form', 'value', _('Ensure this value is greater than or equal to %(limit_value)s.') % { 'limit_value': 0, }, )
def test_get_4_keys02(self): "Exceptions." sk = SettingKey( id='activities-test_get_4_key02_1', description='Display logo?', app_label='activities', type=SettingKey.BOOL, ) self._register_key(sk) with self.assertRaises(KeyError): SettingValue.objects.get_4_keys({'key': 'unknown'}) with self.assertLogs(level='CRITICAL') as log_cm: with self.assertRaises(SettingValue.DoesNotExist): SettingValue.objects.get_4_keys({'key': sk}) messages = log_cm.output self.assertEqual(1, len(messages)) self.assertIn('' "creme_populate" '', messages[0])
def test_edit_bool(self): self.login() sk = SettingKey( id='persons-test_edit_bool', description='Display logo ?', app_label='persons', type=SettingKey.BOOL, ) setting_key_registry.register(sk) # sv = SettingValue.objects.create(key=sk, value=True) sv = SettingValue(key=sk) sv.value = True sv.save() self.assertNoFormError( self.client.post(self._build_edit_url(sv), data={})) #False -> empty POST self.assertFalse(self.refresh(sv).value)
def test_edit_int(self): self.login() sk = SettingKey( id='persons-test_edit_int', description='Page size', app_label='persons', type=SettingKey.INT, ) setting_key_registry.register(sk) size = 156 sv = SettingValue(key=sk) sv.value = size sv.save() size += 15 self.assertNoFormError( self.client.post(self._build_edit_url(sv), data={'value': size})) self.assertEqual(size, self.refresh(sv).value)
def test_blank(self): sk = SettingKey('creme_core-test_model_blank', description=u'API key', app_label='creme_core', type=SettingKey.STRING, blank=True, ) self._register_key(sk) # sv = SettingValue.objects.create(key=sk, value='') sv = SettingValue(key=sk) sv.value = '' sv.save() sv = self.refresh(sv) self.assertEqual('', sv.value_str) self.assertIsNone(sv.value) self.assertEqual('', sv.as_html) sv.value = None self.assertIsNone(sv.value)
def test_get_4_key02(self): "Key instance." sk = SettingKey( id='activities-test_get_4_key02', description='Display logo?', app_label='activities', type=SettingKey.BOOL, ) self._register_key(sk) sv = SettingValue(key=sk) sv.value = True sv.save() pk = sv.pk with self.assertNumQueries(1): sv = SettingValue.objects.get_4_key(sk) self.assertIsInstance(sv, SettingValue) self.assertEqual(pk, sv.pk)
def test_get_4_keys03(self): "Default value." sk = SettingKey( id='activities-test_get_4_key03_1', description='Display logo?', app_label='activities', type=SettingKey.BOOL, ) with self.assertLogs(level='CRITICAL') as log_cm: svalues = SettingValue.objects.get_4_keys({ 'key': sk, 'default': False }) messages = log_cm.output self.assertEqual(1, len(messages)) self.assertIn('creme_populate', messages[0]) sv = svalues.get(sk.id) self.assertEqual(sk.id, sv.key_id) self.assertIs(False, sv.value)
def test_edit_blank01(self): self.login() sk = SettingKey( id='persons-test_edit_blank01', description='API key', app_label='persons', type=SettingKey.STRING, blank=True, ) setting_key_registry.register(sk) sv = SettingValue(key=sk) sv.value = '123-456-abc' sv.save() self.assertNoFormError( self.client.post(self._build_edit_url(sv), data={'value': ''})) sv = self.refresh(sv) self.assertEqual('', sv.value_str) self.assertIsNone(sv.value)
def test_type_bool(self): self.login() sk = SettingKey(id='activities-test_model_bool', description=u"Display logo ?", app_label='activities', type=SettingKey.BOOL, ) self._register_key(sk) # sv = SettingValue.objects.create(key=sk, user=self.user, value=True) sv = SettingValue(key=sk) sv.value = True sv.save() sv = self.refresh(sv) self.assertIs(sv.value, True) self.assertEqual('<input type="checkbox" checked disabled/>{}'.format(_('Yes')), sv.as_html) sv.value = False sv.save() sv = self.refresh(sv) self.assertIs(sv.value, False) self.assertEqual('<input type="checkbox" disabled/>{}'.format(_('No')), sv.as_html)
def test_type_int(self): sk = SettingKey(id='persons-test_model_int', description=u"Page size", app_label='persons', type=SettingKey.INT, ) self.assertFalse(sk.hidden) self.assertFalse(sk.blank) self._register_key(sk) size = 156 # sv = SettingValue.objects.create(key=sk, user=None, value=size) sv = SettingValue(key=sk) sv.value = size sv.save() sv = self.refresh(sv) self.assertEqual(size, sv.value) self.assertEqual(size, sv.as_html) # --- size += 1 sv.value = str(size) self.assertEqual(size, sv.value)
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey from .constants import SETTING_CRUDITY_SANDBOX_BY_USER sandbox_key = SettingKey( id=SETTING_CRUDITY_SANDBOX_BY_USER, description=_('Are waiting actions are by user?'), app_label='crudity', type=SettingKey.BOOL, )
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey # from .constants import SETTING_USE_CURRENT_QUOTE quote_key = SettingKey( # id=SETTING_USE_CURRENT_QUOTE, id='opportunities-use_current_quote', description=_("Use current associated quote to " "determine an estimation of the opportunity's turnover"), app_label='opportunities', type=SettingKey.BOOL, ) target_constraint_key = SettingKey( id='opportunities-target_constraint', description=_( 'When selecting an Invoice/Quote/Sales order to link, only the ' 'ones which have the same target than the Opportunity are proposed.'), app_label='opportunities', type=SettingKey.BOOL, ) emitter_constraint_key = SettingKey( id='opportunities-emitter_constraint', description=_( 'When selecting an Invoice/Quote/Sales order to link, only the ' 'ones which have the same emitter than the Opportunity are proposed.'), app_label='opportunities', type=SettingKey.BOOL,
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey from .constants import SETTING_EMAILCAMPAIGN_SENDER emailcampaign_sender = SettingKey( id=SETTING_EMAILCAMPAIGN_SENDER, description=_('Allowed email campaign sender.'), app_label='emails', type=SettingKey.EMAIL, )
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey # from . import constants payment_info_key = SettingKey( # id=constants.DISPLAY_PAYMENT_INFO_ONLY_CREME_ORGA, id='billing-display_payment_info_only_creme_orga', description=_('Display payment information block only on the ' 'detailview of organisations managed by Creme'), app_label='billing', type=SettingKey.BOOL, ) button_redirection_key = SettingKey( id='billing-button_redirection', description=_( 'Go the detailview of the billing document created ' 'with the button (of the button bar) after the creation? ' '(ie: «No» means «remain on the Contact/Organisation detailview»)'), app_label='billing', type=SettingKey.BOOL, )
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey from . import constants review_key = SettingKey( id=constants.SETTING_DISPLAY_REVIEW, description=_('Display minutes information in activities blocks'), app_label='activities', type=SettingKey.BOOL, ) auto_subjects_key = SettingKey( id=constants.SETTING_AUTO_ORGA_SUBJECTS, description=_('Add automatically the organisations of the participants as ' 'activities subjects'), app_label='activities', type=SettingKey.BOOL, ) form_user_messages_key = SettingKey( id=constants.SETTING_FORM_USERS_MSG, description=_( 'In the activities form, propose to keep users informed ' 'with user messages (the application «Assistants» is needed)'), app_label='activities', type=SettingKey.BOOL, )
# -*- coding: utf-8 -*- from django.utils.text import format_lazy from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey LOCATION_MAP_URL = SettingKey( id='mobile-location_map_url', description=format_lazy( ('{title}\n' ' − https://www.openstreetmap.org/search?query={{search}}\n' ' − https://www.openstreetmap.org#map=18/{{lat}}/{{lng}}\n' ' − https://www.google.com/maps/?q={{search}}\n' ' − https://maps.google.com/maps/place/{{lat}},{{lng}}'), title=_( "URL pattern to map & geolocation services.\n" "Use {search} placeholder for the address and if geolocation is enabled, " "{lat} & {lng} coordinates can be used too.")), app_label='mobile', type=SettingKey.STRING, )
# -*- coding: utf-8 -*- from django.utils.translation import gettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey from .constants import MIN_HOUR_4_TODO_REMINDER todo_reminder_key = SettingKey( id=MIN_HOUR_4_TODO_REMINDER, description=_('Minimum hour to send the mails related to Todos'), app_label='assistants', type=SettingKey.HOUR, )
# -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey NEIGHBOURHOOD_DISTANCE = SettingKey(id='geolocation-neighbourhood_distance', description=_(u'Maximum distance to find neighbours in meters'), app_label='geolocation', type=SettingKey.INT, ) GOOGLE_API_KEY = SettingKey(id='geolocation-google_api_key', description=_(u'Google Maps ® API key (optional)'), app_label='geolocation', type=SettingKey.STRING, blank=True, )
# -*- coding: utf-8 -*- from django.utils.translation import ugettext_lazy as _ from creme.creme_core.core.setting_key import SettingKey from . import constants orga_approaches_key = SettingKey( id=constants.DISPLAY_ONLY_ORGA_COM_APPROACH_ON_ORGA_DETAILVIEW, description=_( u"Display only organisations' commercial approaches on organisations' file." u" (Otherwise, display organisations', managers', employees', " u"related opportunities' commercial approaches)"), app_label='commercial', type=SettingKey.BOOL, )