def viewmodify_todo_details(request, url): if request.method == 'POST': todo = get_object_or_404(ToDo, id=request.POST.get('id')) form = ToDoDetailsForm(request.POST, instance=todo) if form.is_valid(): todo = form.save(commit=False) if todo.complete: todo.complete = 1 else: todo.complete = 0 parse_data = parse_todo(form.cleaned_data['due_date_string']) pretty_datetime = make_pretty_datetime(parse_data[1], parse_data[2]) todo.due_date = parse_data[1] todo.due_time = parse_data[2] todo.pretty_date = pretty_datetime[0] todo.pretty_time = pretty_datetime[1] todo.save() form.save_m2m() todo.form_success = True else: todo.form_success = False todo.error_keys = form.errors.keys() else: site = get_object_or_404(GroupSite, Q(random_name=url) | Q(name=url)) id = request.GET['id'] if not ygauth.auth_user(request, url, site): return todo = get_object_or_404(ToDo, Q(id=id) & Q(site=site)) form = ToDoDetailsForm(instance=todo) if todo.due_time is None: due_datetime = todo.due_date else: due_datetime = datetime.datetime.combine(todo.due_date, todo.due_time) #todo_description = todo.description.replace("\n", "<br />") data = { 'todo': todo, #'todo_description': todo_description, 'due_datetime': due_datetime } todo.members = [member.first_name for member in todo.assigned_members.all()] todo.table = json.render_to_json('todos/viewToDoDetails.html', data) todo.form = json.render_to_json('todos/modifyToDoDetails.html', {'form': form, 'todo': todo}) return json.to_json_response(todo, include=('id', 'title', 'complete', 'table', 'form', 'members', 'due_date', 'pretty_time', 'pretty_date', 'form_success', 'error_keys'))
def add_group_members(request, url): """Display and catch AddMembersForm""" extra = 3 initial = [] data = {} info_initial = {'description': ''} if request.method == 'POST' and request.POST['submitType'] != '': formCopy = request.POST.copy() mod = 0 del formCopy['form-TOTAL_FORMS'], formCopy['form-INITIAL_FORMS'] if request.POST['submitType'] == 'addRowSubmit': del formCopy['submitType'] extra = 1 if request.POST['submitType'] == 'removeRowSubmit': del formCopy['submitType'] extra = 0 last_row_values = [formCopy[key] for key in sorted(formCopy, reverse=True)[:3] if formCopy[key].strip() != ''] if int(request.POST['form-TOTAL_FORMS']) > 1 and len(last_row_values) == 0: mod = -3 info_initial['description'] = formCopy['description'] del formCopy['description'] template = ['email', 'first_name', 'phone'] form_keys = sorted(formCopy) for i in range(0,(len(formCopy)+mod)/3): values = [formCopy[key] for key in form_keys[(i*3):(i*3+3)]] initial.append(zip(template, values)) FormSet = formset_factory(AddMembersForm, formset=BaseAddMembersFormSet, extra=extra) if request.method == 'POST' and request.POST['submitType'] == 'saveSubmit': form = FormSet(request.POST) info_form = AddMembersExtraInfoForm(request.POST) if form.is_valid() and info_form.is_valid(): form.save(url, info_form.cleaned_data['description']) #if request.user.is_anonymous(): request.session['fresh_site'] = True return json.to_json_response({'s': True}) else: data['s'] = False else: form = FormSet(initial=initial) info_form = AddMembersExtraInfoForm(initial=info_initial) data['s'] = False data['form'] = json.clean_json(json.render_to_json('members/add_members.html', {'form': form, 'info_form': info_form})) #return render_to_response('members/add_members.html', data, context_instance=RequestContext(request)) return json.to_json_response(data)
def display_all_files(request, url, initial_load): site = get_object_or_404(GroupSite, Q(random_name=url) | Q(name=url)) if ygauth.auth_user(request, url, site): files = File.objects.filter(site=site).order_by('-updated') all_files = json.render_to_json('files/allFiles.html', {'files': files, 'site': site, 'media_url': settings.MEDIA_URL}) if initial_load: return all_files return json.to_json_response({'all_files': all_files})
def display_all_discussions(request, url, initial_load): site = get_object_or_404(GroupSite, (Q(random_name=url) | Q(name=url))) if ygauth.auth_user(request, url, site): topics = Topic.objects.filter(site=site, empty=False).order_by('-updated') for t in topics: t.read = t.read_status(request.user) all_discussions = json.render_to_json('discuss/allDiscussions.html', {'topics': topics, 'user': request.user}) if initial_load: return all_discussions return json.to_json_response({'all_discussions': all_discussions})
def remove_related_todo(request, url): site = get_object_or_404(GroupSite, Q(id=request.POST['site']) & (Q(random_name=url) | Q(name=url))) form = RelatedToDoForm(request.POST) if request.method == 'POST' and form.is_valid() and ygauth.auth_user(request, url, site): todo_id = form.cleaned_data['todo'] topic_id = form.cleaned_data['item'] todo = get_object_or_404(ToDo, id=todo_id) topic = get_object_or_404(Topic, id=topic_id) topic.todos.remove(todo) todos = topic.todos.all().order_by('order') todos_table = json.render_to_json('discuss/relatedTodosTable.html', {'todos': todos}) return json.to_json_response({'todos_table': todos_table})
def remove_related_file(request, url): site = get_object_or_404(GroupSite, Q(id=request.POST['site']) & (Q(random_name=url) | Q(name=url))) form = RelatedToDoForm(request.POST) if request.method == 'POST' and form.is_valid() and ygauth.auth_user(request, url, site): todo_id = form.cleaned_data['todo'] file_id = form.cleaned_data['item'] todo = get_object_or_404(ToDo, id=todo_id) file = get_object_or_404(File, id=file_id) #file.todos.remove(todo) todo.file_set.remove(file) #todos = file.todos.all().order_by('order') files_table = json.render_to_json('todos/relatedFilesTable.html', {'todo': todo}) return json.to_json_response({'files_table': files_table})
def display_current_discussion(request, url): site = get_object_or_404(GroupSite, Q(id=request.GET['site']) & (Q(random_name=url) | Q(name=url))) if ygauth.auth_user(request, url, site): topic = Topic.objects.get(id=request.GET['id']) posts = Post.objects.filter(topic=topic).order_by('updated') todos = topic.todos.all().order_by('order') if request.user.is_authenticated(): r = ReadStatus.objects.get_or_create(member=request.user, topic=topic) r[0].read = True r[0].save() fdict = {} for todo in todos: for file in todo.file_set.all(): fdict[file.id] = file current_discussion = json.render_to_json('discuss/currentDiscussion.html', {'posts': posts, 'topic': topic, 'todos': todos, 'files': fdict.values()}) return json.to_json_response({'current_discussion': current_discussion})
def rename_site(request, url): """Rename group site""" data = {} if request.method == 'POST': site = get_object_or_404(GroupSite, Q(random_name=url) | Q(name=url)) form = RenameSiteForm(request.POST, instance=site) if form.is_valid(): new_site = form.save(commit=False) new_site.name_changed = True new_site.save() return json.to_json_response({'s': True, 'title': new_site.title}) else: data = {'s': False, 'errors': form.errors.keys()} else: form = RenameSiteForm() data['form'] = json.clean_json(json.render_to_json('sites/renameSiteForm.html', {'form': form})) return json.to_json_response(data)
def save_new_discussion(request, url): site = get_object_or_404(GroupSite, Q(id=request.POST['site']) & (Q(random_name=url) | Q(name=url))) topic = get_object_or_404(Topic, id=request.POST['new_discussion_id'], site=site, empty=True) form = NewDiscussionForm(request.POST, instance=topic) if request.method == 'POST' and form.is_valid() and ygauth.auth_user(request, url, site): topic = form.save(commit=False) topic.empty = False topic.save() post = Post(topic=topic, body=form.cleaned_data['body']) if request.user.is_authenticated(): post.creator = request.user post.save() form.cleaned_data['success'] = True members = MemberInfo.objects.filter(sites=site) if members.count() > 0: email = YakEmail() for m in members: r = ReadStatus(member=m, topic=topic) if request.user.is_authenticated() and m.id == request.user.id: r.read = True r.save() if request.user.is_authenticated() and request.user.id == m.id: continue email.add_email(to_addy=m.email, subject=topic.title, from_addy=site.get_site_title()+' YakGroup', template='discuss/emailPost.html', context={'topic': topic, 'post': post}) email.send_all_emails() return json.to_json_response(form.cleaned_data) else: discussion_form = json.render_to_json('discuss/newDiscussion.html', {'form': form, 'site': site.id}) response = { 'error_keys': form.errors.keys(), 'form': discussion_form, 'success': False } return json.to_json_response(response)
def display_new_discussion_form(request, url, initial_load): site = get_object_or_404(GroupSite, (Q(random_name=url) | Q(name=url))) if initial_load: return json.render_to_json('discuss/newDiscussion.html', {'form': NewDiscussionForm(), 'site': site.id})
def load_quick_tour(request, url): content = json.clean_json(json.render_to_json('sites/quickTour.html', {'MEDIA_URL': settings.MEDIA_URL})) return json.to_json_response({'content': content})