Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

# -*- coding: utf-8 -*- 

# Copyright (C) 2012-2019 by the Free Software Foundation, Inc. 

# 

# This file is part of Postorius. 

# 

# Postorius is free software: you can redistribute it and/or modify it under 

# the terms of the GNU General Public License as published by the Free 

# Software Foundation, either version 3 of the License, or (at your option) 

# any later version. 

# 

# Postorius is distributed in the hope that it will be useful, but WITHOUT 

# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 

# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 

# more details. 

# 

# You should have received a copy of the GNU General Public License along with 

# Postorius. If not, see <http://www.gnu.org/licenses/>. 

 

 

from django import forms 

from django.contrib.sites.models import Site 

from django.core.exceptions import ValidationError 

from django.core.validators import validate_email 

from django.urls import reverse 

from django.utils.translation import ugettext_lazy as _ 

 

from postorius.forms.fields import SiteModelChoiceField 

 

 

def _get_web_host_help(): 

# Using a function is necessary, otherwise reverse() will be called before 

# URLConfs are loaded. 

return (_( 

'The domain from which you want the web UI to be served from. ' 

'This can be same or different from the Mail Host. ' 

'You can edit the list of available web hosts <a href="%s">here</a>.' 

) % reverse("admin:sites_site_changelist")) 

 

 

class DomainForm(forms.Form): 

""" 

Form to add a domain. 

""" 

mail_host = forms.CharField( 

label=_('Mail Host'), 

error_messages={'required': _('Please enter a domain name'), 

'invalid': _('Please enter a valid domain name.')}, 

required=True, 

help_text=_( 

'The domain for your mailing lists. For example when you want ' 

'lists like testing@example.com, enter example.com here.'), 

) 

description = forms.CharField( 

label=_('Description'), 

required=False) 

alias_domain = forms.CharField( 

label=_('Alias Domain'), 

error_messages={ 

'invalid': _('Please enter a valid domain name or nothing.')}, 

required=False, 

help_text=_('Normally empty. Used only for unusual Postfix configs.'), 

) 

site = SiteModelChoiceField( 

label=_('Web Host'), 

error_messages={'required': _('Please enter a domain name'), 

'invalid': _('Please enter a valid domain name.')}, 

required=True, 

queryset=Site.objects.order_by("name").all(), 

initial=lambda: Site.objects.get_current(), 

help_text=_get_web_host_help, 

) 

 

def clean_mail_host(self): 

mail_host = self.cleaned_data['mail_host'] 

try: 

validate_email('mail@' + mail_host) 

except ValidationError: 

raise forms.ValidationError(_("Please enter a valid domain name")) 

return mail_host 

 

def clean_alias_domain(self): 

alias_domain = self.cleaned_data['alias_domain'] 

if alias_domain != '': 

try: 

validate_email('mail@' + alias_domain) 

except ValidationError: 

raise forms.ValidationError( 

_("Please enter a valid domain name or nothing.")) 

return alias_domain 

 

 

class DomainEditForm(DomainForm): 

""" 

Form to edit domains 

separte from the DomainForm, so that the mail_host can't be changed. 

""" 

mail_host = None