1 | # -*- coding: utf-8 -*-
|
---|
2 | """
|
---|
3 | /dms/newsbookitem/views_add.py
|
---|
4 |
|
---|
5 | .. enthaelt den View zum Ergaenzen einer Nachricht
|
---|
6 | Django content Management System
|
---|
7 |
|
---|
8 | Hans Rauch
|
---|
9 | hans.rauch@gmx.net
|
---|
10 |
|
---|
11 | Die Programme des dms-Systems koennen frei genutzt und den spezifischen
|
---|
12 | Beduerfnissen entsprechend angepasst werden.
|
---|
13 |
|
---|
14 | 0.01 16.03.2007 Beginn der Arbeit
|
---|
15 | """
|
---|
16 |
|
---|
17 | import string
|
---|
18 | import time
|
---|
19 | import datetime
|
---|
20 |
|
---|
21 | from django.utils.encoding import smart_unicode
|
---|
22 | from django.http import HttpResponse, HttpResponseRedirect
|
---|
23 | from django.shortcuts import render_to_response
|
---|
24 | from django import newforms as forms
|
---|
25 |
|
---|
26 | from django.utils.translation import ugettext as _
|
---|
27 |
|
---|
28 | from dms.models import DmsItem
|
---|
29 | from dms.queries import save_item_values
|
---|
30 | from dms.queries import get_random_question_answer
|
---|
31 | from dms.queries import check_answer
|
---|
32 | from dms.queries import get_user
|
---|
33 | from dms.queries import get_site_url
|
---|
34 |
|
---|
35 | #from dms.roles import *
|
---|
36 | from dms.utils import get_tabbed_form
|
---|
37 | from dms.utils import get_license_choices
|
---|
38 | from dms.mail import send_control_email
|
---|
39 | from dms.utils_form import get_item_vars_add
|
---|
40 |
|
---|
41 | from dms.encode_decode import decode_html
|
---|
42 | from dms.encode_decode import encode_html_dir
|
---|
43 |
|
---|
44 | from dms.views_error import show_error_spam
|
---|
45 |
|
---|
46 | from dms.newsitem.help_form import help_form
|
---|
47 |
|
---|
48 | from dms_ext.extension import * # dms-Funktionen ueberschreiben
|
---|
49 |
|
---|
50 | # -----------------------------------------------------
|
---|
51 | def newsitem_add(request, item_container):
|
---|
52 | """ neue Nachricht anlegen """
|
---|
53 | question, answer = get_random_question_answer()
|
---|
54 | my_user = get_user(request.user.username)
|
---|
55 | if my_user != None:
|
---|
56 | my_name = my_user.get_full_name()
|
---|
57 | my_email = my_user.email
|
---|
58 | else:
|
---|
59 | my_name = ''
|
---|
60 | my_email = ''
|
---|
61 |
|
---|
62 | def save_values(name, new, my_folder):
|
---|
63 | """ Daten sichern """
|
---|
64 | new['section'] = ''
|
---|
65 | new['visible_start'] = datetime.date.today().strftime('%d.%m.%Y')
|
---|
66 | save_item_values(request.user, 'dmsNewsItem', name, new, my_folder,
|
---|
67 | not my_folder.item.is_moderated, True,
|
---|
68 | visible_start=new['visible_start'],
|
---|
69 | visible_end=new['visible_end'])
|
---|
70 | send_control_email(item_container)
|
---|
71 |
|
---|
72 | class DmsItemForm ( forms.Form ) :
|
---|
73 | if my_user == None:
|
---|
74 | string_1 = forms.CharField(max_length=60,
|
---|
75 | widget=forms.TextInput(attrs={'size':60}) )
|
---|
76 | string_2 = forms.CharField(required=False, max_length=200,
|
---|
77 | widget=forms.TextInput(attrs={'size':60}) )
|
---|
78 | anti_spam_question = forms.CharField(required=False,
|
---|
79 | widget=forms.HiddenInput(attrs={'value':question}) )
|
---|
80 | anti_spam_answer = forms.CharField(max_length=20,
|
---|
81 | widget=forms.TextInput(attrs={'size':20}) )
|
---|
82 | else:
|
---|
83 | # --- eigentlich koennte required=False entfallen
|
---|
84 | string_1 = forms.CharField(required=False,
|
---|
85 | widget=forms.HiddenInput(attrs={'value':my_name}) )
|
---|
86 | string_2 = forms.CharField(required=False,
|
---|
87 | widget=forms.HiddenInput(attrs={'value':my_email}) )
|
---|
88 | title = forms.CharField(max_length=240,
|
---|
89 | widget=forms.TextInput(attrs={'size':60}) )
|
---|
90 | sub_title = forms.CharField(required=False, max_length=240,
|
---|
91 | widget=forms.TextInput(attrs={'size':60}) )
|
---|
92 | text = forms.CharField(widget=forms.Textarea(
|
---|
93 | attrs={'rows':12, 'cols':60, 'id':'ta', 'style':'width:100%;'}) )
|
---|
94 | text_more = forms.CharField(required=False, widget=forms.Textarea(
|
---|
95 | attrs={'rows':24, 'cols':60, 'id':'ta1', 'style':'width:100%;'}) )
|
---|
96 | url_more = forms.CharField(required=False, max_length=200,
|
---|
97 | widget=forms.TextInput(attrs={'size':60}) )
|
---|
98 | visible_end = forms.DateField(input_formats=['%d.%m.%Y'],
|
---|
99 | widget=forms.TextInput(attrs={'size':10}))
|
---|
100 | #license = forms.ChoiceField(choices=get_license_choices(item_container),
|
---|
101 | # widget=forms.RadioSelect() )
|
---|
102 |
|
---|
103 | app_name = 'newsitem'
|
---|
104 | my_title = _('Nachricht anlegen')
|
---|
105 | # --- Sind Daten vorhanden oder muessen Sie initialiSiert werden?
|
---|
106 | show_errors = ( request.method == 'POST' )
|
---|
107 | if show_errors:
|
---|
108 | data = request.POST.copy()
|
---|
109 | else :
|
---|
110 | data = { 'visible_end': (datetime.datetime.now() + datetime.timedelta(30)).strftime('%d.%m.%Y'),
|
---|
111 | 'license': 1, }
|
---|
112 | f = DmsItemForm ( data )
|
---|
113 |
|
---|
114 | if request.method == 'POST' and not f.errors:
|
---|
115 | #new = encode_html_dir(f.data)
|
---|
116 | new = f.data
|
---|
117 | if request.user.username == '':
|
---|
118 | if new.has_key('anti_spam_question'):
|
---|
119 | is_ok = check_answer(new['anti_spam_question'], new['anti_spam_answer'])
|
---|
120 | else:
|
---|
121 | is_ok = True
|
---|
122 | if is_ok:
|
---|
123 | now = smart_unicode(time.time())
|
---|
124 | name = 'news_item_' + now[:string.find(now, '.')] + '.html'
|
---|
125 | save_values(name, f.data, item_container)
|
---|
126 | return HttpResponseRedirect(get_site_url(item_container, 'index.html'))
|
---|
127 | else:
|
---|
128 | return show_error_spam(request, item_container)
|
---|
129 | else :
|
---|
130 | # --- Reihenfolge, Ueberschriften, Hilfetexte
|
---|
131 | if my_user == None:
|
---|
132 | tabs = [ ('tab_base', [ 'string_1', 'string_2', 'title', 'sub_title', 'text',
|
---|
133 | 'text_more', 'url_more', 'visible_end',
|
---|
134 | 'anti_spam_question', 'anti_spam_answer' ]),
|
---|
135 | #( 'tab_license', [ 'license', ] ),
|
---|
136 | ]
|
---|
137 | else:
|
---|
138 | tabs = [ ('tab_base', [ 'string_1', 'string_2', 'title', 'sub_title', 'text',
|
---|
139 | 'text_more', 'url_more', 'visible_end', ]),
|
---|
140 | #( 'tab_license', [ 'license', ] ),
|
---|
141 | ]
|
---|
142 | content = get_tabbed_form(tabs, help_form, app_name, f)
|
---|
143 | if item_container.item.is_moderated:
|
---|
144 | moderated_text = help_form['moderated_text']['info']
|
---|
145 | else:
|
---|
146 | moderated_text = ''
|
---|
147 | vars = get_item_vars_add(request, item_container, app_name, my_title, content, show_errors)
|
---|
148 | vars['moderated_text'] = moderated_text
|
---|
149 | return render_to_response ( 'app/base_edit.html', vars )
|
---|