示例#1
0
    def site_profil_edytuj(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        if not self.game.soj_czy_moze_edytowac_opis():
            self.game.send_message(
                "Nie masz uprawnień do edycji opisu sojuszu")
            return HttpResponseRedirect(url(self.urls.profil))

        if self.request.method == 'POST':
            form = SojuszForm(self.request.POST,
                              self.request.FILES,
                              instance=sojusz_uzytkownika)
            if form.is_valid():
                obj = form.save(commit=False)
                if not obj.avatar:
                    obj.avatar = sojusz_uzytkownika.avatar
                obj.save()  # tu tak ma byc
                self.game.send_message("Opis sojuszu został zapisany")
                return HttpResponseRedirect(url(self.urls.my))
        else:
            form = SojuszForm(instance=sojusz_uzytkownika)
        topnav = topnav_site(self.game)
        return {"topnav": topnav, "form": form, "self.game": self.game}
示例#2
0
    def site_zaproszenia(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        if self.request.REQUEST.has_key(
                "del") and self.game.soj_czy_moze_zapraszac():
            sojusz_uzytkownika.zaproszenia_set.filter(
                pk=self.request.REQUEST['del']).delete()
        zaproszenia = sojusz_uzytkownika.zaproszenia_set.order_by("data")

        if self.request.REQUEST.has_key("nick"):
            try:
                zapraszany = User.objects.get(
                    username=self.request.REQUEST['nick'])
                sojusz_mozesz = self.game.soj_czy_moze_zapraszac()
                if not sojusz_mozesz:
                    self.game.send_message('Nie masz uprawnień do zapraszania')
                    return HttpResponseRedirect(url(self.urls.zaproszenia))
                return HttpResponseRedirect(
                    url(self.urls.wyslij_zaproszenie, object_id=zapraszany.id))

            except User.DoesNotExist:
                self.game.send_message('Nie ma takiego gracza')
                return HttpResponseRedirect(url(self.urls.zaproszenia))

        topnav = topnav_site(self.game)
        return {
            "topnav": topnav,
            "zaproszenia": zaproszenia,
            "self.game": self.game
        }
示例#3
0
    def site_report(self, object_id):
        try:
            temat = Tematy.objects.get(pk=object_id)
        except Tematy.DoesNotExist:
            return HttpResponseRedirect(url(self.main.main))

        if self.request.method == 'POST':
            form = RaportujTemat(data=self.request.POST)
            if form.is_valid():
                t_rap = TematyMod.objects.create(
                    powod=form.cleaned_data['powod'],
                    kto_raportowal=self.game.user,
                    nadawca=temat.nadawca,
                    odbiorca=temat.odbiorca,
                    temat=temat.temat,
                    data=temat.data)
                for w in temat.wiadomosci_set.all():
                    WiadomosciMod.objects.create(temat=t_rap,
                                                 tekst=w.tekst,
                                                 kto=w.kto,
                                                 data=w.data)
                self.game.send_message("Raport został przyjęty")
                return HttpResponseRedirect(url(self.url.list))
        else:
            form = RaportujTemat()
        topnav = topnav_site(self.game)
        return {"topnav": topnav, "temat": temat, "form": form}
示例#4
0
    def site_czlonkowie(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        czlonek_sojusz = self.game.get_sojusz_czlonek()

        if self.request.REQUEST.has_key(
                "del") and self.game.soj_czy_moze_wyrzucac():
            if Czlonkowie.objects.select_for_update().filter(
                    sojusz=sojusz_uzytkownika,
                    pk=self.request.REQUEST['del']).count() > 0:
                czlonek = Czlonkowie.objects.select_for_update().get(
                    sojusz=sojusz_uzytkownika, pk=self.request.REQUEST['del'])
                if not czlonek.wlasciciel:
                    czlonek.delete()
                else:
                    ile_wlascicieli = Czlonkowie.objects.filter(
                        sojusz=sojusz_uzytkownika, wlasciciel=True).count()
                    if czlonek_sojusz.wlasciciel and ile_wlascicieli >= 2:
                        czlonek.delete()

        czlonkowie = sojusz_uzytkownika.czlonkowie_set.order_by("data")
        topnav = topnav_site(self.game)
        return {
            "topnav": topnav,
            "czlonkowie": czlonkowie,
            "self.game": self.game,
        }
示例#5
0
文件: profile.py 项目: anih/ugame_alt
 def site_show(self, object_id):
     try:
         userprofile = UserProfile.objects.get(pk=object_id)
     except UserProfile.DoesNotExist:
         return HttpResponseRedirect(url(self.all_urls.main.main))
     topnav = topnav_site(self.game)
     return {"u": userprofile, "topnav": topnav}
示例#6
0
    def site_show(self, object_id):
        topnav = topnav_site(self.game)
        raport = Raporty.objects.get(pk=object_id, user=self.game.user)
        if self.request.REQUEST.get('delete', None):
            raport.delete()
            return HttpResponseRedirect(url(self.urls.list))

        return {"raport": raport, "topnav": topnav}
示例#7
0
 def site_show(self, object_id):
     try:
         sojusz = Sojusz.objects.get(pk=object_id)
     except:
         self.game.send_message("Nie ma takiego sojuszu")
         return HttpResponseRedirect(url(self.urls.main))
     czlonkowie = sojusz.czlonkowie_set.order_by("data")
     topnav = topnav_site(self.game)
     return {"topnav": topnav, "sojusz": sojusz, "czlonkowie": czlonkowie}
示例#8
0
    def site_wyslij_zaproszenie(self, object_id=None):
        try:
            zapraszany = User.objects.get(pk=object_id)
        except:
            raise Http404

        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        if not self.game.soj_czy_moze_zapraszac():
            self.game.send_message("Nie możesz zapraszać")
            return HttpResponseRedirect(url(self.urls.zaproszenia))
        elif self.game.soj_czy_nie_nalezy(
                zapraszany,
                sojusz_uzytkownika) and self.game.soj_czy_nie_zaproszony(
                    zapraszany, sojusz_uzytkownika):
            zaproszenie_obj = Zaproszenia(user=zapraszany,
                                          sojusz=sojusz_uzytkownika,
                                          od=self.game.user)
            if self.request.method == 'POST':
                form = ZaproszenieForm(data=self.request.REQUEST,
                                       instance=zaproszenie_obj)
                if form.is_valid():
                    form.save()
                    self.game.send_message("Zaproszenie zostało wysłane")
                    SojuszLog.objects.create(
                        sojusz=sojusz_uzytkownika,
                        tekst='Gracz ' + "<a href='/game/usr/" +
                        str(zapraszany.pk) + "/'>" + zapraszany.username +
                        '</a> został zaproszony przez gracza ' + "<a "
                        "href='/game/usr/" + str(self.game.user.pk) + "/'>" +
                        self.game.user.username + "</a>")
                    return HttpResponseRedirect(url(self.urls.zaproszenia))
            else:
                form = ZaproszenieForm(instance=zaproszenie_obj)

            topnav = topnav_site(self.game)
            return {"topnav": topnav, "form": form, "zapraszany": zapraszany}
        else:
            self.game.send_message(
                "Użytkownik już był zapraszany lub jest w plemieniu")
        return HttpResponseRedirect(url(self.urls.zaproszenia))
示例#9
0
    def site_main(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.my))

        topnav = topnav_site(self.game)
        zaproszenia = self.game.user.zaproszenia_set.order_by("data")
        return {
            "topnav": topnav,
            "zaproszenia": zaproszenia,
        }
示例#10
0
    def site_przeglad(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        wydarzenia = sojusz_uzytkownika.sojuszlog_set.order_by("-id")
        topnav = topnav_site(self.game)
        return {
            "topnav": topnav,
            "sojusz": sojusz_uzytkownika,
            "wydarzenia": wydarzenia
        }
示例#11
0
    def site_registration(self):
        form = UserCreationForm()

        if self.request.method == 'POST':
            form = UserCreationForm(data=self.request.POST)
            if form.is_valid():
                user = form.save()
                self._mine_login(user)
                messages.info(self.request,
                              message="Dziękujemy za zarejestrowanie się")

                #RegistrationEmailTask.delay_countdown(user.id)

                if 'next' in self.request.REQUEST and self.request.REQUEST[
                        "next"] != url(self.urls.registration):
                    return HttpResponseRedirect(self.request.REQUEST['next'])
                return HttpResponseRedirect(url(self.all_urls.main.main))

        return {
            "form": form,
        }
示例#12
0
文件: profile.py 项目: anih/ugame_alt
 def site_change_pass(self, activation_key):
     data_mozliwa = datetime.datetime.now() - datetime.timedelta(days=1)
     zmiany = ZmianaHasla.objects.select_for_update().filter(
         hash=activation_key, data__gte=data_mozliwa)
     for z in zmiany:
         user = User.objects.select_for_update().get(pk=z.user_id)
         user.set_password(z.haslo)
         user.save(force_update=True)
         message = "Zmiana hasła powiodła się"
         send_info_message(user=user, message=message)
         z.delete()
     return HttpResponseRedirect(url(self.urls.edit))
示例#13
0
文件: profile.py 项目: anih/ugame_alt
 def site_change_email(self, activation_key):
     data_mozliwa = datetime.datetime.now() - datetime.timedelta(days=1)
     zmiany = ZmianaMaila.objects.select_for_update().filter(
         hash=activation_key, data__gte=data_mozliwa)
     for z in zmiany:
         user = User.objects.select_for_update().get(pk=z.user_id)
         StareMaile.objects.create(user=user, email=user.email)
         user.email = z.email
         user.save(force_update=True)
         message = "Zmiana emaila powiodła się"
         send_info_message(user=user, message=message)
         z.delete()
     return HttpResponseRedirect(url(self.urls.edit))
示例#14
0
    def site_dolacz(self, object_id=None):
        sojusz_uzytkownika = self.game.get_sojusz()
        if sojusz_uzytkownika:
            self.game.send_message("Należysz już do sojuszu")
            return HttpResponseRedirect(url(self.urls.main))

        zaproszenia = self.game.user.zaproszenia_set.order_by("data")
        try:
            sojusz = Sojusz.objects.get(pk=object_id)
            zaproszenie_obj = self.game.user.zaproszenia_set.get(sojusz=sojusz)
        except:
            self.game.send_message("Nie masz zaproszenia do sojuszu")
            return HttpResponseRedirect(url(self.urls.main))

        self.game.send_message('Dołączyłeś do sojuszu: %s' % (sojusz.nazwa, ))
        new = Czlonkowie.objects.create(user=self.game.user, sojusz=sojusz)
        tekst = "<a href='/game/usr/%s/'>%s</a> przyjął zaproszenie do sojuszu." % (
            self.game.user.pk,
            self.game.user.username,
        )
        SojuszLog.objects.create(sojusz=sojusz, tekst=tekst)
        zaproszenie_obj.delete()
        return HttpResponseRedirect(url(self.urls.main))
示例#15
0
    def site_opusc(self):
        sojusz_uzytkownika = self.game.get_sojusz()
        if not sojusz_uzytkownika:
            return HttpResponseRedirect(url(self.urls.main))

        nalezy = self.game.get_sojusz_czlonek()

        if nalezy.wlasciciel and Czlonkowie.objects.filter(
                sojusz=sojusz_uzytkownika, wlasciciel=True).count() <= 1:
            sojusz_uzytkownika.zaproszenia_set.all().delete()
            sojusz_uzytkownika.czlonkowie_set.all().delete()
            sojusz_uzytkownika.sojuszlog_set.all().delete()
            sojusz_uzytkownika.sojuszchat_set.all().delete()
            sojusz_uzytkownika.delete()
            nalezy.delete()
        else:
            nalezy.delete()
            # except:pass

        send_info_message(user=self.game.user,
                          message='Opuściłeś sojusz: %s' %
                          (sojusz_uzytkownika.nazwa, ))
        return HttpResponseRedirect(url(self.urls.main))
示例#16
0
 def site_odrzuc(self, object_id=None):
     try:
         zaproszenie = self.game.user.zaproszenia_set.get(pk=object_id)
         sojusz = zaproszenie.sojusz
         SojuszLog.objects.create(
             sojusz=sojusz,
             tekst="<a href='/game/usr/" + str(self.game.user.pk) + "/'>" +
             self.game.user.username +
             '</a> odrzucił zaproszenie do sojuszu.' + "</a>")
         zaproszenie.delete()
         message = 'Odrzuciłeś zaproszenie do sojusz: %s' % (sojusz.nazwa, )
         send_error_message(user=self.user, message=message)
     except:
         sojusz = None
     return HttpResponseRedirect(url(self.urls.main))
示例#17
0
    def site_zaloz(self):
        if Czlonkowie.objects.select_for_update().filter(
                user=self.game.user).count() > 0 > 0:
            return HttpResponseRedirect(url(self.urls.main))

        if self.request.method == 'POST':
            form = SojuszForm(self.request.POST, self.request.FILES)
            if form.is_valid():
                obj = form.save(commit=False)
                obj.save()  # tu tak ma byc
                czlonek = Czlonkowie.objects.create(user=self.game.user,
                                                    sojusz=obj,
                                                    wlasciciel=True)
                SojuszLog.objects.create(
                    sojusz=obj,
                    tekst='Sojuszu został założony przez ' +
                    "<a href='/game/usr/" + str(self.game.user.pk) + "/'>" +
                    self.game.user.username + "</a>")
                return HttpResponseRedirect(url(self.urls.profil))
        else:
            form = SojuszForm()

        topnav = topnav_site(self.game)
        return {"topnav": topnav, "form": form}
示例#18
0
    def site_change_planets_order(self):
        planety = self.game.get_all_planets()

        for p_id in planety:
            planeta = self.game.get_planet(p_id)
            kolej_str = 'kolej_%s' % (p_id)
            if kolej_str in self.request.POST:
                try:
                    planeta.kolej = int(self.request.POST[kolej_str])
                except:
                    pass
        message = 'Kolejność planet została uaktualniona'
        send_error_message(user=self.game.user, message=message)

        redirect_url = url(self.urls.main)
        if 'HTTP_REFERER' in self.request.META:
            if len(self.request.META['HTTP_REFERER']) > 3:
                redirect_url = self.request.META['HTTP_REFERER']

        return HttpResponseRedirect(redirect_url)
示例#19
0
 def site_delete(self, object_id):
     try:
         temat = Tematy.objects.get(
             Q(pk=object_id),
             Q(nadawca=self.game.user) | Q(odbiorca=self.game.user))
         if self.game.user == temat.odbiorca:
             if temat.n_del == 'T':
                 Wiadomosci.objects.filter(temat=temat).delete()
                 temat.delete()
             else:
                 temat.o_del = 'T'
                 temat.save(force_update=True)
         elif self.game.user == temat.nadawca:
             if temat.o_del == 'T':
                 Wiadomosci.objects.filter(temat=temat).delete()
                 temat.delete()
             else:
                 temat.n_del = 'T'
                 temat.save(force_update=True)
     except Tematy.DoesNotExist:
         pass
     return HttpResponseRedirect(url(self.urls.list))
示例#20
0
文件: trader.py 项目: anih/ugame_alt
    def site_take_offer(self):
        current_planet = self.game.get_current_planet()

        if "id" in self.request.REQUEST:
            try:
                rynek_obj = Rynek.objects.select_for_update().get(
                    pk=self.request.REQUEST['id'])
                req_obj = Output()
                req_obj.user = rynek_obj.planeta.owner
                GraAlienObject = BaseGame(req_obj)
                GraAlienObject.save_all()
                planeta_alien = GraAlienObject.get_planet(rynek_obj.planeta_id)
                rynek_obj = Rynek.objects.select_for_update().get(
                    pk=self.request.REQUEST['id'])
            except Rynek.DoesNotExist:
                message = "Nie ma już takiej oferty na rynku, wybież inną"
                send_error_message(user=self.game.user, message=message)
                return HttpResponseRedirect(url(self.urls.main))
        else:
            message = "Nie ma już takiej oferty na rynku, wybież inną"
            send_error_message(user=self.game.user, message=message)
            return HttpResponseRedirect(url(self.urls.main))

        if rynek_obj.planeta.owner_id == self.game.user.id:
            message = "Nie możesz kupić swojej oferty, nawet jeśli jest z innej planety"
            send_error_message(user=self.game.user, message=message)
            GraAlienObject.save_all()
            return HttpResponseRedirect(url(self.urls.main))

        try:
            ilosc = int(self.request.REQUEST["ilosc"])
        except:
            send_error_message(user=self.game.user,
                               message="Wybież prawidłową ilość paczek")
            GraAlienObject.save_all()
            return HttpResponseRedirect(url(self.urls.main))

        if ilosc > rynek_obj.ilosc:
            message = "Wybież prawidłową ilość paczek"
            send_error_message(user=self.game.user, message=message)
            GraAlienObject.save_all()
            return HttpResponseRedirect(url(self.urls.main))

        ile_oddajemy = ilosc * rynek_obj.na_ile

        if rynek_obj.na == 'M':
            if ile_oddajemy > current_planet.metal:
                message = "Nie masz tyle surowców żeby to kupić"
                send_error_message(user=self.game.user, message=message)
                GraAlienObject.save_all()
                return HttpResponseRedirect(url(self.urls.main))
            current_planet.metal -= ile_oddajemy
            planeta_alien.metal += ile_oddajemy

        elif rynek_obj.na == 'K':
            if ile_oddajemy > current_planet.crystal:
                message = "Nie masz tyle surowców żeby to kupić"
                send_error_message(user=self.game.user, message=message)
                GraAlienObject.save_all()
                return HttpResponseRedirect(url(self.urls.main))
            current_planet.crystal -= ile_oddajemy
            planeta_alien.crystal += ile_oddajemy

        elif rynek_obj.na == 'D':
            if ile_oddajemy > current_planet.deuter:
                message = "Nie masz tyle surowców żeby to kupić"
                send_error_message(user=self.game.user, message=message)
                GraAlienObject.save_all()
                return HttpResponseRedirect(url(self.urls.main))
            current_planet.deuter -= ile_oddajemy
            planeta_alien.deuter += ile_oddajemy

        message = "%s kupił %s paczek po %s %s" % (
            self.game.user.username, ilosc, rynek_obj.na_ile, dlugie_nazwy[str(
                rynek_obj.na).lower()])
        send_info_message(user=GraAlienObject.user, message=message)
        ile_dostajemy = rynek_obj.co_ile * ilosc
        if rynek_obj.co == 'M':
            current_planet.metal += ile_dostajemy
        elif rynek_obj.co == 'K':
            current_planet.crystal += ile_dostajemy
        elif rynek_obj.co == 'D':
            current_planet.deuter += ile_dostajemy

        if ilosc >= rynek_obj.ilosc:
            rynek_obj.delete()
        else:
            rynek_obj.ilosc -= ilosc
            rynek_obj.save(force_update=True)

        message = "Właśnie kupiłeś surowce"
        send_info_message(user=self.game.user, message=message)

        GraAlienObject.save_all()

        return HttpResponseRedirect(url(self.urls.main))
示例#21
0
文件: trader.py 项目: anih/ugame_alt
    def site_for_sale(self, page=1):
        try:
            page = int(page)
            if page <= 0:
                page = 1
        except:
            page = 1
        current_planet = self.game.get_current_planet()

        rynek_obj = Rynek(planeta=current_planet)

        if self.request.method == 'POST':
            rynek_form = RynekForm(instance=rynek_obj, data=self.request.POST)
            if rynek_form.is_valid():
                co = rynek_form.cleaned_data['co']
                co_ile = rynek_form.cleaned_data['co_ile']
                # na = rynek_form.cleaned_data['na']
                na_ile = rynek_form.cleaned_data['na_ile']
                ilosc = rynek_form.cleaned_data['ilosc']
                dobre_dane = True
                ile_surowca = int(ceil(co_ile * ilosc * 1.05))

                if na_ile / co_ile > 100.0 or na_ile / co_ile < 0.01:
                    message = "Stosunek kupna do sprzedaży musi zawierać sie od 100/1 do 1/100"
                    send_error_message(user=self.game.user, message=message)
                    dobre_dane = False

                if co_ile < 0 or na_ile < 0:
                    message = "Wartości muszą być większe od 0"
                    send_error_message(user=self.game.user, message=message)
                    dobre_dane = False

                if dobre_dane:
                    if co == 'M':
                        if ile_surowca > current_planet.metal:
                            message = "Nie masz tyle metalu na planecie: %s" % ile_surowca
                            send_error_message(user=self.game.user,
                                               message=message)
                            dobre_dane = False
                        else:
                            current_planet.metal -= ile_surowca
                    elif co == 'K':
                        if ile_surowca > current_planet.crystal:
                            message = "Nie masz tyle kryształu na planecie: %s" % ile_surowca
                            send_error_message(user=self.game.user,
                                               message=message)
                            dobre_dane = False
                        else:
                            current_planet.crystal -= ile_surowca
                    elif co == 'D':
                        if ile_surowca > current_planet.deuter:
                            message = "Nie masz tyle deuteru na planecie: %s" % ile_surowca
                            send_error_message(user=self.game.user,
                                               message=message)
                            dobre_dane = False
                        else:
                            current_planet.deuter -= ile_surowca

                if Rynek.objects.select_for_update().filter(
                        planeta__owner=self.game.user).count() > 15:
                    message = "Osiągnąłeś limit 15 ofert na rynku, nie możesz już więcej wystawić"
                    send_error_message(user=self.game.user, message=message)
                    dobre_dane = False

                if dobre_dane:
                    rynek_obj = rynek_form.save(commit=False)
                    rynek_obj.planeta = current_planet
                    rynek_obj.ratio = na_ile / co_ile
                    rynek_obj.save()  # tu tak ma byc
                    message = "Wystawiłeś ofertę na rynku"
                    send_info_message(user=self.game.user, message=message)
                    return HttpResponseRedirect(url(self.urls.main))
            else:
                message = "Musisz podać wszystkie dane"
                send_error_message(user=self.game.user, message=message)
        else:
            rynek_form = RynekForm(instance=rynek_obj)

        if "wycofaj" in self.request.GET:
            try:
                wycofanie = Rynek.objects.select_for_update().get(
                    pk=self.request.GET['wycofaj'],
                    planeta__owner=self.game.user)
                planeta_wycofania = self.game.get_planet(wycofanie.planeta_id)

                ile_surowca = int(wycofanie.co_ile * wycofanie.ilosc)
                if wycofanie.co == 'M':
                    message = "Wycofanie oferty, przybyło metalu na planecie: %s" % ile_surowca
                    send_info_message(user=self.game.user, message=message)
                    planeta_wycofania.metal += ile_surowca
                elif wycofanie.co == 'K':
                    message = "Wycofanie oferty, przybyło kryształu na planecie: %s" % ile_surowca
                    send_info_message(user=self.game.user, message=message)
                    planeta_wycofania.crystal += ile_surowca
                elif wycofanie.co == 'D':
                    message = "Wycofanie oferty, przybyło deuteru na planecie: %s" % ile_surowca
                    send_info_message(user=self.game.user, message=message)
                    planeta_wycofania.deuter += ile_surowca
                wycofanie.delete()
                return HttpResponseRedirect(url(self.url))

            except:
                return HttpResponseRedirect(url(self.url))

        rynek_twoje = Rynek.objects.filter(planeta__owner=self.game.user)
        paginator = Paginator(rynek_twoje, 20, allow_empty_first_page=True)
        try:
            p = paginator.page(page)
        except:
            return HttpResponseRedirect(url(self.url))

        rynek_obj = p.object_list

        topnav = topnav_site(self.game)
        return {
            "topnav": topnav,
            "rynek_twoje": rynek_obj,
            "rynek_form": rynek_form,
            "paginator": paginator,
            "page": page,
            "page_list": p,
        }
示例#22
0
文件: profile.py 项目: anih/ugame_alt
    def site_edit(self):
        current_planet = self.game.get_current_planet()

        if self.game.userprofile:
            if self.request.method == 'POST':

                form_change = ChangePassMail(self.request.POST)
                if form_change.is_valid():
                    pass1 = form_change.cleaned_data['password1']
                    pass2 = form_change.cleaned_data['password2']
                    email = form_change.cleaned_data['email']
                    if pass1 == pass2 and len(pass1) >= 5:
                        salt = sha1(str(random.random())).hexdigest()[:5]
                        activation_key = sha1(salt + pass1).hexdigest()
                        ZmianaHasla.objects.create(user=self.game.user,
                                                   haslo=pass1,
                                                   hash=activation_key)
                        message = render_to_string('mail/change.txt', {
                            'link':
                            '%s/change_pass/%s' % (URL, activation_key)
                        })
                        subject = 'Link z %s' % (URL, )
                        subject = ''.join(subject.splitlines())
                        send_mail(subject, message,
                                  settings.DEFAULT_FROM_EMAIL,
                                  [self.game.user.email])
                        message = "Żeby dokończyć zmianę hasła, odbierz pocztę z emaila i kliknij w link"
                        send_info_message(user=self.game.user, message=message)

                    if email:
                        salt = sha1(str(random.random())).hexdigest()[:5]
                        activation_key = sha1(salt + email).hexdigest()
                        ZmianaMaila.objects.create(user=self.game.user,
                                                   email=email,
                                                   hash=activation_key)
                        message = render_to_string('mail/change.txt', {
                            'link':
                            '%s/change_email/%s' % (URL, activation_key)
                        })
                        subject = 'Link z %s' % (URL, )
                        subject = ''.join(subject.splitlines())
                        send_mail(subject, message,
                                  settings.DEFAULT_FROM_EMAIL,
                                  [self.game.user.email])
                        message = "Żeby dokończyć zmianę emaila, odbierz pocztę ze starego emaila i kliknij w link"
                        send_info_message(user=self.game.user, message=message)
                form = UserprofileForm(self.request.POST,
                                       self.request.FILES,
                                       instance=self.game.userprofile)
                if form.is_valid():
                    obj = form.save(commit=False)
                    if not obj.avatar:
                        obj.avatar = self.game.userprofile.avatar
                    obj.save()  # tu tak ma byc
                    return HttpResponseRedirect(url(self.url))
            else:
                form = UserprofileForm(instance=self.game.userprofile)
                form_change = ChangePassMail()

            topnav = topnav_site(self.game)
            return {
                "topnav": topnav,
                "form": form,
                'form_change': form_change,
                "u": self.game.userprofile
            }
        return HttpResponseRedirect(url(self.all_urls.main.main))
示例#23
0
文件: main.py 项目: anih/ugame_alt
 def site_main(self):
     if self.user and self.user.is_active:
         return HttpResponseRedirect(url(self.all_urls.game.main))
     return {}
示例#24
0
文件: trader.py 项目: anih/ugame_alt
    def site_take_from_dealer(self):
        planeta = self.game.get_current_planet()
        poprawne_dane = True

        if 'co_sprzedaje' not in self.request.POST:
            message = "Musisz wybrać co sprzedajesz"
            send_error_message(user=self.game.user, message=message)
            poprawne_dane = False
        else:
            co_sprzedaje = self.request.POST['co_sprzedaje']
            if co_sprzedaje not in ('m', 'k', 'd'):
                message = "Musisz wybrać co sprzedajesz"
                send_error_message(user=self.game.user, message=message)
                poprawne_dane = False

        if 'sprzedaje_na' not in self.request.POST:
            message = "Musisz wybrać co kupujesz"
            send_error_message(user=self.game.user, message=message)
            poprawne_dane = False
        else:
            sprzedaje_na = self.request.POST['sprzedaje_na']
            if sprzedaje_na not in ('m', 'k', 'd'):
                message = "Musisz wybrać co kupujesz"
                send_error_message(user=self.game.user, message=message)
                poprawne_dane = False
        try:
            ilosc_sprzedawanego = int(self.request.POST['ilosc_sprzedawanego'])
        except:
            message = "Musisz podać poprawną ilość sprzedawanego surowca"
            send_error_message(user=self.game.user, message=message)
            poprawne_dane = False

        if poprawne_dane:
            ile_mam = 0
            if co_sprzedaje == 'm':
                ile_mam = planeta.metal
            elif co_sprzedaje == 'k':
                ile_mam = planeta.crystal
            elif co_sprzedaje == 'd':
                ile_mam = planeta.deuter

            if ilosc_sprzedawanego < 0:
                message = "Ilość sprzedawanego musi być większa od 0"
                send_error_message(user=self.game.user, message=message)
                poprawne_dane = False
            elif ile_mam < ilosc_sprzedawanego:
                message = "Nie masz tyle surowca"
                send_error_message(user=self.game.user, message=message)
                poprawne_dane = False
            else:
                ile_kupilismy = floor(
                    floor(ilosc_sprzedawanego * 0.9) *
                    grid_sprzedawcy[co_sprzedaje][sprzedaje_na])
                if co_sprzedaje == 'm':
                    planeta.metal -= ilosc_sprzedawanego
                elif co_sprzedaje == 'k':
                    planeta.crystal -= ilosc_sprzedawanego
                elif co_sprzedaje == 'd':
                    planeta.deuter -= ilosc_sprzedawanego

                if sprzedaje_na == 'm':
                    planeta.metal += ile_kupilismy
                elif sprzedaje_na == 'k':
                    planeta.crystal += ile_kupilismy
                elif sprzedaje_na == 'd':
                    planeta.deuter += ile_kupilismy
                message = "Kupiłeś %s %s za %s %s" % (
                    int(ile_kupilismy), dlugie_nazwy[sprzedaje_na],
                    ilosc_sprzedawanego, dlugie_nazwy[co_sprzedaje])
                send_info_message(user=self.game.user, message=message)
        return HttpResponseRedirect(url(self.urls.dealer))
示例#25
0
文件: trader.py 项目: anih/ugame_alt
    def site_main(self, page=1):
        # current_planet = self.game.get_current_planet()
        sort_form = RynekSearch(self.request.POST,
                                prefix="sortowanie_surowiec")

        # rynek = Rynek.objects.exclude(planeta__owner=user).order_by("ratio")
        rynek = Rynek.objects.order_by("ratio")

        sortowanie_surowiec_co = None
        if 'handlarz_sort_surowiec_co' in self.request.session:
            sortowanie_surowiec_co = self.request.session[
                'handlarz_sort_surowiec_co']

        sortowanie_surowiec_na = None
        if 'handlarz_sort_surowiec_na' in self.request.session:
            sortowanie_surowiec_na = self.request.session[
                'handlarz_sort_surowiec_na']

        try:
            page = int(page)
            if page <= 0:
                page = 1
        except:
            page = 1

        if sort_form.is_valid():
            if sort_form.cleaned_data['co'] in ('M', 'K', 'D'):
                sortowanie_surowiec_co = sort_form.cleaned_data['co']
            elif sort_form.cleaned_data['co'] == '-':
                sortowanie_surowiec_co = None
            else:
                sort_form.cleaned_data['co'] = sortowanie_surowiec_co

            if sort_form.cleaned_data['na'] in ('M', 'K', 'D'):
                sortowanie_surowiec_na = sort_form.cleaned_data['na']
            elif sort_form.cleaned_data['na'] == '-':
                sortowanie_surowiec_na = None
            else:
                sort_form.cleaned_data['na'] = sortowanie_surowiec_na

            self.request.session[
                'handlarz_sort_surowiec_co'] = sortowanie_surowiec_co
            self.request.session[
                'handlarz_sort_surowiec_na'] = sortowanie_surowiec_na

        if sortowanie_surowiec_co:
            rynek = rynek.filter(co=sortowanie_surowiec_co)

        if sortowanie_surowiec_na:
            rynek = rynek.filter(na=sortowanie_surowiec_na)

        paginator = Paginator(rynek, 20, allow_empty_first_page=True)
        try:
            p = paginator.page(page)
        except:
            return HttpResponseRedirect(url(self.url))

        rynek_obj = p.object_list

        topnav = topnav_site(self.game)
        return {
            "topnav": topnav,
            "rynek": rynek_obj,
            "sort_form": sort_form,
            "paginator": paginator,
            "page": page,
            "page_list": p,
        }
示例#26
0
    def site_compose(self, object_id=None):
        topnav = topnav_site(self.game)
        #try:
        user = None

        if "nick" in self.request.REQUEST:
            object_id = self.request.REQUEST['nick']
            try:
                user = User.objects.get(username__exact=object_id)
            except User.DoesNotExist:
                pass
        else:
            try:
                user = User.objects.exclude(pk=self.game.user.pk).get(
                    pk=object_id)
            except User.DoesNotExist:
                pass
        if not user:
            self.game.send_message("Błędny odbiorca wiadomości")
            return HttpResponseRedirect(url(self.urls.list))
        alien_user, alien_userprofile = self.game.lock_alien_user(user.pk)

        errors = []
        if self.request.method == 'POST':

            if 'temat' not in self.request.POST or not len(
                    self.request.POST['temat']) > 0:
                errors.append("Tytuł wiadomości jest wymagany!!!")
            if ('wiadomosc' not in self.request.POST
                ) or not len(self.request.POST['wiadomosc']) > 0:
                errors.append("Treść wiadomości jest wymagana!!!")
            if not errors:
                new_t = Tematy.objects.create(
                    nadawca=self.game.user,
                    odbiorca=alien_user,
                    n_del='N',
                    o_del='N',
                    n_prz='T',
                    o_prz='N',
                    temat=self.request.POST['temat'],
                    data=strftime("%Y-%m-%d %H:%M:%S"))
                Wiadomosci.objects.create(temat=new_t,
                                          tekst=self.request.POST['wiadomosc'],
                                          kto=self.game.user,
                                          data=strftime("%Y-%m-%d %H:%M:%S"))
                self.request.session['msg'] = "Wiadomość została wysłana"
                alien_userprofile.new_message += 1
                alien_userprofile.save(force_update=True)
                return HttpResponseRedirect(
                    url(self.urls.show, object_id=new_t.id))
        chars = string.letters + string.digits
        ticket1 = ''.join([random.choice(chars) for _ in range(16)])
        ticket2 = ''.join([random.choice(chars) for _ in range(16)])
        ktory = random.randint(0, 1)
        self.request.session['ticket1'] = ticket1
        self.request.session['ticket2'] = ticket2
        self.request.session['ktory'] = ktory
        return {
            "dane1": ticket1,
            "dane2": ticket2,
            "ktory": ktory,
            "errors": errors,
            "alien_user": alien_user,
            "topnav": topnav,
            "req": self.request.REQUEST
        }