Code Monkey home page Code Monkey logo

projectstocksd's Introduction

ProjectStockSD

Velkommen til vores Project Stock repository!

Dette tilhører gruppen bestående af:

Christian Engelsborg N Hansen

Stefan Friis Tofte

Lasse Halberg Haarby

Mads Kronborg Nielsen

Indholdsfortegnelse

Kør serveren lokalt

Installer afhængigheder

[sudo] apt-get install libmysqlclient-dev python-dev # eller den tilsvarende kommando for din distribution

[sudo] pip install mysqlclient

Skift til debug mode

I filen project_stock/project_stock/settings.py erstat Debug = False med Debug = True (husk at den ikke skal pushes medmindre I laver andre relevante ændringer; Debug SKAL være False på webserveren).

Login-fil

Filen project_stock/project_stock/config.cnf skal have følgende format:

[client]

database = "database"

user = "username"

password = "password"

host = "128.199.39.136"

default-character-set = "utf8"

Indstillingerne skal udfyldes manuelt (spørg efter dem), og husk, at denne fil heller ikke skal pushes til Github, da passwords kun skal være på webserveren og testmaskinerne.

Kør serveren

Skift mappe til project_stock Django projektet og kør:

python manage.py runserver

Migrations på serveren

Log ind som root

sudo -i

Lav migrations project_stock

python manage.py makemigrations

python manage.py migrate

Fortryd migrations

python manage.py migrate app-navn zero

Eksempel

python manage.py migrate projects zero

Genstart serveren

systemctl restart httpd mariadb (over SSH som root) eller lokalt med CTRL-C + python manage.py runserver

Git Tips

Undgå merge commits

Da folk tit spørger hvorfor der kommer merge commits og jeg ikke kan svare på det, har jeg lavet lidt research :-)

Et eksempel på en unødvendig merge commit:
  1. Vi laver en git pull for at være opdateret med origin/master. God stil
  2. Vi skriver en masse pæn og effektiv kode og committer med gode commit beskeder. Se hvordan her og her
  3. Vi vil gerne offentliggøre vores flotte commits så vi laver en git push - afvist

Vores git push bliver afvist, da nogen har lavet ændringer siden vi pullede. Derfor skal det merges, da origin er foran vores lokale branch.

Løsningen er rebasing.

Forskellige forslag til at implementere løsningen er beskrevet kort og godt her.

Det introducerer dog et nyt problem: Merge commits som vi gerne vil have, bliver også omskrevet via en rebase. Løsningen er beskrevet her i det sidste afsnit.

Til sidst endte jeg op med 2 kommandoer der skriver til .gitconfig og dermed gør ændringerne vedvarende:

git config --global branch.autosetuprebase always hvilket sørger for at det bliver en git pull --rebase automatisk

og

git config --global pull.rebase preserve hvilket sørger for at git pull --rebase køres med --rebase=preserve

Diff

Se forskellen på HEAD (nyeste commit) og de n seneste commits:

git diff HEAD~n HEAD [fil]

Branches

Lav en gren for at implementere/fixe en issue (en god konvention er at bruge issue numre)

git checkout -b ny-gren

Flet master ind i den nye gren, hvis den afhænger af ændringer derfra (husk at forblive på den nye gren)

git merge master

Flet den ind i master når det er færdigt og sikkert

git checkout master

git merge ny-gren

Materiale

Liste over forskellige materiale og evt. relevant information.

Liste over ansatte på diku

DIKU Ansatte

Liste over projekter for studerende

Erhvervsportal

HTML Scraping via Python evt. diverse

xml.etree.ElementTree

Python Guide

Web Scraping with Beautiful Soup

Thenewboston - Web Crawler Tutorial Python

Thenewboston - Django for Beginners (Episode 34-36 handler om User Registration, Creating Accounts og User Authentification)

HTML Tags - Ansatte

Tabel

Table id og class:

<table id="medarbejdertable" cellspacing="0" class="list" summary="Medarbejderoversigt">

Format for rows:

<tr><td valign='top'><a href="LINK">NAVN</a></td><td valign='top'>titel</td><td valign='top'>ARBEJDSOMRÅDE</td><td valign='top'>TELEFON</td><td valign='top'>EMAIL</td></tr>

De ansatte har (måske alle) følgende html tags, som er brugbare for scraping:

"pure" links

Foto

<div class="person_photo"><img src="LINK" alt="NAVN"></div>

Navn og titel

<span class="person">NAVN</span>

<p class="type">TITEL</p>

Adresse, telefon og e-mail

<div class="address"><p>ADRESSE</p><p>ADRESSE FORTSAT</p>

<ul class="relations email"><li><a href="mailto:EMAIL" class="link"><span>EMAIL</span></a></li></ul>

<span class="numbers"><span class="property person_contact_phone"><strong>Telefon: </strong>TELEFON NUMMER</span></span>

Arbejdsgruppe

<ul class="relations organisations"><li><h2 class="title"><span>ARBEJDS GRUPPE</span></h2></ul>

Hjemmeside

<ul class="relations"><li><a onclick="window.open(this.href); return false;" href="HJEMMESIDE" class="link"><span>HJEMMESIDE</span></a></li></ul>

Præsentation

Publikationer

Aktiviteter

"id" links

Foto

<div id="forskerprofil_kontaktoplysninger"><img src="LINK" alt="NAVN"></img></div>

Navn og titel

<div xmlns="http://www.w3.org/1999/xhtml" id="forskerprofil_kontaktoplysninger"><h1>NAVN</h1></div>

<p class="forskerprofil_titel">titel</p>

Adresse, telefon og e-mail

<p class="forskerprofil_adresse"><strong>INSTITUT</strong><br>GADE+GADENUMMER<br>POSTNR+BY</p>

<p class="forskerprofil_kontakt">Telefon: NUMMER<br/>Telefon (Sekretariat): SEKRETARIATNUMMER<br/>Mobil: MOBILNUMMER<br/>E-mail: <a href="mailto:EMAIL">EMAIL</a><br/></p>

HTML Tags - Projekter

Projekter har følgende interessante HTML tags:

DIKU test server links

Bachelor Projekter

Kandidat Projekter

Kandidat Speciale

Virksomhedsprojekter

Andre projekter

projectstocksd's People

Contributors

cenh avatar ninjalf2 avatar stefanft avatar kronborq avatar steefaaaaan avatar

Stargazers

 avatar  avatar

Watchers

James Cloos avatar  avatar  avatar  avatar  avatar  avatar Tobias Uldall-Espersen avatar

projectstocksd's Issues

Flere models

Vi skal have fået models til artikler, præsentationer, aktiviteter og grupper til at få op og køre.

Forside

Vi skal overveje hvad der skal være på forsiden af vores webside, indtil videre viser den bare alle projekter.

(Ide) Noget i stil med: Vis X nyeste projekter, vis Y nyeste publikationer og fremhæv en gruppe/person eller andet.

500 Internal Server error på serveren

Nogle gange får man en 500 eller 403 status kode, når man navigerer rundt på serveren. Det ser ud til at kunne reproduceres ofte, hvis man f.eks. bliver ved med at refreshe.

Kan være serveren der bugger grundet hukommelse eller for mange requests.

Status codes

Vi burde have bedre status beskeder hvis en bruger løber ind i en 404 og 500 status kode.

VI burde måske også implementere flere håndteringer af status koder.

Avoid null=True for string-based fields

"Avoid using null on string-based fields such as CharField and TextField because empty string values will always be stored as empty strings, not as NULL. If a string-based field has null=True, that means it has two possible values for “no data”: NULL, and the empty string."

This is what causes some supervisors' phone numbers to be None when filling in scraped data. If the string-based fields are omitted when creating the object, the field is saved as None (NULL) instead of the empty string, whereas the admin interface saves omitted fields as the empty string.

This seems to me as if null=True is not required for database strings to be null (""), only blank=True is required.

See Field.null

Profiler

Vi skal kunne fremvise en profil over enkelte vejledere og projekter.

Eks. linket 'supervisors/1' viser en profil over vejlederen med id 1.

Mere mock-data

Det kunne være rart, hvis vi havde flere mock projekter, vejledere, grupper og publikationer indtil scaperne virker.

Login system

Efter at have verificeret en bruger, skal brugere kunne logge ind og ændre på projekter relateret til brugeren.

Prettier design

Hvis vi har mere tid, så kan vi lave noget pænere design.

Server cannot render some characters

The server cannot render unicode characters such as ÆØÅ when attempting to change a Supervisor in the admin interface.
Testing locally works fine.

See warnings.log on the server.

Templates

Vi skal bruge templates til at vise de forskellige kataloger, udfra views.

Testing

Følgende test typer skal laves

  • Unit test
  • Integration test
  • Accept test

Reorganize

Reorganize apps and files into a less cluttered and more meaningful tree.

site/backend seems to be an extra unnecessary path, can perhaps be removed.

project_stock should be root and project_stock should be the main app under the root.

A branch called reorganize contains the necessary work tree fixes, but the database has to be altered to fit them. The steps are listed here: http://stackoverflow.com/a/8408131/2373926

A merge of master into reorganize should be done before merging reorganize into master.

Views

Vi skal bruge views til at kunne hente projekter, grupper, vejledere, artiklere, præsentationer og mere.

Views til nye models

Er afhængig af #11 , denne issue skal løses først. Opgaven bestå i af at have views til at kalde disse models.

Søgning

Søgning af vejledere og projekter.

Navigation

Vi skal komme op med en metode til at navigere rundt på hjemmesiden.

Stylesheet css

Vi skal have en pæn hjemmeside, derfor har vi brug for noget godt css.

Documentation

Functions and classes should be documented, even if they are Django-generated.

Checkliste (Ændr den her kommentar for at tilføje flere filer) :

  • Views
  • Urls
  • Models
  • Scraper
  • Fill Mock Data

Håndtering af filer

Vi burde kunne håndtere filer, f.eks. burde en vejleder kunne tilføje en .pdf eller powerpoint til et projekt, som er en uddybelse af projektet. Og en vejleder burde kunne uploade et billede.

Spørgsmål at overveje, hvis vi implementere dette:

  • Hvor skal vi gemme filerne?
  • Hvordan tjekker vi for om filerne er sikre, eller rigtigt format?

Filer på server

Man ser ikke ud til at kunne uploade filer via admin panelet på serveren (500 - internal server error). Det ser ikke ud til at være pga. debug er sat til false, men måske nærmere rettigheder på serveren til at oprette mapper?

Verifikation af brugere

Vi skal kunne knytte en bruger der besøger vores side, med en vejleder stående i vores database.

Registering af brugere

Vejledere skal kunne registere sig på vores hjemmeside, så de selv kan tilføje projekter.

Antal visninger

Måske skal vi have et limit på hvor mange projekter og vejledere vi viser.

Det er måske ikke så godt, hvis siden f.eks. viser 300 forskellige projekter.

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.