rectification because of error made in the old commit
authorgrandjoncl
Thu, 14 Feb 2013 15:13:30 +0100
changeset 8 cfa34e39a3b8
parent 7 be0de27a1c77
child 9 39ba26f638b8
rectification because of error made in the old commit
src/polemictweet/views/event.py
src/polemictweet/views/group.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 
                 
--- 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'