upload, recovery

This commit is contained in:
j 2010-02-03 17:29:11 +05:30
commit 57fad37643
7 changed files with 118 additions and 13 deletions

View file

@ -5,7 +5,20 @@ from django.db import models
from django.contrib.auth.models import User
from django.utils import simplejson as json
from django.contrib.auth.models import User
from django.db.models import signals
from django.dispatch import dispatcher
class UserProfile(models.Model):
recover_key = models.TextField()
user = models.ForeignKey(User, unique=True)
def user_post_save(sender, instance, **kwargs):
profile, new = UserProfile.objects.get_or_create(user=instance)
models.signals.post_save.connect(user_post_save, sender=User)
class Preference(models.Model):
user = models.ForeignKey(User, related_name='preferences')
created = models.DateTimeField(auto_now_add=True)

View file

@ -1,10 +1,12 @@
# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
import uuid
import hashlib
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render_to_response, get_object_or_404, get_list_or_404
from django.template import RequestContext
from django.template import RequestContext, loader, Context
from django.utils import simplejson as json
from django import forms
@ -109,8 +111,19 @@ def api_recover(request):
if q.count() > 0:
user = q[0]
if user:
user.email_user('recovert','not yest, but soon you will be able to recover')
#user.sendmail(...) #FIXME: send recovery mail
key = hashlib.sha1(str(uuid.uuid4())).hexdigest()
user_profile = user.get_profile()
user_profile.recover_key = key
user_profile.save()
template = loader.get_template('recover_mail.txt')
context = RequestContext({
'recover_url': request.build_absolute_uri("/r/%s" % key),
'sitename': settings.SITENAME,
})
message = template.render(context)
subject = '%s account recovery' % settings.SITENAME
user.email_user(subject, message)
response = {'status': {'code': 200, 'text': 'recover email sent.'}}
else:
response = {'status': {'code': 404, 'text': 'user or email not found.'}}