Esempio n. 1
0
 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))
Esempio n. 2
0
 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))
Esempio n. 3
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))
Esempio n. 4
0
    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))
Esempio n. 5
0
    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))
Esempio n. 6
0
    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,
        }
Esempio n. 7
0
    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))
Esempio n. 8
0
    def site_main(self):
        self.game.userprofile_podglad_flota()
        current_planet = self.game.get_current_planet()

        if "fast_fleet_del" in self.request.REQUEST:
            self.game.userprofile.fast_fleet.remove(
                self.request.REQUEST['fast_fleet_del'])
        if "fast_fleet_add" in self.request.REQUEST:
            try:
                fast_planet = Planets.objects.get(
                    pk=self.request.REQUEST['fast_fleet_add'])
                self.game.userprofile.fast_fleet.add(fast_planet)
            except:
                pass

        try:
            page = int(self.request.REQUEST['page'])
            if not page > 0:
                page = 1
        except:
            page = 1
        paginator = Paginator(self.game.userprofile.fast_fleet.all(),
                              20,
                              allow_empty_first_page=True)
        if page > paginator.num_pages:
            page = paginator.num_pages

        p = paginator.page(page)
        fast_fleet = p.object_list

        if "fs_zawroc" in self.request.REQUEST:
            message = "Flotę zawrócono"
            send_info_message(user=self.game.user, message=message)
            zawroc(self.request.REQUEST['fs_zawroc'], self.game.user)

        if "g" in self.request.REQUEST and "s" in self.request.REQUEST and "p" in self.request.REQUEST and "typ" in self.request.REQUEST:
            try:
                g = int(self.request.REQUEST['g'])
                s = int(self.request.REQUEST['s'])
                p = int(self.request.REQUEST['p'])
                if self.request.REQUEST['typ'] == 'a':
                    return HttpResponseRedirect(
                        "/game/fs/atak/?g=%d&s=%d&p=%d" % (g, s, p))
                elif self.request.REQUEST['typ'] == 'k':
                    return HttpResponseRedirect(
                        "/game/fs/kolonizuj/?g=%d&s=%d&p=%d" % (g, s, p))
                elif self.request.REQUEST['typ'] == 'p':
                    return HttpResponseRedirect(
                        "/game/fs/przeslij/?g=%d&s=%d&p=%d" % (g, s, p))
                elif self.request.REQUEST['typ'] == 't':
                    return HttpResponseRedirect(
                        "/game/fs/surowce/?g=%d&s=%d&p=%d" % (g, s, p))
                elif self.request.REQUEST['typ'] == 'z':
                    return HttpResponseRedirect(
                        "/game/fs/zlom/?g=%d&s=%d&p=%d" % (g, s, p))
                elif self.request.REQUEST['typ'] == 's':
                    return HttpResponseRedirect(
                        "/game/fs/spy/?g=%d&s=%d&p=%d" % (g, s, p))
            except:
                message = "Wprowadź poprawne dane do ataku"
                send_error_message(user=self.game.user, message=message)
                pass

        dostepne_statki_tmp = Flota_p.objects.filter(
            planeta=current_planet, budynek__lata__gt=0,
            ilosc__gt=0).order_by("budynek")
        dostepne_statki = []
        for i in dostepne_statki_tmp:
            d = i
            d.speed = int(get_speed(self.game, i.budynek, self.game.user))
            dostepne_statki.append(d)

        # userprofile.fast_fleet.add(planeta)

        floty_own, floty_obce, _ = get_flota(self.game)
        topnav = topnav_site(self.game)
        return {
            "paginator": paginator,
            "fast_fleet": fast_fleet,
            "floty_own": floty_own,
            "floty_obce": floty_obce,
            'topnav': topnav,
            "dostepne_statki": dostepne_statki
        }
Esempio n. 9
0
def wiadomosc_przeslana(request, id):
    user = request.user
    try:
        temat = TematyMod.objects.get(pk=id, rozpatrzony=False)
    except:
        return HttpResponseRedirect(reverse("cms.views.wiadomosci_przeslane"))
    wiadomosci = WiadomosciMod.objects.filter(temat=temat).order_by("data")
    if request.method == 'POST':
        powod = request.POST.get('powod', '')
        if 'na_dni' in request.POST and 'ban_dla' in request.POST and len(
                powod) > 0:
            try:
                ban_dla = int(request.POST['ban_dla'])
                na_dni = int(request.POST['na_dni'])
            except:
                message = "Podaj wszystkie dane"
                send_error_message(user=user, message=message)
                return HttpResponseRedirect(
                    reverse("cms.views.wiadomosc_przeslana",
                            kwargs={"id": temat.pk}))
            if na_dni == 0:
                temat.uzasadnienie = powod
                temat.rozpatrzony = True
                temat.save()
                message = "Gracze zostali ułaskawieni"
                send_info_message(user=user, message=message)
                return HttpResponseRedirect(
                    reverse("cms.views.wiadomosci_przeslane"))
            elif na_dni > 7 or na_dni < 1:
                message = "Wybierz poprawną ilość dni"
                send_error_message(user=user, message=message)
                return HttpResponseRedirect(
                    reverse("cms.views.wiadomosc_przeslana",
                            kwargs={"id": temat.pk}))
            if ban_dla == temat.nadawca.pk:
                if not user.is_superuser and temat.nadawca.is_staff:
                    message = "Nie jesteś adminem, więc nie możesz banować moderatorów"
                    send_error_message(user=user, message=message)
                    return HttpResponseRedirect(
                        reverse("cms.views.wiadomosc_przeslana",
                                kwargs={"id": temat.pk}))
                ban = Bany.objects.create(user=temat.nadawca,
                                          do=datetime.datetime.now() +
                                          datetime.timedelta(days=na_dni),
                                          powod=powod)
                temat.ban = ban
                temat.uzasadnienie = powod
                temat.rozpatrzony = True
                temat.save()
            elif ban_dla == temat.odbiorca.pk:
                if not user.is_superuser and temat.odbiorca.is_staff:
                    message = "Nie jesteś adminem, więc nie możesz banować moderatorów"
                    send_error_message(user=user, message=message)
                    return HttpResponseRedirect(
                        reverse("cms.views.wiadomosc_przeslana",
                                kwargs={"id": temat.pk}))
                ban = Bany.objects.create(user=temat.odbiorca,
                                          do=datetime.datetime.now() +
                                          datetime.timedelta(days=na_dni),
                                          powod=powod)
                temat.ban = ban
                temat.uzasadnienie = powod
                temat.rozpatrzony = True
                temat.save()
            else:
                message = "Wybierz właściwego gracza"
                send_error_message(user=user, message=message)
                return HttpResponseRedirect(
                    reverse("cms.views.wiadomosc_przeslana",
                            kwargs={"id": temat.pk}))
            message = "Gracz został zbanowany"
            send_info_message(user=user, message=message)
            return HttpResponseRedirect(
                reverse("cms.views.wiadomosci_przeslane"))
        else:
            message = "Podaj wszystkie dane"
            send_error_message(user=user, message=message)
    return jrender(request, "cms/wiadomosci/przeslana_wiecej.html", {
        "temat": temat,
        "wiadomosci": wiadomosci
    })