コード例 #1
0
ファイル: views.py プロジェクト: willmcgugan/Locidesktop
    def create_desktop(request, desktop_name, private):
        slug = slugify(desktop_name)
        if not slug:
            return Result('fail', message='Invalid characters in desktop name.')

        num_desktops = Desktop.objects.filter(owner=request.user).count()

        if num_desktops >= 10:
            return Result('fail', message="Sorry, there is currently a limit of 10 desktops per user.")

        user = request.user
        uid = u'%s.%s' % (user.username, slug)

        private = private != 'false';

        try:
            desktop = Desktop.objects.create(   owner=user,
                                                name=desktop_name,
                                                slug=slug,
                                                uid=uid,
                                                private=private )
        except IntegrityError:
            return Result('fail', message='You already have a desktop of this name.')

        user_desktops_changed.send(sender=DesktopAPI, username=user.username)

        return Result('success',
                      slug=slug,
                      username=user.username,
                      url=desktop.get_edit_url())
コード例 #2
0
ファイル: views.py プロジェクト: willmcgugan/Locidesktop
 def rename_desktop(request, username, desktop_slug, new_name):
     new_slug = slugify(new_name)
     if Desktop.objects.filter(owner__username=username, slug=new_slug).count():
         return Result('fail', message="Can't rename this desktop, a desktop of that name already exists.")
     if not new_slug:
         return Result('fail', message="Invalid name. Desktop was not renamed.")
     if len(new_slug) >= 30:
         return Result('fail', message="Name is too long (must be less that 30 characters)")
     if request.user.username != username and not request.user.is_staff:
         return Result('nopermission',
                       message="You must be the owner of the desktop to rename it")
     user_desktops_changed.send(sender=DesktopAPI, username=username)
     desktop = Desktop.objects.get(owner__username=username, slug=desktop_slug)
     desktop.name = new_name
     desktop.slug = new_slug
     desktop.save()
     #user_desktops_changed.send(sender=DesktopAPI, username=username)
     return Result(url=desktop.get_absolute_url())
コード例 #3
0
ファイル: views.py プロジェクト: willmcgugan/Locidesktop
def _create(request, view_name='create_account'):

    td = {}
    td['form_url'] = reverse(view_name)

    form = request.POST.get
    errors = defaultdict(list)

    invite = slugify(request.GET.get('invite', '').strip())
    if invite:
        td['invite'] = invite

    def add_error(field, error):
        errors[field].append(error)

    if request.method == "POST":

        invite = form('invite', '').strip()
        first_name = form('first_name', '').strip()
        last_name = form('last_name', '').strip()
        email = form('email', '').strip()
        username = slugify(form('username', '').strip().lower())
        password = form('password', '')
        password_check = form('password_check', '')

        if settings.REQUIRE_INVITE:
            if not invite:
                add_error('invite', 'Invite code is required')
            else:
                try:
                    Invite.check(invite)
                except InviteError, e:
                    add_error('invite', str(e))

        if not first_name:
            add_error('first_name', "First name is required")

        if not email:
            add_error('email', 'Email is required')
        elif not email_re.match(email):
            add_error('email', "Doesn't look like an email")

        if email:
            try:
                user = User.objects.get(email=email)
            except User.DoesNotExist:
                pass
            else:
                add_error('email', 'An account with this email address already exists')

        if username:
            try:
                user = User.objects.get(username=username)
            except User.DoesNotExist:
                pass
            else:
                add_error('username', 'An account with this username address already exists')

        if not username:
            add_error('username', 'Username is required')
        elif len(username) <= 3:
            add_error('username', 'Username is too short (must be greater than 3 characters)')
        elif is_reserved_path(username):
            add_error('username', 'Sorry, this username is reserved')

        if not password:
            add_error('password', 'Password is required')

        elif len(password) <= 3:
            add_error('password', 'Password is too short (must be greater than 3 characters)')

        if password != password_check:
            add_error('password_check', 'Passwords do not match')
            password = password_check = ''


        td.update( invite=invite,
                   first_name=first_name,
                   last_name=last_name,
                   email=email,
                   username=username,
                   password=password,
                   password_check=password_check )

        if not errors:
            try:
                if settings.REQUIRE_INVITE:
                    Invite.use(invite)
                new_profile = Profile.create( username,
                                              password,
                                              email,
                                              first_name=first_name,
                                              last_name=last_name )

            except InviteError, e:
                add_error('invite', str(e))

            except ValueError, e:
                field, msg = str(e).split(':')
                add_error(field, msg)