Git Product home page Git Product logo

backend's Introduction

Evodoc Backend

Backend v2, new and better

Contribution

  1. Use virtualenv for development (ie. source venv/bin/activate)
  2. Install all dev requirements using pip install -r dev-requirements.txt
  3. Use branches, each feature should have its own branch, when you think everything is done just create PR to master. You can freely merge things into dev branch.
  4. When you are coming back to your branch, first of all do git rebase master to catch up with other contributors.
  5. Write clean and easy-to-read code, also use documentation string on each function/method/class. :)

How to run app as developer

  1. Create and or enter into virtualenv for >=python3.6
  2. Just run pip install -e .
  3. Enter into your virtualenv or edit venv/bin/acitvate script
  4. Export these values or write them into activation script:
    export FLASK_APP=evodoc
    export FLASK_DEBUG=1
    export FLASK_ENV="development"
    
  5. (only if you are editing activate): save your script and re-enter into venv
  6. Just type flask run
  7. ???
  8. Profit

backend's People

Contributors

danhampl avatar tomstary avatar

Watchers

 avatar  avatar  avatar

backend's Issues

500 / Token parsing error

Pokud v header "Authorization" předávám nevalidní formát tokenu, např:

Authorization: "Bearer "
Authorization: "Bearer"

Tak server vrací 500. Očekáváné chování je 400:

{
   "message": "...",
   "invalid": [
      "token"
   ]
}

E-mail validation

Během registrace (/auth/signup) se @example.com považuje za validní e-mail.

View Project - Collaboratos

U API View Project nefunguje zobrazování contributors. Projekt id=11 má 4 contributors.

Aktuální chování:

...
"contributors": [
    419
]
...

Co je 419?

Očekávané chování:

"collaborators": {
        "label": [
            "username",
            "emailhash",
            "role"
        ],
        "data": [
            [
                "username-1",
                "e332a76c29654fcb7f6e6b31ced090c7",
                "owner"
            ],
            [
                "username-2",
                "6a979aae21c21ea2bb78d86cab5a884b",
                "contributor"
            ]
        ]
    }
  • key = collaborators, ne contributors
  • v collaborator je vždy uveden alespon owner, aktuálně se vrací prázdný array, pokud collaborators nejsou

Testovací prostředí

Připravit nové jádro na integrační testy

  • Nastavení db
  • Nastavení testovacího prostředí

Sign Up / invalid values response

Request:

{
   "email" : "",
   "password" : "",
   "username" : ""
}

Současné chování:
Po detekování nevalidní hodnoty v requestu ihned vrací odpověd, bez kontroly všech hodnot:

{
   "message" : "...",
   "invalid": [ "email" ]
}

Očekávané chování:
Kontrola všech hodnot a návrat všech nevalidních hodnot:

{
   "message" : "...",
   "invalid": [ "username", "email", "password"]
}

Sign Up / 500 due to non-unique email

Současné chování:
Návratová hodnota registace v případě neunikátního e-mailu je 500.

Očekávané chování:

{
    "message": "...",
    "invalid": [ "email" ]
}

API / Get All Modules returns removed modules

Get All Modules method returns modules that don't exist. E.g.

Create X.
Create Y.
Show module list: X, Y.
Remove X.
Current: Show module list: X, Y.
Expected: Show module list: Y.

API / 422 - Unprocessable Entity

Nová globální kontrola. Dřív se kvůli nedostatku dat vracela 400 (nikde nebylo specifikováno).

Ted, pokud budou chybět potřebná data nebo budou jiného typu (tzn. úplně chybí password, password je array), tak se bude vracet 422 Unprocessable Entity:

{
	"message": "Not enough data to process the request."
}

Specifikovat, co přesně chybí, není potřeba.

V případě existence proměnné a validního typu, ale nevalidní hodnoty (tzn. prázdný login) se vrací 400 Bad Request s udáním poškozené proměnné:

{
    "message": "Some data are invalid.",
    "invalid": ["variable_name"]
}

Konkrétní typy a názvy se vážou na konkrétní API requesty, viz postman.

API / Get all projects - wrong owner

REQUEST
 Method: [POST] http://104.248.129.160/user/projects
 Body:
{
 "limit": 0
}

RESPONSE
 Status: 200 (OK)
 Body:
{
 "projects": {
  "data": [
   [
    9,
    "onlineTest2",
    "OntoUML",
    "fgdhf"
   ],
   [
    10,
    "onlineTest2",
    "The name of the worst project ever",
    "Pple."
   ],
  ],
  "label": [
   "id",
   "owner",
   "name",
   "description"
  ]
 }
}

owner musi byt majitel toho projektu, ted to vzdy vraci username toho uzivatele, ktery se dotazal na list projektu.

Project api

  • create project
  • view project
  • update project
  • rm project
  • add contributor
  • rm contributor

Fabric deploy

Vytvořit Fabric script, který bude obstarávat instalaci evodoc na serveru.

Problém s testy

Při vícenásobném spuštění integračních testů, testy neprojdou, neboť se nedropne v databáze. Problém je někde v tests/conftest.py.

user api

  • Get all users
  • Get user account
  • Get user packages
  • Get own account
  • Edit own account
  • Delete own account
  • Change password
  • Get own packages
  • Get accessible projects

API / Patch module

Uprava modulu vraci chybu v "name" vzdy, kdyz se meni. Mela by nastat pouze v pripade neunikatniho name v pramci projektu nebo kratkeho (mene nez 1 znak?).

Possible cache problem

Možná problém s chacováním dotazů.

  • existuje projekt s 0 collaborators
  • přidat 1 collaboratora
  • vrací seznam s 1 collaboratorem
  • přidat další 3 collaboratory
  • vrací seznam s 1 collaboratorem
  • po 20-30min vrací seznam se 4 collaboratory

API / Get projects returns deleted projects

Get All Projects method returns projects that don't exist. E.g.

Create X.
Create Y.
Show project list: X, Y.
Remove X.
Current: Show project list: X, Y.
Expected: Show project list: Y.

Permissions

Potřeba vytvořit nějaký základní návrh

  • návrh handlování permission
  • vytvořit dekorátory funkcí

User projects - returns all projects

Metoda User Projects vrací všechny existující projekty, nejen uživatelské. Má vracet pouze projekty, kde je vlastníkem, nebo kde je uživateli přiřazena nějaká konkrétní role.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.