# HG changeset patch # User grandjoncl # Date 1360851210 -3600 # Node ID cfa34e39a3b86c84241156d592b60a18393c4477 # Parent be0de27a1c774c9dbcf1e073a55171cb0d82d5a7 rectification because of error made in the old commit diff -r be0de27a1c77 -r cfa34e39a3b8 src/polemictweet/views/event.py --- 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 diff -r be0de27a1c77 -r cfa34e39a3b8 src/polemictweet/views/group.py --- a/src/polemictweet/views/group.py Thu Feb 14 14:58:12 2013 +0100 +++ b/src/polemictweet/views/group.py Thu Feb 14 15:13:30 2013 +0100 @@ -36,46 +36,6 @@ if group_valid : if form_status != "error": group = group_form.save() - logger.debug("group : "+str(group)) - 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 - value_title = request.POST.get(key_title) - value_description = request.POST.get(key_description) - - if value_title and value_title!="" : - translation_added = True - logger.debug("title translation exists") - if key_title == "title_fr" : - group.title_fr = value_title - elif key_title == "title_en" : - logger.debug("title english exists") - group.title_en = value_title - else : - group.title_ja = value_title - - if value_description and value_description!="" : - translation_added = True - if key_description == "description_fr" : - group.description_fr = value_description - elif key_description == "description_en" : - group.description_en = value_description - else : - group.description_ja = value_description - - if current_language != default_language : - if request.POST.get('title_fr') == '' : - translation_added = True - group.title_fr = request.POST.get('title') - if request.POST.get('description_fr') == '' : - translation_added = True - group.description_fr = request.POST.get('description') - - if translation_added : - group.save() form_status = 'saved' else: form_status = 'error'