def embed_data(value): import re links = list(re.finditer(r'(\[(.*?)\])', value)) # list() because we might need to reverse it later # examples of use: # [images/groups/1/sets/3] from django.core import urlresolvers from django.conf import settings links.reverse() # replace from the end as to not change the string in a way that interferes with the following replace operation for link in links: resolver = urlresolvers.RegexURLResolver(r'^/', settings.ROOT_URLCONF) callback, callback_args, callback_kwargs = resolver.resolve('/'+link.groups()[1]+'/') class Foo: pass request = Foo() from curia.authentication import get_public_user request.user = get_public_user() request.external = True request.community = None request.META = {'PATH_INFO':link.groups()[1]} request.domain = '' request.domain = '' request.mode = 'embed' request.GET = {} request.REQUEST = {} response = callback(request, *callback_args, **callback_kwargs) #replaced = get_content_for(link.groups()[1]) # foo = dir(response) # bar = response.content value = value.replace(link.groups()[0], response.content) return value
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 register(request): class RegisterForm(django.forms.Form): email = django.forms.CharField(label=_('E-mail address')) if request.POST: form = RegisterForm(request.POST) # validate email email = form.data['email'] if not EmailValidator(email): form.errors['email'].append(_('%s is not a valid email address') % email) if form.is_valid(): email = form.cleaned_data['email'] password = None try: user = User.objects.get(email=email) return HttpResponseRedirect('/registration/request_new_password/') except User.DoesNotExist: password = User.objects.make_random_password(6) user = User.objects.create(email=email, username=User.objects.make_random_password(30), is_active=False) user.set_password(password) user.save() if Invite.objects.filter(group=request.community, user=user, choice='-').count() == 0: Invite.objects.create(user=user, group=request.community, inviter=get_public_user(), message='') from django.template import loader, Context t = loader.get_template('registration/register_email.html') c = { 'password': password, 'email': email, 'domain': request.domain, 'community': request.community, } subject = _('Confirm e-mail for %s') % request.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='register@'+Site.objects.get_current().domain, recipient_list=[email]) return render_to_response(request, 'registration/register_email_sent.html', {}) else: form = RegisterForm(initial={}) return render_to_response(request, 'registration/register.html', {'form':form})
def external(request): if request.community == None: return render_to_response(request, '404_community.html') # get first menu item and display it from curia.homepage.models import MenuItem try: home = MenuItem.objects.filter(parent__isnull=True, group=request.community)[0] from curia.documents.views import version_response, get_latest v = get_latest(home.object_id) check_access(get_public_user(), obj=v.document, command='view') if v == None: raise Http404 return version_response(request, v) except IndexError: return render_to_response(request, 'no_external_page_error.html')
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 embed_data(value): import re links = list( re.finditer(r'(\[(.*?)\])', value)) # list() because we might need to reverse it later # examples of use: # [images/groups/1/sets/3] from django.core import urlresolvers from django.conf import settings links.reverse( ) # replace from the end as to not change the string in a way that interferes with the following replace operation for link in links: resolver = urlresolvers.RegexURLResolver(r'^/', settings.ROOT_URLCONF) callback, callback_args, callback_kwargs = resolver.resolve( '/' + link.groups()[1] + '/') class Foo: pass request = Foo() from curia.authentication import get_public_user request.user = get_public_user() request.external = True request.community = None request.META = {'PATH_INFO': link.groups()[1]} request.domain = '' request.domain = '' request.mode = 'embed' request.GET = {} request.REQUEST = {} response = callback(request, *callback_args, **callback_kwargs) #replaced = get_content_for(link.groups()[1]) # foo = dir(response) # bar = response.content value = value.replace(link.groups()[0], response.content) return value
def accept(request): from django.conf import settings try: REGISTRATION_FIELDS = settings.REGISTRATION_FIELDS except: REGISTRATION_FIELDS = ('name', 'birthday', 'gender', 'password') try: REGISTRATION_DETAILS = settings.REGISTRATION_DETAILS except: REGISTRATION_DETAILS = () class EnterCodeForm(django.forms.Form): if 'code' in request.REQUEST: if 'name' in REGISTRATION_FIELDS: first_name = django.forms.CharField(max_length=30,required=True, label=_('First name')) last_name = django.forms.CharField(max_length=30,required=True, label=_('Last name')) if 'birthday' in REGISTRATION_FIELDS: birthday = django.forms.DateField(required=False, label=_('Birthday'), help_text=_('Format is yyyy-MM-dd, e.g. 1980-05-27')) if 'gender' in REGISTRATION_FIELDS: gender = django.forms.ChoiceField(label=_('Gender'), choices=(('M', 'Male'), ('F', 'Female'),)) if 'password' in REGISTRATION_FIELDS: password = django.forms.CharField(max_length=30,required=True,widget = django.forms.PasswordInput, label=_('Password')) confirm_password = django.forms.CharField(max_length=30,required=True,widget = django.forms.PasswordInput, label=_('Confirm password')) code = django.forms.CharField(max_length=30,required=True,widget = django.forms.HiddenInput, label=_('code')) else: password = django.forms.CharField(max_length=30,required=True,widget = django.forms.PasswordInput, label=_('Password')) email = django.forms.CharField(max_length=150,required=True,widget = django.forms.HiddenInput, label=_('email')) user_contract = django.forms.BooleanField(required=False, widget=CheckboxInput(attrs={'label':_('I have read and accepted the <a href="/registration/user_agreement/" target="blank">user agreement</a>')}), label='') if request.POST: form = EnterCodeForm(request.REQUEST) try: form.data["user_contract"] except: form.errors['user_contract'] = (_("You must accept the user agreement."),) try: user = User.objects.get(email=request.REQUEST['email']) invites = Invite.objects.filter(group=request.community, user=user) if len(invites) == 0: form.errors['password'] = (_('You have not been invited to this community'),) if 'code' in request.REQUEST: if not user.check_password(request.REQUEST['code']): raise User.DoesNotExist() else: if not user.check_password(request.REQUEST['password']): raise User.DoesNotExist() except User.DoesNotExist: form.errors['password'] = (_('Username or password incorrect'),) if 'code' in request.REQUEST and form.data['password'] != form.data['confirm_password']: form.errors['confirm'] = (_('Passwords did not match.'),) if form.is_valid(): if 'code' in request.REQUEST: # set user details if 'name' in REGISTRATION_FIELDS: user.first_name = form.cleaned_data["first_name"] user.last_name = form.cleaned_data["last_name"] user.set_password(form.cleaned_data['password']) user.is_active = True user.save() if 'birthday' in REGISTRATION_FIELDS: birthday = form.cleaned_data['birthday'] else: birthday = None if 'gender' in REGISTRATION_FIELDS: gender = form.cleaned_data['gender'] else: gender = '-' meta_user = MetaUser.objects.create(user=user, birthday=birthday, gender=gender) #meta_user.picture = 'user-pictures/default_user_image.png' #meta_user.thumbnail = 'user-thumbnails/default_user_image.png' #meta_user.icon = 'user-icons/default_user_image.png' meta_user.language = 'sv' meta_user.save() if 'curia.notifications' in settings.INSTALLED_APPS: Bookmark.objects.create(user=user, url='/users/'+str(user.id)+'/', title=user.first_name) for member in request.community.user_set.all(): if member != user: u = get_current_user() if u.is_anonymous(): u = get_public_user() SubscriptionResult.objects.create(user=member, content_type=get_content_type(user), object_id=user.pk, originator_user=u, originator_group=get_current_community()) community = request.community community.user_set.add(user) community.save() everyone = get_everyone_group() everyone.user_set.add(user) everyone.save() #Create invite for each event in the group that has not already passed #start_span = start_of_day(datetime.now())-timedelta(hours=3) #end_span = start_span+timedelta(weeks=52) #active_events = Event.objects.filter(owner_group=community, start_time__lt=end_span, end_time__gt=start_span, repeat='', deleted=False) #for event in active_events: # Reply.objects.create(inviter=community.meta.created_by, event=event, user=user) for invite in invites: invite.choice = 'Y' invite.save() from django.contrib.auth import authenticate user = authenticate(username=user.username, password=form.cleaned_data['password']) login(request, user) try: if community.meta.created_by == user and settings.REGISTRATION_SYSTEM == 'invite': return HttpResponseRedirect('%s/registration/' % community.get_absolute_url()) except: pass try: return HttpResponseRedirect(settings.REGISTRATION_NEXT) except: return HttpResponseRedirect(community.get_absolute_url()) else: initial = {} if 'code' in request.REQUEST: initial['code'] = request.REQUEST['code'] initial['email'] = request.REQUEST['email'] form = EnterCodeForm(initial=initial) return render_to_response(request, 'registration/enter_code.html', {'form': form, 'email':request.REQUEST['email'], 'disable_login_box':True})