/BookSys

Primary LanguageHTML

BookSys

https://distrsys.herokuapp.com/

|-- _BookSys
|   |-- database.py
|   |-- __init__.py
|   |-- static
|   |   `-- g_styles.css
|   |-- templates
|   |   |-- database.html
|   |   |-- home.html
|   |   |-- includes
|   |   |   |-- _messages.html
|   |   |   `-- _navbar.html
|   |   `-- layout.html
|   `-- views.py
|-- Makefile
|-- misc
|   |-- spam_async.py
|   `-- spam_sync.py
|-- Procfile
|-- README.md
`-- requirements.txt

database.py = λογική ΒΔ (ORM)
static/g_styles.css = αρχείο(α) .css
templates/* = html αρχεία του front-end
templates/includes/_* = μικρά κομμάτια html που χρησιμοποιούνται (γίνονται "include") στα υπόλοιπα
views.py = το αρχείο με τη λογική του API / back-end

Χαρακτηριστικά πρότζεκτ:

  • PostgreSQL (remote)
  • Python3/Flask
  • SQLALchemy (ORM)
  • Jinja2 (templates)

Η εφαρμογή έχει τρία κομμάτια, χρήστες, βιβλία και trackers. Οι χρήστες 'ανεβάζουν' βιβλία προς δανεισμό από τρίτους (μαξ 3 δανεισμένα βιβλία ανα πάσα στιγμή) και οι trackers κοιτάνε πότε δανείστηκε και πότε επιστράφηκε.

Έλεγχοι που γίνονται στο front-end:

  • Αν είναι logged_in ο χρήστης
  • Αν ο χρήστης είναι ο kmarg
  • Αν ένα βιβλίο έχει author
  • Αν ένα βιβλίο έχει description
  • Αν ο ιδιοκτήτης (owner) ενός βιβλίου είναι ίδιος με τον τρέχον χρήστη
  • Αν υπάρχουν trackers (δανεισμένα βιβλία)
  • Αν δεν έχει επιστραφεί κάποιο βιβλίο

Έλεγχοι που γίνονται στο back-end:

  • Αν ο χρήστης είναι συνδεδεμένος
  • Αν ο χρήστης είναι ο kmarg
  • Αν η μέθοδος αιτήματος είναι POST
  • Αν κατά την προσθήκη βιβλίου δεν υπάρχει title
  • Αν κατά την προσθήκη βιβλίου υπάρχει αρνητικό quantity
  • Αν κατά την διαγραφή βιβλίου ο ιδιοκτήτης ταυτίζεται με τον τρέχον χρήστη
  • Αν κατά τον δανεισμό βιβλίου ο ιδιοκτήτης ταυτίζεται με τον τρέχον χρήστη
  • Αν κατά τον δανεισμό βιβλίου ο χρήστης είναι εντός του ορίου του (όποιο και αν είναι αυτό)
  • Αν κατά τον δανεισμό βιβλίου ο χρήστης έχει ήδη δανειστεί το ίδιο βιβλίο (χωρίς να το επιστρέψει)
  • Αν κατά την επιστροφή βιβλίου ο ιδιοκτήτης ταυτίζεται με τον τρέχον χρήστη

Ενδιαφέρον σενάριο είναι αυτό κατά το οποίο ο χρήστης Α ανεβάζει ένα βιβλίο, ο Β το δανείζεται, ο Α το διαγράφει και μετά ο Β προσπαθεί να το επιστρέψει


Στον φάκελο misc υπάρχουν 2 μικρά σκριπτάκια τα οποία επιστρέφουν από μία βασική μέτριση χρόνου

spam_async.py
Τρέχει ασύγχρονα πολλά αιτήματα στον server, για κάθε αίτημα κρατάει τo χρόνο που πήρε και τυπώνει τον μέσο όρο απόκρισης. Παίρνει ως ορίσματα τον αριθμό των αιτημάτων και τον αριθμό των μέγιστων workers του executor.

spam_sync.py Τρέχει σύγχρονα πολλά αιτήματα στον server και επιστρέφει τον μέσο όρο απόκρισης. Παίρνει ως ορίσματα τον αριθμό των αιτημάτων.