app/soc/views/site/home.py
changeset 299 a1cc853a56e5
parent 294 1fdaab4a6ef2
child 303 4f1bb54ddae5
equal deleted inserted replaced
298:c76a366c7ab4 299:a1cc853a56e5
    31 
    31 
    32 from django import http
    32 from django import http
    33 from django import shortcuts
    33 from django import shortcuts
    34 from django import newforms as forms
    34 from django import newforms as forms
    35 
    35 
       
    36 import soc.logic
    36 from soc.logic import out_of_band
    37 from soc.logic import out_of_band
    37 from soc.logic import validate
    38 from soc.logic import validate
    38 from soc.logic.site import id_user
    39 from soc.logic.site import id_user
    39 from soc.logic.helper import access
    40 from soc.logic.helper import access
    40 from soc.views import simple
    41 from soc.views import simple
    44 import soc.views.helper.templates
    45 import soc.views.helper.templates
    45 import soc.views.helper.widgets
    46 import soc.views.helper.widgets
    46 
    47 
    47 import soc.models.site_settings
    48 import soc.models.site_settings
    48 import soc.models.document
    49 import soc.models.document
    49 import soc.logic.document
       
    50 import soc.logic.site.settings
       
    51 
    50 
    52 
    51 
    53 class DocumentForm(helper.forms.DbModelForm):
    52 class DocumentForm(helper.forms.DbModelForm):
    54   content = forms.fields.CharField(widget=helper.widgets.TinyMCE())
    53   content = forms.fields.CharField(widget=helper.widgets.TinyMCE())
    55 
    54 
   105     A subclass of django.http.HttpResponse with generated template.
   104     A subclass of django.http.HttpResponse with generated template.
   106   """
   105   """
   107   # create default template context for use with any templates
   106   # create default template context for use with any templates
   108   context = helper.responses.getUniversalContext(request)
   107   context = helper.responses.getUniversalContext(request)
   109   
   108   
   110   site_settings = soc.logic.site.settings.getSiteSettings(DEF_SITE_SETTINGS_PATH)
   109   site_settings = soc.logic.settings_logic.getFromFields(path=DEF_SITE_SETTINGS_PATH)
   111 
   110 
   112   if site_settings:
   111   if site_settings:
   113     context['site_settings'] = site_settings
   112     context['site_settings'] = site_settings
   114     site_doc = site_settings.home
   113     site_doc = site_settings.home
   115   
   114   
   116     if site_doc:
   115     if site_doc:
   117       site_doc.content = helper.templates.unescape(site_doc.content)
   116       site_doc.content = helper.templates.unescape(site_doc.content)
   118       context['site_document'] = site_doc
   117       context['site_document'] = site_doc
   119 
   118 
   120   return helper.responses.respond(request, template, context)
   119   return helper.responses.respond(request, template, context=context)
   121 
   120 
   122 
   121 
   123 DEF_SITE_HOME_EDIT_TMPL = 'soc/site/home/edit.html'
   122 DEF_SITE_HOME_EDIT_TMPL = 'soc/site/home/edit.html'
   124 
   123 
   125 def edit(request, template=DEF_SITE_HOME_EDIT_TMPL):
   124 def edit(request, template=DEF_SITE_HOME_EDIT_TMPL):
   147   if request.method == 'POST':
   146   if request.method == 'POST':
   148     document_form = DocumentForm(request.POST)
   147     document_form = DocumentForm(request.POST)
   149     settings_form = SiteSettingsForm(request.POST)
   148     settings_form = SiteSettingsForm(request.POST)
   150 
   149 
   151     if document_form.is_valid() and settings_form.is_valid():
   150     if document_form.is_valid() and settings_form.is_valid():
   152       title = document_form.cleaned_data.get('title')
       
   153       link_name = DEF_SITE_HOME_DOC_LINK_NAME
   151       link_name = DEF_SITE_HOME_DOC_LINK_NAME
   154       short_name = document_form.cleaned_data.get('short_name')
   152       partial_path=DEF_SITE_SETTINGS_PATH
   155       abstract = document_form.cleaned_data.get('abstract')
       
   156       content = document_form.cleaned_data.get('content')
       
   157       
       
   158       logged_in_id = users.get_current_user()
   153       logged_in_id = users.get_current_user()
   159 
   154       user = soc.logic.user_logic.getFromFields(email=logged_in_id)
   160       site_doc = soc.logic.document.updateOrCreateDocument(
   155 
   161           partial_path=DEF_SITE_SETTINGS_PATH, link_name=link_name,
   156       properties = {}
   162           title=title, short_name=short_name, abstract=abstract,
   157       properties['title'] = document_form.cleaned_data.get('title')
   163           content=content, user=id_user.getUserFromId(logged_in_id))
   158       properties['short_name'] = document_form.cleaned_data.get('short_name')
       
   159       properties['abstract'] = document_form.cleaned_data.get('abstract')
       
   160       properties['content'] = document_form.cleaned_data.get('content')
       
   161       properties['link_name'] = link_name
       
   162       properties['partial_path'] = partial_path
       
   163       properties['id'] = logged_in_id
       
   164       properties['user'] = user
       
   165 
       
   166       #bla =  dir(logged_in_id)
       
   167       #raise self
       
   168 
       
   169       site_doc = soc.logic.document_logic.updateOrCreateFromFields(
       
   170           properties, partial_path=partial_path, link_name=link_name)
   164       
   171       
   165       feed_url = settings_form.cleaned_data.get('feed_url')
   172       feed_url = settings_form.cleaned_data.get('feed_url')
   166 
   173 
   167       site_settings = soc.logic.site.settings.updateOrCreateSiteSettings(
   174       site_settings = soc.logic.settings_logic.updateOrCreateFromFields(
   168           DEF_SITE_SETTINGS_PATH, home=site_doc, feed_url=feed_url)
   175           {'feed_url' : feed_url, 'home' : site_doc}, path=DEF_SITE_SETTINGS_PATH)
   169       
   176       
   170       context['notice'] = 'Site Settings saved.'
   177       context['notice'] = 'Site Settings saved.'
   171   else: # request.method == 'GET'
   178   else: # request.method == 'GET'
   172     # try to fetch SiteSettings entity by unique key_name
   179     # try to fetch SiteSettings entity by unique key_name
   173     site_settings = soc.logic.site.settings.getSiteSettings(
   180     site_settings = soc.logic.settings_logic.getFromFields(
   174         DEF_SITE_SETTINGS_PATH)
   181         path=DEF_SITE_SETTINGS_PATH)
   175 
   182 
   176     if site_settings:
   183     if site_settings:
   177       # populate form with the existing SiteSettings entity
   184       # populate form with the existing SiteSettings entity
   178       settings_form = SiteSettingsForm(instance=site_settings)
   185       settings_form = SiteSettingsForm(instance=site_settings)
   179       site_doc = site_settings.home
   186       site_doc = site_settings.home