示例#1
0
def org_create(request):
    o = Org()
    o.name = request.POST['name'].encode('utf-8')
    o.handle = create_handle(request.POST['name'])
    o.vision_statement = request.POST['vision_statement'].encode('utf-8')
    if request.POST['social_mission'] == 'yes':
        o.social_mission = True
    else:
        o.social_mission = False
    if request.POST['profit'] == 'yes':
        o.profit_seeking = True
    else:
        o.profit_seeking = False

    o.save()
    if request.POST['admin'] == 'yes':
        o.admins.add(request.user)
        o.save()

    f, created = UserToOrgFollow.objects.get_or_create(user=request.user,
                                                       org=o)
    f.following = True
    f.save()
    request.user.refresh_orgs_following()
    return json_response(json_encode(o))
示例#2
0
    def save(self, commit=True):
        instance = super(CreateOrgForm, self).save(False)
        instance.handle = create_handle(instance.name)

        if commit:
            instance.save()
            self.save_m2m()
        return instance
示例#3
0
文件: forms.py 项目: Bartelo/openjumo
    def save(self, commit=True):
        instance = super(CreateOrgForm, self).save(False)
        instance.handle = create_handle(instance.name)

        if commit:
            instance.save()
            self.save_m2m()
        return instance
示例#4
0
def setup(request):
    sans_facebook = True if request.GET.has_key(
        'sans_facebook') and request.GET['sans_facebook'] else False
    redirect_to = request.GET.get('redirect_to', "/")

    form = CreateAccountForm(initial={
        'redirect_to': redirect_to,
    })
    if request.POST:
        sans_facebook = True if request.POST.has_key(
            'sans_facebook') and request.POST['sans_facebook'] else False
        form = CreateAccountForm(request.POST)
        if form.is_valid():
            u = User()
            u.bio = form.cleaned_data['bio']
            u.birth_year = form.cleaned_data['birth_year']
            u.email = u.long_email = form.cleaned_data['email']
            u.fb_access_token = form.cleaned_data['fb_access_token']
            u.gender = form.cleaned_data['gender']
            u.first_name = form.cleaned_data['first_name']
            u.last_name = form.cleaned_data['last_name']
            u.facebook_id = form.cleaned_data['fbid']
            u.bio = u.bio.encode('utf-8') if u.bio else ""
            u.first_name = u.first_name.encode('utf-8') if u.first_name else ""
            u.last_name = u.last_name.encode('utf-8') if u.last_name else ""
            if form.cleaned_data['location_data']:
                u.location = Location.get_or_create(
                    form.cleaned_data['location_data'])
            u.next_email_time = datetime.datetime.now() + timedelta(days=1)
            u.username = create_handle('%s%s' % (u.first_name, u.last_name))
            u.password = hash_password(form.cleaned_data['password'])
            u.save()

            Subscription.get_or_create(user=u, pub_id=NOTIFICATIONS_PUB)

            #Post to Facebook
            if form.cleaned_data['post_to_facebook']:
                fb_helpers.post_joined_to_wall(u)

            cache.put_on_handle(u, u.username)

            redirect_to = form.cleaned_data['redirect_to'] or '/'
            #perform for all that login magic that happens under the covers
            attempt_login(request, u.username, form.cleaned_data["password"])
            return set_auth_cookies(HttpResponseRedirect(redirect_to), u)

    return render(
        request, 'user/setup.html', {
            'title': 'Setup your account',
            'create_form': form,
            'sans_facebook': sans_facebook,
        })
示例#5
0
文件: views.py 项目: Bartelo/openjumo
def setup(request):
    sans_facebook = True if request.GET.has_key('sans_facebook') and request.GET['sans_facebook'] else False
    redirect_to = request.GET.get('redirect_to', "/")

    form = CreateAccountForm(initial={'redirect_to': redirect_to,})
    if request.POST:
        sans_facebook = True if request.POST.has_key('sans_facebook') and request.POST['sans_facebook'] else False
        form = CreateAccountForm(request.POST)
        if form.is_valid():
            u = User()
            u.bio = form.cleaned_data['bio']
            u.birth_year = form.cleaned_data['birth_year']
            u.email = u.long_email = form.cleaned_data['email']
            u.fb_access_token = form.cleaned_data['fb_access_token']
            u.gender = form.cleaned_data['gender']
            u.first_name = form.cleaned_data['first_name']
            u.last_name = form.cleaned_data['last_name']
            u.facebook_id = form.cleaned_data['fbid']
            u.bio = u.bio.encode('utf-8') if u.bio else ""
            u.first_name = u.first_name.encode('utf-8') if u.first_name else ""
            u.last_name = u.last_name.encode('utf-8') if u.last_name else ""
            if form.cleaned_data['location_data']:
                u.location = Location.get_or_create(form.cleaned_data['location_data'])
            u.next_email_time = datetime.datetime.now() + timedelta(days = 1)
            u.username = create_handle('%s%s' % (u.first_name, u.last_name))
            u.password = hash_password(form.cleaned_data['password'])
            u.save()

            Subscription.get_or_create(user = u, pub_id = NOTIFICATIONS_PUB)

            #Post to Facebook
            if form.cleaned_data['post_to_facebook']:
                fb_helpers.post_joined_to_wall(u)

            cache.put_on_handle(u, u.username)

            redirect_to = form.cleaned_data['redirect_to'] or '/'
            #perform for all that login magic that happens under the covers
            attempt_login(request, u.username, form.cleaned_data["password"])
            return set_auth_cookies(HttpResponseRedirect(redirect_to), u)

    return render(request, 'user/setup.html', {
        'title' : 'Setup your account',
        'create_form' : form,
        'sans_facebook': sans_facebook,
        })
示例#6
0
文件: views.py 项目: Bartelo/openjumo
def org_create(request):
    o = Org()
    o.name = request.POST['name'].encode('utf-8')
    o.handle = create_handle(request.POST['name'])
    o.vision_statement = request.POST['vision_statement'].encode('utf-8')
    if request.POST['social_mission'] == 'yes':
        o.social_mission = True
    else:
        o.social_mission = False
    if request.POST['profit'] == 'yes':
        o.profit_seeking = True
    else:
        o.profit_seeking = False

    o.save()
    if request.POST['admin'] == 'yes':
        o.admins.add(request.user)
        o.save()

    f, created = UserToOrgFollow.objects.get_or_create(user = request.user, org = o)
    f.following = True
    f.save()
    request.user.refresh_orgs_following()
    return json_response(json_encode(o))
示例#7
0
            setattr(original, f, smart_str(org[f], encoding='utf-8'))

    for f in int_fields:
        if f in org and org[f] != getattr(original, f):
            if org[f]:
                setattr(original, f, int(org[f]))
            else:
                setattr(original, f, None)

    for f in bool_fields:
        if f in org and org[f] != getattr(original, f):
            setattr(original, f, org[f])

    if 'handle' in org and org['handle'] != original.handle:
        _handle = original.handle
        original.handle = create_handle(org['handle'])
        cache.bust_on_handle(original, _handle, False)

    if 'methods' in org:
        for method in org['methods']:
            if method not in [l.method for l in original.method_set.all()]:
                m = Method()
                m.method = method
                m.date_created = datetime.datetime.now()
                m.date_updated = datetime.datetime.now()
                m.org = original
                m.save()

        for method in original.method_set.all():
            if method.method not in org['methods']:
                method.delete()
示例#8
0
def update_user(request):
    if 'user' not in request.POST:
        return HttpResponseBadRequest()
    user = json.loads(request.POST['user'])

    if 'location' in user and user['location']:
        loc = user['location']
        raw_geodata = json.dumps(loc["raw_geodata"]) if isinstance(
            loc.get("raw_geodata"), dict) else loc.get("raw_geodata")

        #Until we fix duplicate locations we have to do the following...lame.
        _locs = Location.objects.filter(
            raw_geodata=raw_geodata,
            longitude=loc.get('longitude', None),
            latitude=loc.get('latitude', None),
            address=loc.get('address', ' '),
            region=loc.get('region', ' '),
            locality=loc.get('locality', ' '),
            postal_code=loc.get('postal_code', ' '),
            country_name=loc.get('country_name', ' '))

        if len(_locs) > 0:
            _loc = _locs[0]
        else:
            _loc = Location(
                raw_geodata=raw_geodata,
                longitude=loc.get('longitude', None),
                latitude=loc.get('latitude', None),
                address=loc.get('address', ' '),
                region=loc.get('region', ' '),
                locality=loc.get('locality', ' '),
                postal_code=loc.get('postal_code', ' '),
                country_name=loc.get('country_name', ' '),
            )
            _loc.save()
        request.user.location = _loc
    else:
        request.user.location = None

    str_fields = [
        'first_name',
        'last_name',
        'email',
        'gender',
        'bio',
        'url',
        'twitter_id',
        'flickr_id',
        'youtube_id',
        'vimeo_id',
        'blog_url',
    ]

    settings_fields = [
        'enable_jumo_updates',
        'email_stream_frequency',
        'post_to_fb',
    ]

    int_fields = [
        'birth_year',
    ]

    if 'enable_followed_notification' in user:
        try:
            sub = request.user.subscriptions.get(id=NOTIFICATIONS_PUB)
        except Subscription.DoesNotExist:
            sub = Subscription.get_or_create(user=request.user,
                                             pub_id=NOTIFICATIONS_PUB)

        if sub.subscribed <> user['enable_follow_notification']:
            sub.subscribed = user['enable_follow_notification']
            sub.save()

    for f in str_fields:
        if f in user and user[f] != getattr(request.user, f):
            setattr(request.user, f, user[f])

    for f in settings_fields:
        settings = user['settings']
        if f in settings:
            setattr(request.user, f, settings[f])

    for f in int_fields:
        if f in user and user[f] != getattr(request.user, f):
            if user[f] == '':
                user[f] = None
            setattr(request.user, f, user[f])

    if 'password' in user and user['password'] != '':
        request.user.password = hash_password(user['password'])
    if 'username' in user and user['username'] != request.user.username:
        _username = request.user.username
        request.user.username = create_handle(user['username'])
        cache.bust_on_handle(request.user, _username, False)

    request.user.save()
    cache.bust_on_handle(request.user, request.user.username)
    return json_response({'result': request.user.username})
示例#9
0
文件: views.py 项目: Bartelo/openjumo
def update_user(request):
    if 'user' not in request.POST:
        return HttpResponseBadRequest()
    user = json.loads(request.POST['user'])

    if 'location' in user and user['location']:
        loc = user['location']
        raw_geodata = json.dumps(loc["raw_geodata"]) if isinstance(loc.get("raw_geodata"), dict) else loc.get("raw_geodata")

        #Until we fix duplicate locations we have to do the following...lame.
        _locs = Location.objects.filter(raw_geodata = raw_geodata,
            longitude = loc.get('longitude', None),
            latitude = loc.get('latitude', None),
            address = loc.get('address', ' '),
            region = loc.get('region', ' '),
            locality = loc.get('locality', ' '),
            postal_code = loc.get('postal_code', ' '),
            country_name = loc.get('country_name', ' '))

        if len(_locs) > 0:
            _loc = _locs[0]
        else:
            _loc = Location(raw_geodata = raw_geodata,
                longitude = loc.get('longitude', None),
                latitude = loc.get('latitude', None),
                address = loc.get('address', ' '),
                region = loc.get('region', ' '),
                locality = loc.get('locality', ' '),
                postal_code = loc.get('postal_code', ' '),
                country_name = loc.get('country_name', ' '),)
            _loc.save()
        request.user.location = _loc
    else:
        request.user.location = None

    str_fields = [
                    'first_name', 'last_name', 'email', 'gender', 'bio',
                    'url', 'twitter_id', 'flickr_id', 'youtube_id', 'vimeo_id', 'blog_url',
                 ]

    settings_fields = [
                    'enable_jumo_updates', 'email_stream_frequency', 'post_to_fb',
                  ]

    int_fields = [
                    'birth_year',
                 ]

    if 'enable_followed_notification' in user:
        try:
            sub = request.user.subscriptions.get(id=NOTIFICATIONS_PUB)
        except Subscription.DoesNotExist:
            sub = Subscription.get_or_create(user=request.user, pub_id=NOTIFICATIONS_PUB)

        if sub.subscribed <> user['enable_follow_notification']:
            sub.subscribed = user['enable_follow_notification']
            sub.save()

    for f in str_fields:
        if f in user and user[f] != getattr(request.user, f):
            setattr(request.user, f, user[f])

    for f in settings_fields:
        settings = user['settings']
        if f in settings:
            setattr(request.user, f, settings[f])

    for f in int_fields:
        if f in user and user[f] != getattr(request.user, f):
            if user[f] == '':
                user[f] = None
            setattr(request.user, f, user[f])

    if 'password' in user and user['password'] != '':
        request.user.password = hash_password(user['password'])
    if 'username' in user and user['username'] != request.user.username:
        _username = request.user.username
        request.user.username = create_handle(user['username'])
        cache.bust_on_handle(request.user, _username, False)

    request.user.save()
    cache.bust_on_handle(request.user, request.user.username)
    return json_response({'result' : request.user.username})
示例#10
0
文件: views.py 项目: Bartelo/openjumo
            setattr(original, f, smart_str(org[f], encoding='utf-8'))

    for f in int_fields:
        if f in org and org[f] != getattr(original, f):
            if org[f]:
                setattr(original, f, int(org[f]))
            else:
                setattr(original, f, None)

    for f in bool_fields:
        if f in org and org[f] != getattr(original, f):
            setattr(original, f, org[f])

    if 'handle' in org and org['handle'] != original.handle:
        _handle = original.handle
        original.handle = create_handle(org['handle'])
        cache.bust_on_handle(original, _handle, False)

    if 'methods' in org:
        for method in org['methods']:
            if method not in [l.method for l in original.method_set.all()]:
                m = Method()
                m.method = method
                m.date_created = datetime.datetime.now()
                m.date_updated = datetime.datetime.now()
                m.org = original
                m.save()

        for method in original.method_set.all():
            if method.method not in org['methods']:
                method.delete()