| 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 ) |
|---|