--- a/src/polemictweet/views/event.py Thu Feb 14 14:58:12 2013 +0100
+++ b/src/polemictweet/views/event.py Thu Feb 14 15:13:30 2013 +0100
@@ -3,11 +3,12 @@
from django.core.urlresolvers import reverse
from django.shortcuts import render_to_response, redirect, render, get_object_or_404
from django.template import RequestContext
-from polemictweet.models import Event, Live, Content, Group
+from polemictweet.models import Event, Live, Content, Group, Partner, Organisator
from polemictweet.forms import EventForm, LiveAddForm, ContentAddForm
from django.utils.translation import ugettext as _, get_language
from django.forms.formsets import formset_factory
from django.forms.models import model_to_dict
+from polemictweet.utils.translate_language import get_translation_languages
import sys
import logging
@@ -16,13 +17,33 @@
@transaction.commit_manually
def write_event_base(request, translation_languages, current_language, event_slug=None):
event = None
- default_language = settings.LANGUAGES[0][0]
old_groups = []
+ old_partners = []
+ old_partners_id = []
+ old_organisators = []
+ old_organisators_id = []
+
+
if event_slug:
instance_event = Event.objects.get(slug=event_slug) #@UndefinedVariable
init_groups = instance_event.group_set.all()
+ init_partners = Organisator.objects.filter(event=instance_event, orga=False)
+ init_organisators = Organisator.objects.filter(event=instance_event, orga=True)
+
+ logger.debug("init_partners : "+str(init_partners))
for group in init_groups :
old_groups.append(group.id)
+
+ for partner in init_partners :
+ old_partners.append(partner.partner)
+ logger.debug('name '+str(partner.partner.name))
+ old_partners_id.append(partner.partner.id)
+
+ for organisator in init_organisators :
+ old_organisators.append(organisator.partner)
+ old_organisators_id.append(organisator.partner.id)
+ logger.debug('name '+str(organisator.partner.name))
+
else:
logger.debug("No event_slug") #@UndefinedVariable
@@ -31,7 +52,7 @@
form_status = 'none'
if request.method == "POST":
- logger.debug("post : "+repr(request.POST))
+ logger.debug("post : "+str(request.POST))
try:
if instance_event is not None:
event_instance_val = model_to_dict(instance_event, exclude=EventForm.Meta.exclude)
@@ -42,106 +63,80 @@
logger.debug("write_event_base : valid form: for instance : " + repr(instance_event)) #@UndefinedVariable
if event_valid : #ajouter picture_valid si image
- if form_status != "error":
- event = event_form.save()
-
+ if form_status != "error":
+ event = event_form.save()
#add the event to a group :
#groups list :
group_list = []
+ partner_list = []
+ organisator_list = []
for group in request.POST.getlist('groups') :
group_list.append(int(group))
+
+ for partner in request.POST.getlist('partners') :
+ partner_list.append(int(partner))
+
+ for organisator in request.POST.getlist('organisators') :
+ organisator_list.append(int(organisator))
#if the event already existed :
if event_slug :
# groups to remove : the one that are in the old list but not in the new list
- to_remove = list(set(old_groups)-set(group_list))
- for group_id in to_remove :
+ group_to_remove = list(set(old_groups)-set(group_list))
+ group_to_add = list(set(group_list)-set(old_groups))
+
+ partner_to_remove = list(set(old_partners_id)-set(partner_list))
+ partner_to_add = list(set(partner_list)-set(old_partners_id))
+
+ organisator_to_remove = list(set(old_organisators_id)-set(organisator_list))
+ organisator_to_add = list(set(organisator_list)-set(old_organisators_id))
+
+ # groups to remove : the one that are in the new list but not in the old list
+ for group_id in group_to_remove :
group = Group.objects.get(id=group_id)
group.events.remove(event)
- # groups to remove : the one that are in the new list but not in the old list
- to_add = list(set(group_list)-set(old_groups))
- for group_id in to_add :
+ for group_id in group_to_add :
group = Group.objects.get(id=group_id)
- group.events.add(event)
+ group.events.add(event)
+
+ for partner_id in partner_to_remove :
+ partner = Partner.objects.get(id=partner_id)
+ Organisator.objects.filter(event=event, partner = partner).delete()
+
+ for partner_id in partner_to_add :
+ partner = Partner.objects.get(id=partner_id)
+ Organisator.objects.create(partner = partner, event = event, orga = False)
+
+ for organisator_id in organisator_to_remove :
+ organisator = Partner.objects.get(id=organisator_id)
+ Organisator.objects.filter(event=event, partner = organisator).delete()
+
+
+ for organisator_id in organisator_to_add :
+ organisator = Partner.objects.get(id=organisator_id)
+ Organisator.objects.create(partner = organisator, event = event, orga = True)
else :
for group_id in group_list :
group = Group.objects.get(id=group_id)
group.events.add(event)
- translation_added = False
- #if the user entered translations for title, description or program
- for language_code in translation_languages :
- key_title = "title_"+language_code
- key_description = "description_"+language_code
- key_program = "program_"+language_code
- key_event_image = "event_image_"+language_code
- value_title = request.POST.get(key_title)
- value_description = request.POST.get(key_description)
- value_program = request.POST.get(key_program)
+ for partner_id in partner_list :
+ partner = Partner.objects.get(id=partner_id)
+ Organisator.objects.create(partner = partner, event = event, orga = False)
- if key_event_image in request.FILES :
- translation_added = True
- value_event_image = request.FILES[key_event_image]
- if key_event_image == "event_image_fr" :
- event.event_image_fr = value_event_image
- elif key_event_image == "event_image_en" :
- event.event_image_en = value_event_image
- else :
- event.event_image_ja = value_event_image
-
- if value_title and value_title!="" :
- translation_added = True
- if key_title == "title_fr" :
- event.title_fr = value_title
- elif key_title == "title_en" :
- event.title_en = value_title
- else :
- event.title_ja = value_title
-
- if value_description and value_description!="" :
- translation_added = True
- if key_description == "description_fr" :
- event.description_fr = value_description
- elif key_description == "description_en" :
- event.description_en = value_description
- else :
- event.description_ja = value_description
- if value_program and value_program!="" :
- translation_added = True
- if key_program == "program_fr" :
- event.program_fr = value_program
- elif key_program == "program_en" :
- event.program_en = value_program
- else :
- event.program_ja = value_program
-
- # if the current language isn't the default one whici is french is this case
- # the fields for the french will be empty which means that there is no default
- # value when there is no translation. For exemple : if the user created an event
- # in japanese and tries to display it in an other language, there will be nothing displayed
- # this lines solve this problem
- if current_language != default_language :
- if request.POST.get('title_fr') == '' :
- translation_added = True
- event.title_fr = request.POST.get('title')
- if request.POST.get('description_fr') == '' :
- translation_added = True
- event.description_fr = request.POST.get('description')
- if request.POST.get('program_fr') == '' :
- translation_added = True
- event.program_fr = request.POST.get('program')
-
- if translation_added :
- event.save()
+ for organisator_id in organisator_list :
+ organisator = Partner.objects.get(id=organisator_id)
+ Organisator.objects.create(partner = organisator, event = event, orga = True)
+
form_status = 'saved'
else:
form_status = 'error'
except Exception, e:
transaction.rollback()
__, value, traceback = sys.exc_info()
- return False, False, False, e, traceback, init_groups
+ return False, False, False, e, traceback, init_groups, old_partners, old_organisators
else:
form_status = 'empty'
@@ -152,28 +147,24 @@
except Exception, e:
transaction.rollback()
__, __, traceback = sys.exc_info()
- return False, False, False, e, traceback, init_groups
+ return False, False, False, e, traceback, init_groups, old_partners, old_organisators
- return event, event_form, form_status, "", "", init_groups
+ return event, event_form, form_status, "", "", init_groups, old_partners, old_organisators
def create_event(request, event_slug = None):
groups = Group.objects.all()
- logger.debug("groups : "+str(groups))
+ partners = Partner.objects.all()
+ logger.debug("partner : "+str(partners))
submit_action = request.REQUEST.get("submit_button", False)
current_language = get_language().split("-")[0]
+ translation_languages = get_translation_languages()
- all_languages = settings.LANGUAGES
- translation_languages = []
-
- for l in all_languages:
- if l[0] != current_language:
- translation_languages.append(l[0])
if submit_action=="close":
return render_to_response('home.html', {'message': "You saved your event", 'translation_languages' : translation_languages, 'current_language' : current_language}, context_instance=RequestContext(request))
else:
- event, event_form, form_status, e, traceback, init_groups = write_event_base(request, translation_languages, current_language, event_slug)
+ event, event_form, form_status, e, traceback, init_groups, old_partners, old_organisators = write_event_base(request, translation_languages, current_language, event_slug)
if event_slug:
event_temp = Event.objects.get(slug=event_slug)
@@ -191,7 +182,7 @@
if form_status=='saved' or form_status=='deleted':
return redirect('add_live', event_slug = event.slug)
else:
- return render_to_response('create_event.html', {'event_form': event_form, 'form_status': form_status, 'create_event_action': create_event_action,
+ return render_to_response('create_event.html', {'event_form': event_form, 'form_status': form_status, 'create_event_action': create_event_action, 'partners' : partners, 'old_partners' : old_partners, 'old_organisators' : old_organisators,
'event_slug': event_slug, 'translation_languages' : translation_languages, 'current_language' : current_language, 'groups' : groups, 'init_groups' : init_groups}, context_instance=RequestContext(request))
@@ -201,12 +192,8 @@
current_language = get_language().split("-")[0]
if submit_action=="close":
- all_languages = settings.LANGUAGES
- translation_languages = []
-
- for l in all_languages:
- if l[0] != current_language:
- translation_languages.append(l[0])
+ translation_languages = get_translation_languages()
+
return render_to_response('home.html', {'message': "You didn't add any live", 'translation_languages' : translation_languages, 'current_language' : current_language}, context_instance=RequestContext(request))
else :
@@ -217,13 +204,13 @@
old_live = []
for live in init_live :
old_live.append(live.id)
- logger.debug("addlive_init : "+str(init_live))
form_status = "none"
if request.method == "POST" :
AddLiveFormSet = formset_factory(LiveAddForm)
add_live_form_set = AddLiveFormSet(request.POST)
new_live = []
+
for form in add_live_form_set :
form.empty_permitted = False
if add_live_form_set.is_valid() :
@@ -265,24 +252,23 @@
def add_content(request, event_slug) :
submit_action = request.REQUEST.get("submit_button", False)
current_language = get_language().split("-")[0]
- default_language = settings.LANGUAGES[0][0]
- all_languages = settings.LANGUAGES
- translation_languages = []
-
-
- for l in all_languages:
- if l[0] != current_language:
- translation_languages.append(l[0])
+ translation_languages = get_translation_languages()
if submit_action=="close" :
return render_to_response('home.html', {'message': "You didn't add any content", 'translation_languages' : translation_languages, 'current_language' : current_language}, context_instance=RequestContext(request))
else :
event = get_object_or_404(Event.objects, slug=event_slug)
- init_content = event.content_set.all().values()
events = [event, ]
- translation_added = False
+ init_content = event.content_set.all()
+ init_value = init_content.values()
+ old_content = []
+
+ for content in init_content :
+ old_content.append(content.id)
+
form_status = "none"
+ new_content = []
if request.method == "POST" :
AddContentFormSet = formset_factory(ContentAddForm)
add_content_form_set = AddContentFormSet(request.POST)
@@ -290,44 +276,24 @@
form.empty_permitted = False
if add_content_form_set.is_valid() :
for form in add_content_form_set :
- content = Content.create_content(display=form.cleaned_data['display'],
- program=form.cleaned_data['program'],
- url=form.cleaned_data['url'],
+ content = Content.create_or_change_content(data=form.cleaned_data,
events=events)
-
- for language_code in translation_languages :
- key_display = "display_"+language_code
- key_program = "program_"+language_code
-
- value_display = request.POST.get(key_display)
- value_program = request.POST.get(key_program)
-
- if value_display and value_display!="" :
- translation_added = True
- if key_display == "display_fr" :
- content.display_fr = value_display
- elif key_display == "display_en" :
- content.display_en = value_display
- else :
- content.display_ja = value_display
-
- if value_program and value_program!="" :
- translation_added = True
- if key_program == "program_fr" :
- content.program_fr = value_program
- elif key_program == "program_en" :
- content.program_en = value_program
- else :
- content.program_ja = value_program
-
- if translation_added :
- content.save()
+ new_content.append(content.id)
+
+ to_remove = list(set(old_content)-set(new_content))
+ for content_id in to_remove :
+ content = Content.objects.get(id=content_id)
+ content.events.remove(event)
form_status = "saved"
else:
AddContentFormSet = formset_factory(ContentAddForm)
#add_content_form_set = AddContentFormSet(initial = init_content)
- add_content_form_set = AddContentFormSet()
+ if len(init_content)>0 :
+ add_content_form_set = AddContentFormSet(initial = init_value)
+ else :
+ add_content_form_set = AddContentFormSet()
+
for form in add_content_form_set :
form.empty_permitted = False