[wouso-dev] Invite your friends feature

Mircea-Ştefan Ghideu shtephan10 at gmail.com
Fri Apr 9 11:09:08 EEST 2010


On Fri, 09 Apr 2010 08:47:34 +0300
Alex Eftimie <alexeftimie at gmail.com> wrote:

> Pe 08.04.2010 19:49, Mircea-Ştefan Ghideu a scris:
> > On Thu, 8 Apr 2010 19:27:09 +0300
> > Alex Eftimie <alexeftimie at gmail.com> wrote:
> > 
> > Salut,
> > 
> >> M-am uitat pe cod și am văzut că în mare ai făcut ceea ce eu
> >> sugerasem mai devreme.
> > 
> > Eu încercasem deja în clasa UserProfile să adaug un câmp many2many
> > recursiv(self) dar atunci când vroiam să creez tabele în baza de
> > date, django nu le făcea. De aici am adăugat un obiect separat
> > Friendship şi am încercat să îl sincronizez cu obiectul User şi
> > UserProfile aşa cum se făcea în funcţia user_post_save.
> > 
> >> Dacă înțeleg problema bine, cred că modificare carea trebuie făcută
> >> este (în modelul Friendship) să faci ForeignKey-ul null-able și să
> >> adaugi un câmp fb_id (astfel încât să poți păstra relația many2many
> >> către self, unii 'self' neavând un user_profile asociat).
> >>
> >> Te rog spune-mi dacă am înțeles corect.
> > 
> > Defapt un utilizator care s-a logat pe wouso cu un cont Facebook are
> > deja profil asociat. Acesta vrea să-şi invite prietenii. Unii
> > dintre ei accepta invitaţia, şi prin asta deja li se asociaza un
> > profil. Acum utilizatorul vrea să-i adauge ca prieteni în lista lui
> > de prieteni. Lista asta este defapt obiectul Friendship şi nu ştiu
> > daca ce am făcut până acum e chiar corect, şi ca gândire dar şi ca
> > declarare.
> 
> Aaa, deci lista de prieteni se referă la „prieteni locali - wouso”, nu
> la prietenii de pe Facebook?

Prietenii de pe Facebook cărora le trimiţi invitaţii au pagină separată
de invitaţii unde foloseşti aplicaţia facebook de invitare.

> Cred că dacă legăturile se fac folosind User, se pot folosi aceste
> relații de prietenie și în afara Facebook, ceea ce e ok după părerea
> mea. Cred că e în regulă abordarea.

Mi-am dat seama în dimineaţa asta că ai dreptate, unii utilizatori nu
vor avea cont ataşat de facebook şi de aici am adaugat un câmp fb_id
iniţializat automat cu 0, şi atunci când un user se conectează şi cu
facebook valoarea aia se schimba cu id-ul corespondent din
facebookprofile.
--
class Friendship(models.Model):
    fb_id = models.IntegerField(default=0)
    user_prof = models.ForeignKey(UserProfile, null=True, unique=True)
    friends = models.ManyToManyField('self', null=True)
--

Am văzut că este o funcţie care sincronizează mereu user-ul cu profilul
lui, şi am încercat să adaug şi eu încă ceva care să sincronizeze şi
prietenii. Nu cred că am făcut bine, îmi dă şi erori. Ar
trebui să-i sincronizez atunci când îi adaugă? De fapt când ei raspund
la invitaţie şi sunt de acord.
--
def user_post_save(sender, instance, **kwargs):
    profile, new = UserProfile.objects.get_or_create(user=instance)
    #profile2, new2 = Friendship.objects.get_or_create(user=instance)
models.signals.post_save.connect(user_post_save, User)
--


Mircea


More information about the wouso-dev mailing list