def revert_to_version(request, document_id, version_id): old_version = Version.objects.get(pk = version_id) document = Document.objects.get(pk = document_id) new_version = Version(document=document,title=old_version.title, contents=old_version.contents, owner=request.user) new_version.save() return version_response(request, new_version)
def add_menu_item(request): check_perm(request.user, request.community, 'administrate homepage') owner_group = request.community owner_user = request.user choices = [(None, _('<No parent>'))] choices.extend([(x.id, x.title) for x in MenuItem.objects.filter(group=owner_group, parent__isnull=True)]) class MenuForm(django.forms.Form): parent = django.forms.ChoiceField(required=False, choices=choices) title = django.forms.CharField(required=True, label=_('Title')) contents = django.forms.CharField(required=False, widget=django.forms.Textarea, label=_('Text')) if request.POST: form = MenuForm(request.POST) if form.is_valid(): from curia.documents.models import Document, Version from curia.authentication import grant_access, get_public_user # create document document = Document.objects.create(owner_group=owner_group, owner_user=owner_user, is_presentation=False) new_version = Version(document=document, title=form.cleaned_data['title'], contents=form.cleaned_data['contents'], owner=request.user) new_version.save() # set up access rights grant_access(command='view', user=get_public_user(), obj=document) # create menu item parent = None if form.cleaned_data['parent'] != 'None': parent = MenuItem.objects.get(pk=form.cleaned_data['parent']) MenuItem.objects.create(group=owner_group, content_type=get_content_type(document), object_id=document.id, title=form.cleaned_data['title'], url=document.get_absolute_url(), order=0, parent=parent) return HttpResponseRedirect("/") else: initial = {} if MenuItem.objects.count() == 0: initial['title'] = _('Home') form = MenuForm(initial=initial) return render_to_response(request, 'homepage/add_menu_item.html', {'form': form})
def add_document(request): is_presentation = get_boolean(request,'is_presentation') owner_group = None owner_user = None class DocumentForm(django.forms.Form): title = django.forms.CharField(max_length=1024, label=_('Title')) #labels = django.forms.CharField(required=False, label=_('Labels')) contents = django.forms.CharField(required=False, widget = django.forms.Textarea, label=_('Contents')) group_id = get_integer(request,'group_id') user_id = get_integer(request,'user_id') if group_id: owner_group = get_object_or_404_and_check_access(request, Group, pk=group_id, command='add') check_access(request.user, obj=owner_group, command='add document') else: owner_user = get_object_or_404_and_check_access(request, User, pk=user_id, command='add') check_access(request.user, obj=owner_user, command='add document') if request.POST: form = DocumentForm(request.POST) if form.is_valid(): #Handle the document if owner_group != None: document = Document.objects.create(owner_group=owner_group, owner_user=owner_user, is_presentation=is_presentation) else: document = Document.objects.create(owner_user=owner_user, is_presentation=is_presentation) if document.is_presentation: if group == 0: title = owner_user.username + 's Presentation' else: owner_group = get_object_or_404_and_check_access(request, Group, pk=group, command='add') title = owner_group.name + 's Presentation' else: title = form.cleaned_data['title'] new_version = Version(document=document,title=title, contents=strip_p(form.cleaned_data['contents']), owner=request.user) new_version.save() #Handle the labels #handle_labels(request,document) if document.is_presentation: if document.owner_group: return HttpResponseRedirect(document.owner_group.get_absolute_url()) else: return HttpResponseRedirect(document.owner_user.get_absolute_url()) return HttpResponseRedirect(document.get_absolute_url()) else: form = DocumentForm() return render_to_response(request, 'documents/add.html', {'form':form})
def revert_to_version(request, document_id, version_id): old_version = Version.objects.get(pk=version_id) document = Document.objects.get(pk=document_id) new_version = Version(document=document, title=old_version.title, contents=old_version.contents, owner=request.user) new_version.save() return version_response(request, new_version)
def portal(request): if request.community == None: return render_to_response(request, '404_community.html') check_access(request.user, request.community, command='view') from curia.calendars.models import Event from curia.images.models import Image import datetime today = datetime.date.today() events = Event.objects.filter(end_time__gt=today, start_time__lt=today+datetime.timedelta(days=4), owner_group=request.community, deleted=False).order_by('start_time') bugs = '' if request.user.is_superuser: from curia.bugs.models import Bug c = Bug.objects.filter(deleted=False).count() if c != 0: bugs = 'There are %s bugs reported' % c # select u from User u, MetaUser mu, UserInGroup uig where uig.group_id = VARIABEL and u.id = uig.user_id and mu.user_id = u.id and mu.image is not null order by last_login limit 3 try: presentation = Document.objects.get(owner_user__isnull=True, owner_group=request.community, is_presentation=True) except Document.DoesNotExist: # this is a brand new community, so we need to set some initial data # create presentation presentation = Document.objects.create(owner_user=None, owner_group=request.community, is_presentation=True) title = 'Presentation' new_version = Version(document=presentation, title=title, contents=_('Welcome!'), owner=request.user) new_version.save() presentation = presentation.get_latest_version().contents return render_to_response(request, 'portal.html', { 'community':request.community, 'events': events, 'news':News.objects.filter(deleted=False).order_by('-creation_time')[:3], 'bugs':bugs, 'random_images':Image.objects.filter(owner_group=request.community, deleted=False).order_by('?')[:6], 'latest_logged_in':request.community.user_set.order_by('-last_login')[:4], 'presentation':presentation })
def add_menu_item(request): check_perm(request.user, request.community, 'administrate homepage') owner_group = request.community owner_user = request.user choices = [(None, _('<No parent>'))] choices.extend([(x.id,x.title) for x in MenuItem.objects.filter(group=owner_group, parent__isnull=True)]) class MenuForm(django.forms.Form): parent = django.forms.ChoiceField(required=False, choices=choices) title = django.forms.CharField(required=True, label=_('Title')) contents = django.forms.CharField(required=False, widget = django.forms.Textarea, label=_('Text')) if request.POST: form = MenuForm(request.POST) if form.is_valid(): from curia.documents.models import Document, Version from curia.authentication import grant_access, get_public_user # create document document = Document.objects.create(owner_group=owner_group, owner_user=owner_user, is_presentation=False) new_version = Version(document=document,title=form.cleaned_data['title'], contents=form.cleaned_data['contents'], owner=request.user) new_version.save() # set up access rights grant_access(command='view', user=get_public_user(), obj=document) # create menu item parent = None if form.cleaned_data['parent'] != 'None': parent = MenuItem.objects.get(pk=form.cleaned_data['parent']) MenuItem.objects.create(group=owner_group, content_type=get_content_type(document), object_id=document.id, title=form.cleaned_data['title'], url=document.get_absolute_url(), order=0, parent=parent) return HttpResponseRedirect("/") else: initial = {} if MenuItem.objects.count() == 0: initial['title'] = _('Home') form = MenuForm(initial=initial) return render_to_response(request, 'homepage/add_menu_item.html', {'form':form})
def portal(request): if request.community == None: return render_to_response(request, '404_community.html') check_access(request.user, request.community, command='view') from curia.calendars.models import Event from curia.images.models import Image import datetime today = datetime.date.today() events = Event.objects.filter(end_time__gt=today, start_time__lt=today + datetime.timedelta(days=4), owner_group=request.community, deleted=False).order_by('start_time') bugs = '' if request.user.is_superuser: from curia.bugs.models import Bug c = Bug.objects.filter(deleted=False).count() if c != 0: bugs = 'There are %s bugs reported' % c # select u from User u, MetaUser mu, UserInGroup uig where uig.group_id = VARIABEL and u.id = uig.user_id and mu.user_id = u.id and mu.image is not null order by last_login limit 3 try: presentation = Document.objects.get(owner_user__isnull=True, owner_group=request.community, is_presentation=True) except Document.DoesNotExist: # this is a brand new community, so we need to set some initial data # create presentation presentation = Document.objects.create(owner_user=None, owner_group=request.community, is_presentation=True) title = 'Presentation' new_version = Version(document=presentation, title=title, contents=_('Welcome!'), owner=request.user) new_version.save() presentation = presentation.get_latest_version().contents return render_to_response( request, 'portal.html', { 'community': request.community, 'events': events, 'news': News.objects.filter(deleted=False).order_by('-creation_time')[:3], 'bugs': bugs, 'random_images': Image.objects.filter(owner_group=request.community, deleted=False).order_by('?')[:6], 'latest_logged_in': request.community.user_set.order_by('-last_login')[:4], 'presentation': presentation })
def edit_document(request, document_id, is_creating=False): group_id = get_integer(request, 'group_id') document = get_object_or_404_and_check_access(request, Document, pk=document_id, command='edit') user = request.user class DocumentForm(django.forms.Form): if not document.is_presentation: title = django.forms.CharField(max_length=1024, label=_('Title')) #labels = django.forms.CharField(required=False, label=_('Labels')) contents = django.forms.CharField(required=False, widget=django.forms.Textarea, label=_('Contents')) edit_version = django.forms.IntegerField( widget=django.forms.HiddenInput, required=True) if request.POST: form = DocumentForm(request.POST) if int(request.POST['edit_version']) != document.get_latest_version( ).id: post = request.POST.copy() post['edit_version'] = document.get_latest_version().id form = DocumentForm(post) form.errors['contents'] = [ _('Document was changed after you began editing it, please review the changes and then press save again' ) ] if form.is_valid(): #Handle the labels #handle_labels(request,document) #Handle the document if not document.is_presentation: if form.cleaned_data.has_key('title'): title = form.cleaned_data['title'] else: title = document.get_latest_version().title else: if user.first_name.endswith('s'): title = user.first_name + ' presentation' else: title = user.first_name + 's presentation' new_version = Version(document=document, title=title, contents=strip_p( form.cleaned_data['contents']), owner=request.user) new_version.save() if request.external: from curia.homepage.models import MenuItem try: menu = MenuItem.objects.get( content_type=get_content_type(document), object_id=document.id) menu.title = title menu.save() except MenuItem.DoesNotExist: pass if document.is_presentation: if document.owner_group: return HttpResponseRedirect( document.owner_group.get_absolute_url()) else: return HttpResponseRedirect( document.owner_user.get_absolute_url()) return HttpResponseRedirect(document.get_absolute_url()) else: latest_version = document.get_latest_version() form = DocumentForm( initial={ 'title': latest_version.title, 'contents': latest_version.contents, 'edit_version': latest_version.id }) return render_to_response(request, 'documents/edit.html', { 'form': form, 'document': document })
def add_document(request): is_presentation = get_boolean(request, 'is_presentation') owner_group = None owner_user = None class DocumentForm(django.forms.Form): title = django.forms.CharField(max_length=1024, label=_('Title')) #labels = django.forms.CharField(required=False, label=_('Labels')) contents = django.forms.CharField(required=False, widget=django.forms.Textarea, label=_('Contents')) group_id = get_integer(request, 'group_id') user_id = get_integer(request, 'user_id') if group_id: owner_group = get_object_or_404_and_check_access(request, Group, pk=group_id, command='add') check_access(request.user, obj=owner_group, command='add document') else: owner_user = get_object_or_404_and_check_access(request, User, pk=user_id, command='add') check_access(request.user, obj=owner_user, command='add document') if request.POST: form = DocumentForm(request.POST) if form.is_valid(): #Handle the document if owner_group != None: document = Document.objects.create( owner_group=owner_group, owner_user=owner_user, is_presentation=is_presentation) else: document = Document.objects.create( owner_user=owner_user, is_presentation=is_presentation) if document.is_presentation: if group == 0: title = owner_user.username + 's Presentation' else: owner_group = get_object_or_404_and_check_access( request, Group, pk=group, command='add') title = owner_group.name + 's Presentation' else: title = form.cleaned_data['title'] new_version = Version(document=document, title=title, contents=strip_p( form.cleaned_data['contents']), owner=request.user) new_version.save() #Handle the labels #handle_labels(request,document) if document.is_presentation: if document.owner_group: return HttpResponseRedirect( document.owner_group.get_absolute_url()) else: return HttpResponseRedirect( document.owner_user.get_absolute_url()) return HttpResponseRedirect(document.get_absolute_url()) else: form = DocumentForm() return render_to_response(request, 'documents/add.html', {'form': form})
def edit_document(request, document_id, is_creating=False): group_id = get_integer(request, 'group_id') document = get_object_or_404_and_check_access(request, Document, pk=document_id, command='edit') user = request.user class DocumentForm(django.forms.Form): if not document.is_presentation: title = django.forms.CharField(max_length=1024, label=_('Title')) #labels = django.forms.CharField(required=False, label=_('Labels')) contents = django.forms.CharField(required=False, widget = django.forms.Textarea, label=_('Contents')) edit_version = django.forms.IntegerField(widget = django.forms.HiddenInput, required=True) if request.POST: form = DocumentForm(request.POST) if int(request.POST['edit_version']) != document.get_latest_version().id: post = request.POST.copy() post['edit_version'] = document.get_latest_version().id form = DocumentForm(post) form.errors['contents'] = [_('Document was changed after you began editing it, please review the changes and then press save again')] if form.is_valid(): #Handle the labels #handle_labels(request,document) #Handle the document if not document.is_presentation: if form.cleaned_data.has_key('title'): title = form.cleaned_data['title'] else: title = document.get_latest_version().title else: if user.first_name.endswith('s'): title=user.first_name+' presentation' else: title = user.first_name+'s presentation' new_version = Version(document=document,title=title, contents=strip_p(form.cleaned_data['contents']), owner=request.user) new_version.save() if request.external: from curia.homepage.models import MenuItem try: menu = MenuItem.objects.get(content_type=get_content_type(document), object_id=document.id) menu.title = title menu.save() except MenuItem.DoesNotExist: pass if document.is_presentation: if document.owner_group: return HttpResponseRedirect(document.owner_group.get_absolute_url()) else: return HttpResponseRedirect(document.owner_user.get_absolute_url()) return HttpResponseRedirect(document.get_absolute_url()) else: latest_version = document.get_latest_version() form = DocumentForm(initial={'title': latest_version.title, 'contents': latest_version.contents, 'edit_version':latest_version.id}) return render_to_response(request, 'documents/edit.html', {'form':form, 'document':document})
def create_community(request): community_types = [ ('Friends', _("Friends")), ('Organization', _("Organization")), ('Happening', _("Happening")), ('Project group', _("Project group")), ('Online group', _("Online group")), ('Other group', _("Other group")) ] class CreateForm(django.forms.Form): name = django.forms.CharField(min_length=4, label=_('Name of community')) domain = django.forms.CharField(min_length=4, label=_('Domain'), initial='', help_text='.eldmyra.se') email = django.forms.CharField(max_length=150,required=True, label=_('Your e-mail address')) confirm_email = django.forms.CharField(max_length=150,required=True, label=_('Confirm your e-mail address')) community_type = django.forms.ChoiceField(choices=community_types, label=_('Describe yourself'), widget = django.forms.RadioSelect) user_contract = django.forms.BooleanField(required=False, widget=CheckboxInput(attrs={'label':_('I have read and accepted the <a href="/registration/administrator_agreement/" target="blank">administrator agreement</a>')}), label='') if request.POST: form = CreateForm(request.POST) email = form.data["email"] if email != '': if not EmailValidator(email): form.errors['email'] = (_('%s is not a valid email address') % email,) try: form.data["user_contract"] except: form.errors['user_contract'] = (_("You must accept the user agreement."),) if form.data["email"] != form.data["confirm_email"]: form.errors['confirm_email'] = (_("Emails did not match."),) try: Group.objects.get(name=form.data["name"]) form.errors['name'] = (_("That name is already taken."),) except Group.DoesNotExist: pass forbidden_names = ['support','login','administrator','administration','admin','administrate','administrering','administrera','eldmyra'] for forbidden_name in forbidden_names: if form.data['name'].lower() == forbidden_name: form.errors['name'] = (_("You may not call your community %s.") % forbidden_name,) forbidden_domains = ['blogg','blog','start','community','eldmyra','admin','fest','rollspel','ninja','dota','administrering','administrera','student','hantverk','demo','test','support','login','administrator','administration'] for forbidden_domain in forbidden_domains: if form.data['domain'].lower() == forbidden_domain: form.errors['domain'] = (_("You may not use the domain name %s.eldmyra.se") % forbidden_domain, ) try: user = User.objects.get(email=request.REQUEST['email']) except User.DoesNotExist: user = None try: MetaGroup.objects.get(domain=form.data['domain']+'.eldmyra.se') form.errors['domain'] = (_('Domain name is taken, please choose another'),) except MetaGroup.DoesNotExist: pass if form.is_valid(): password = None new_user = False if not user: # Create new user password = User.objects.make_random_password(6) user = User.objects.create(email=form.cleaned_data['email'], username=User.objects.make_random_password(30), is_active=False) user.set_password(password) user.save() new_user = True community = Group.objects.create(name=form.cleaned_data['name']) meta_group = MetaGroup.objects.create(group=community, created_by=user, domain=form.cleaned_data['domain']+'.eldmyra.se') presentation = Document.objects.create(owner_group=community, is_presentation=True) new_version = Version(document=presentation,title='Presentation', contents='', owner=user) new_version.save() community.user_set.add(user) if new_user: Invite.objects.create(user=user, group=community, inviter=user, message='') from django.template import loader, Context t = loader.get_template('registration/community_email.html') c = { 'password': password, 'email': form.cleaned_data['email'], 'domain': meta_group.domain, 'inviter': None, 'message': '', 'community': community, } subject = _('Your community %s has been registered at Eldmyra.se!') % (community) html_message = t.render(Context(c)) from curia.html2text import html2text from curia.mail import send_html_mail_with_attachments text_message = html2text(html_message) from django.contrib.sites.models import Site send_html_mail_with_attachments(subject=subject, message=text_message, html_message=html_message, from_email='invite@'+Site.objects.get_current().domain, recipient_list=[form.cleaned_data['email']]) # Homepage / Do not create a homepage, the no external page view is default for new communitites #document = Document.objects.create(owner_group=community, owner_user=user, is_presentation=False) #new_version = Version(document=document,title='Hem', contents='', owner=user) #new_version.save() # set up access rights #from curia.authentication import grant_access, get_public_user #grant_access(command='view', user=get_public_user(), obj=document) # create menu item #from curia.homepage.models import MenuItem #MenuItem.objects.create(group=community, content_type=get_content_type(document), object_id=document.id, title='Hem', url=document.get_absolute_url(), order=0, parent=None) from curia.labels.models import SuggestedLabel from curia.forums.models import Thread SuggestedLabel.objects.create(title=_('Events'), label=_('Events'), group=community, created_by=user, content_type=get_content_type(Thread)) SuggestedLabel.objects.create(title=_('Links'), label=_('Links'), group=community, created_by=user, content_type=get_content_type(Thread)) Label.objects.create(object_id=community.id, deleted=False, name=form.cleaned_data['community_type'], content_type=get_content_type(community), created_by = user, owner_user=user, owner_group=community) if new_user: return render_to_response(request, 'registration/create_community_done.html', {'community':community, 'disable_login_box':True}) else: return HttpResponseRedirect(community.get_external_absolute_url()) else: form = CreateForm() return render_to_response(request, 'registration/create_community.html', {'form':form, 'disable_login_box':True})