Pola pomoże Ci odnaleźć polskie wyroby. Zabierając Polę na zakupy odnajdujesz produkty “z duszą” i wspierasz polską gospodarkę.
Production server: https://pola-app.pl
Staging server: https://pola-staging.herokuapp.com/
LICENSE: BSD
Pola pomoże Ci odnaleźć polskie wyroby. Zabierając Polę na zakupy odnajdujesz produkty “z duszą” i wspierasz polską gospodarkę.
Home Page: https://www.pola-app.pl
License: BSD 3-Clause "New" or "Revised" License
Pola pomoże Ci odnaleźć polskie wyroby. Zabierając Polę na zakupy odnajdujesz produkty “z duszą” i wspierasz polską gospodarkę.
Production server: https://pola-app.pl
Staging server: https://pola-staging.herokuapp.com/
LICENSE: BSD
Szanowni,
Zauważyłem, że w Heroku wykupujemy SSL Endpoint, ale od marca jest wsparcie dla Heroku SSL, czyli darmowych certyfikatów, które są automatycznie odnawiane. Należy przejść na nowy mechanizm, aby obniżyć niesieczne koszty o 20$ miesięcznie, czyli....900 zł w ciągu roku.
Przydatne linki:
Migrate from SSL:Endpoint to Heroku SSL
Z wyrazami szacunku.
Szanowni.
Nie jest możliwe dodanie produktu z poziomu panelu CMS, ponieważ pole code
jest zablokowane przed edycją.
Co w związku z tym robimy? Kasujemy ten widok, czy wprowadzamy inny mechanizm?
Z wyrazami szacunku
@jakublipinski , a co nie działa, że mi pokazujesz swój Procfile?
Szanowni,
Należy dodać migracje, która doda BRIN index w bazie danych na pola created_at
/timestamp
.
Z wyrazami szacunku
Mamy na stronie sitemap, który pozwala wyszukiwarką odnaleźć wszystkie profile firm.
Profile firm zawierają poprawne og-tags i tagi semantic web.
Wymaga #42
Nazwa/Nip/Opis
Szanowni,
Aktualnie statystyki działają bardzo wolno, ponieważ za każdy wejściem próbują wykonać bardzo dużo złożonych zapytań. Trzeba by pomyśleć, aby to jakoś przyspieszyć. Może warto spróbować starsze metryki zapisywać w bazie danych? Dane sprzed miesiąca są przydatne, ale już nigdy się nie zmienia. Spowoduje to, że nowe statystyki będą się generować z krótkiego okresu, co może drastycznie przyspieszyć. Przydatne może być w tym wypadku partycjonowanie ( https://medium.com/@StreamBright/creating-partitions-automatically-in-postgresql-7006d68c0fbb )
Z wyrazami szacunku.
Zadanie polega na stworzeniu algorytmu który przeanalizuje nazwy produktów i na ich podstawie wygeneruje nazwy marek producentów. Marki moga być jedno lub wielo-wyrazowe (n-grams). Kandydatem na markę producenta jest taki n-gram, który pojawia się w kilku produktach, ale tylko u jednego producenta.
Docelowo produkt powinien działać jako komenda python mange.py
, tak aby można ją uruchamiać każdej nocy.
Przykładowy naiwny algorytm ("działa" tylko z pojedyńczymi wyrazami):
# products - lista produktów z polami (name - nazwa, company - producent)
words={}
for prod in products:
for w in prod.name.split():
word = words.setdefault(w, {'count':0, 'companies':{}})
word['count'] += 1
word['companies'].setdefault(prod.company, 0)
word['companies'][prod.company] += 1
sorted_words = sorted(words.items(), key=lambda x: x[1]['count'],
reverse=True)
i=0
k=0
while k<100:
if len(sorted_words[i][1]['companies']) <= 1:
print u'{} - {}, {}'.format(repr(sorted_words[i][0]),
sorted_words[i][1]['count'],
len(sorted_words[i][1]['companies']))
k+=1
i+=1
Przydałyby się statystyki dotyczące tego ile firm zostało zweryfikowanych w ostatnim tygodniu/miesiącu itp.
Na profilu producenta, można (po kliknięciu w jakiś mały link) otworzyć stonę z historią wszystkich zmian (edycji) danego producenta. Historię zmian wyciągamy z reversion
Wymaga #42
Szanowni,
Jest nowe API REST do obśługi GS1:
http://www.produktywsieci.gs1.pl/Database
Należy sprawdzić, czy powinniśmy się zaktualizować tj. czy aktualizacja coś da, czy stare API funkcjonuje.
Z wyrazami szacunku
Szanowni,
Aktualnie aplikacja posiada bardzo mało ilość testów, które automatycznie sprawdzają funkcjonowanie aplikacji. Warto podjąć działania, aby testów było więcej i były lepszej jakości. Usprawni to dalszy rozwój aplikacji. Zwłaszcza podczas tworzenia nowych algorytmów np. #41
Z wyrazami szacunku.
Potrzebujemy na stronie głównej CMS dodać nową tabelę, która agregowałaby firmy pod kątem ilości przydzielonych im raportów, począwszy od największej liczby zgłoszeń. Prosimy o dodanie.
Pomocny kod:
from pola.models import Query
from django.models import Func, F, Count, IntegerField
def get_unique_users_count_by_week():
return Query.\
objects.\
annotate(
week=Func(
F('timestamp'),
function='week',
template="EXTRACT('%(function)s' FROM %(expressions)s)",
output_field=IntegerField()
)
).\
values('week').\
annotate(
count=Count('client')
).\
values('week', 'count').\
all()
Dzień dobry,
Poniżej informacja zwrotna z procesu instalacji:
a) system operacyjny: GNU/Linux
b) środowisko:
Python v. 3.7.2
pip v. 18.1
virtualenv v. 16.4.1
postgres (PostgreSQL) 10.7
ustawienia bazy danych:
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
pola | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | myuser=CTc/postgres
Polecenie: "pip install -r requirements/local.txt --user"
wymusiło aktualizację w "requirements/base.txt": django-filter==2.1.0
Polecenie: "python manage.py migrate" zwróciło:
ERRORS:
ai_pics.AIAttachment: (auth.E005) The permission codenamed 'view_aiattachment' clashes with a builtin permission for model 'ai_pics.AIAttachment'.
ai_pics.AIPics: (auth.E005) The permission codenamed 'view_aipics' clashes with a builtin permission for model 'ai_pics.AIPics'.
company.Brand: (auth.E005) The permission codenamed 'view_brand' clashes with a builtin permission for model 'company.Brand'.
company.Company: (auth.E005) The permission codenamed 'view_company' clashes with a builtin permission for model 'company.Company'.
product.Product: (auth.E005) The permission codenamed 'view_product' clashes with a builtin permission for model 'product.Product'.
report.Report: (auth.E005) The permission codenamed 'view_report' clashes with a builtin permission for model 'report.Report'.
ai_pics/models.py: permissions = (
ai_pics/models.py: permissions = (
company/models.py: permissions = (
company/models.py: permissions = (
product/models.py: permissions = (
report/models.py: permissions = (
zakomentowałem permissions, czyli wiersze:
("view_aipics", "Can see all AIPics"),
("view_aiattachment", "Can see all AIAttachment"),
("view_company", "Can see all company"),
("view_brand", "Can see all brands"),
("view_product", "Can see all product"),
("view_report", "Can see all report"),
"psycopg2.IntegrityError: duplicate key value violates unique constraint "auth_permission_content_type_id_codename_01ab375a_uniq"
DETAIL: Key (content_type_id, codename)=(16, view_product) already exists."
"Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject:
=?utf-8?q?=5Bexample=2Ecom=5D_Prosz=C4=99_potwierd=C5=BA_adres_e-mail?=
From: webmaster@localhost
To: [email protected]
Date: Sun, 24 Feb 2019 15:40:33 -0000
Message-ID: [email protected]
Hello from example.com!
You're receiving this e-mail because user admin has given yours as an e-mail address to connect their account.
To confirm this is correct, go to http://127.0.0.1:8000/accounts/confirm-email/MQ:1gxvtJ:j_BtfDFu6fm-ZLBFXCD5BYpkkho/
Dziekuje z example.com!
example.com:"
Po potwierdzeniu adresu e-mail, mogłem się zalogować na stronie http://127.0.0.1:8000/cms
Cookies zapisane w przeglądarce umożliwiły skorzystanie ze strony http://127.0.0.1:8000/admin/ bez potrzeby ponownego logowania, czyli dobrze.
Uzyskany stan porównałem ze stronami produkcyjnymi:
https://www.pola-app.pl/cms
oraz
https://www.pola-app.pl/admin
Jeśli strona internetowa jest rozwijana, w kontekście #46 polecałbym cypress i w trybie headless wpięcie testów do pipeline, np. "npm run:cy" w celu uruchomienia: "cypress run --reporter mocha-multi-reporters --reporter-options configFile=config.json"
base.txt
local.txt
production.txt
test.txt
Jeśli firma ma zbyt długą nazwę nie wyświetla się ona w całości w aplikacji. Sprawdzić ile jest takich firm, czy przypadkiem nie można skrócić nazw i jeśli tak, zrobić dodatek do CMS'a aby redakcja widziała które nazwy są za długie.
Szanowni,
Bardzo dobrą i perspektywiczną opcją jest dodanie możliwości grupowego dodawania kodów EAN pod dane przedsiębiorstwo. Przykładowo, ostatnio napisała do nas firma Pol-Foods z prośbą o dodanie ich produktów. Przesłali również plik xls, w którym wyróżniono poszczególne produkty oraz ich nazwy. Firma: https://www.pola-app.pl/cms/company/48335/
Hej,
bdsklep.pl ma kody EAN dla produktów i ewidencjonuje dane o producencie. Może wejdą w kooperatywę?
Z wyrazami szacunku,
Dodać do CMS'a możliwość oznaczenia producenta jako "przyjaciel Poli"
Dodać do API informację o tym, że producent jest "przyjacielem Poli"
Szanowni,
Przydało by się po zaimplementowaniu #52 dodanie mechanizmu analizy tych statystyk
Przykład 1.
Mechanizm statystyk może wyliczać ile najwięcej zapytań złożył użytkownik/IP w ciągu dnia. Potem mechanizmów alertów może wysyłać powiadomienie, gdy ta liczba przekroczy wartość np. 30. Pozwoli to zareagować na próby pobrania bazy danych.
Przypadek 2:
Mechanizm statystyk może analizować ilość zapytań w ciągu dnia. Mechanizm alertów może wysyłać powiadomienie, gdy odchylenie od średniej z 7 dni było powyżej 10%, co oznacza, że pewnie jesteśmy w mediach, albo jest rozproszona na różne IP próba pobrania bazy danych.
Z wyrazami szacunku.
Witam,
Po realizacji biletu: #176 my mamy możliwość przygotowania API, które będzie wspierać wielu producentów:
W tym celu należy:
Z wyrazami szacunku
Witam,
W celu wsparcia dla marek własnych np. Lidl, my musimy dodać możliwość powiązania produktu z wieloma markami.
W tym celu należy:
product.models.Product.company
na wiele-do-wieluW dalszej perspektywie, my musimy zbudować nowe API, które będzie wspierać kilka producentów.
Z wyrazami szacunku,
Kamil Breguła
Użytkownik może zgłosić zmianę w opisie/danych firm (również w markach). Propozycja zmian rozpatrywana jest przez redakcję i może być odrzucona/częściowo zaakceptowana/całkowicie zaakceptowana.
Aby zgłosić zmianę, użytkownik musi rozwiązać np. reCaptchę. Historia zgłoszeń zmian i ew. akceptacji dostępna jest w historii zmian (#43)
Wymaga #42
Pokazać:
Produkty z nierozpatrzonymi zgłoszeniami
zamiast Najnowsze nierozpatrzone zgłoszenia
Firmy z najdłuższymi nazwami
(patrz #36)Popularne produkty bez nazw
Cześć.
Na naszym głównym ekranie CMS wyświetlamy wiele predefiniowanych list. Było by super, gdyby pojawiła się lista produktów, które nie mają 13 znaków w osobnym boxie.
Z wyrazami szacunku
Usuwaj zgłoszenia jeśli są puste (brak tekstu i brak poprawnie załadowanego zdjęcia[trzeba sprawdzać przez S3 boto])
Mechanizm powinien uruchamiać się co noc jako manage.py command
Czy istnieje wersja przeglądarkowa aplikacji Pola?
Chcemy wiedzieć jakie marki należą do poszczególnych producentów.
Trzeba stworzyć tabelę company_brands
(name, company_id). Zmiany w tabeli company_brands
powinny być rejestrowane (przez reversion
).
Trzeba stworzyć interfejs do CMS do dodawania, edycji i usuwania marek - najprościej jako pole tekstowe multiline.
Lista kroków:
brands
CompanyForm
pole wprowadzania marek. Najlepiej z natychmiastowym powiadamianiem(JS) o duplikatach, ale to opcjonalne. Może być również w formie pola wielolinijkowego i walidacja po stronie serwera.Company
)Szanowni,
Mamy już trochę testów, a więc jest już coś do monitorowania, aby ta aplikacja nie zestarzała się zbyt szybko.
Proponuje uruchomienie następujących usług:
Z wyrazami szacunku
Ps. Wołam @ad-m aby wyraził swoje zdanie. Może on poleca inne aplikacje
Dependabot couldn't authenticate with https://pypi.python.org/simple/.
You can provide authentication details in your Dependabot dashboard by clicking into the account menu (in the top right) and selecting 'Config variables'.
Używamy b. starej, niewspieranej wersji Django.
Pasek wyszukiwania na głównej stronie, w którym będzie można wpisać: kod kreskowy, nazwę produktu, markę lub nazwę firmy. Wyszukiwarka ma być super-szybka i powinna dopełniać wyniki. Wyszukanie prowadzi do profilu firmy, który wyświetla te same informacje co aplikacja mobilna (i może podobnie wyglądać).
Wymaga wcześniej zrobienia #40
Nowa strona www i strona mobilna: przyjaciele Poli:
W odpowiedzi z API nie ma informacji czy dana firma bada swoje produkty na zwierzętach.
Szanowni,
Warto rozważyć obniżenie kosztów poprzez uruchomienie workera i www na jednym dyno.
Przydatny może być w tym celu honcho. Wprowadzona poprawka zmniejszy koszty o 84$ (250 zł) w skali roku.
Zobacz także: https://tartarus.org/james/diary/2013/04/18/running-statsd-on-heroku
Z wyrazami szacunku
2017-08-13 05:02:08.000
138 <190>1 2017-08-13T05:02:07.335602+00:00 app scheduler.1295 - - .Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-2.56.0.42/newrelic/hooks/framework_django.py", line 909, in _nr_wrapper_BaseCommand_run_from_argv_
return wrapped(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 393, in run_from_argv
self.execute(*args, **cmd_options)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-2.56.0.42/newrelic/api/function_trace.py", line 104, in literal_wrapper
return wrapped(*args, **kwargs)
File "/app/pola/management/commands/delete_rare_products.py", line 56, in handle
[product_id])
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/newrelic-2.56.0.42/newrelic/hooks/database_dbapi2.py", line 22, in execute
*args, **kwargs)
django.db.utils.IntegrityError: update or delete on table "product_product" violates foreign key constraint "ai_pics_aipic_product_id_45918407312df2b2_fk_product_product_id" on table "ai_pics_aipics"
Na tej stronie podmieniamy logotypy Klubu Jagiellońskiego (logo_kj.png) i Centrum Analiz Klubu Jagiellońskiego (logo_cakj.png).
niewykonują się metody wskazane w config/urls.py
Dodatkowo można dodać szablony dla stron 400, 403 (dla 404 oraz 500) istnieją
Hi 👊
This is my first visit to this fine repo, but it seems you have been working hard to keep all dependencies updated so far.
Once you have closed this issue, I'll create separate pull requests for every update as soon as I find one.
That's it for now!
Happy merging! 🤖
Szanowni,
Migrujemy do mydevil.net? Jestem z nich zadowolony. Dostrzegam ból związany z wysokimi kosztami Heroku. Wspierają hostowanie aplikacji Python, a jednocześnie wszystkimi pracami sysadminia się zajmują. Oferują m. in.redisa, postgres i django. Musielibyście sobie tylko skonfigurować np. fabrica do deploymentu, albo hook gita tzw. "git push to deploy", bo nie ma mają out-of-the-box takich takich rozwiazań jak heroku w tym zakresie.
Na wszelki wypadek daje reflink: http://www.mydevil.net/pp/B2TSQR2WUD bo dostaniecie 20% zniżki. Dodatkowo wrzucają na mirko kody zniżkowe ( http://www.wykop.pl/ludzie/MyDevil/ ), gdzie można ich wyrwać jeszcze taniej.
Z wyrazami szacunku,
Dopisać informację o tym, że błędy można zgłaszać przez GitHub issues (i zalinkować odpowiednio).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.