def setUp(self): self.staff = structure_factories.UserFactory(is_staff=True) self.author = structure_factories.UserFactory() self.other_user = structure_factories.UserFactory() self.valid_event_types = loggers.get_valid_events()[:3] self.valid_event_groups = loggers.get_event_groups_keys()[:3]
class SystemNotificationFactory(factory.DjangoModelFactory): class Meta: model = models.SystemNotification event_types = get_valid_events()[:3] roles = ['admin'] hook_content_type = factory.LazyAttribute( lambda o: ct_models.ContentType.objects.get_by_natural_key('logging', 'emailhook') )
def get_fields(self): """ When static declaration is used, event type choices are fetched too early - even before all apps are initialized. As a result, some event types are missing. When dynamic declaration is used, all valid event types are available as choices. """ fields = super(BaseHookSerializer, self).get_fields() fields['event_types'] = serializers.MultipleChoiceField( choices=loggers.get_valid_events(), required=False) fields['event_groups'] = serializers.MultipleChoiceField( choices=loggers.get_event_groups_keys(), required=False) return fields
class BaseHookForm(forms.ModelForm): event_types = JSONMultipleChoiceField( choices=lambda: [(e, e) for e in get_valid_events()], widget=forms.SelectMultiple(attrs={'size': '30'}), required=False, ) event_groups = JSONMultipleChoiceField( choices=lambda: [(g, g) for g in get_event_groups()], widget=forms.SelectMultiple(attrs={'size': '30'}), required=False, )
class SystemNotificationForm(forms.ModelForm): event_types = JSONMultipleChoiceField( choices=[(e, e) for e in get_valid_events()], widget=forms.SelectMultiple(attrs={'size': '30'})) class Meta: model = models.SystemNotification exclude = 'uuid', def __init__(self, *args, **kwargs): super(SystemNotificationForm, self).__init__(*args, **kwargs) self.fields[ 'hook_content_type'].queryset = models.BaseHook.get_all_content_types( )
class WebHookFactory(factory.DjangoModelFactory): class Meta: model = models.WebHook event_types = get_valid_events()[:3] destination_url = 'http://example.com/' @classmethod def get_list_url(cls): return 'http://testserver' + reverse('webhook-list') @classmethod def get_url(cls, hook=None): if hook is None: hook = WebHookFactory() return 'http://testserver' + reverse('webhook-detail', kwargs={'uuid': hook.uuid})
class PushHookFactory(factory.DjangoModelFactory): class Meta: model = models.PushHook event_types = get_valid_events()[:3] token = 'VALID_TOKEN' type = models.PushHook.Type.ANDROID @classmethod def get_list_url(cls): return 'http://testserver' + reverse('pushhook-list') @classmethod def get_url(cls, hook=None): if hook is None: hook = PushHookFactory() return 'http://testserver' + reverse('pushhook-detail', kwargs={'uuid': hook.uuid})
def handle(self, *args, **options): self.stdout.write('Checking event types of hooks...') valid_events = loggers.get_valid_events() changed_hooks = 0 for model in EventTypesMixin.get_all_models(): for hook in model.objects.all(): clean_events = filter(lambda x: x in valid_events, hook.event_types) if clean_events != hook.event_types: hook.event_types = clean_events hook.save(update_fields=['event_types']) changed_hooks += 1 if changed_hooks == 0: self.stdout.write('All hooks have valid event types.') elif changed_hooks == 1: self.stdout.write('1 hook has been updated.') else: self.stdout.write('%s hooks have been updated.' % changed_hooks)
def setUp(self): self.events = loggers.get_valid_events()[:3]