Compare commits

...

5 Commits

Author SHA1 Message Date
e60b708ea6 Add preliminary jobs tables into database model 2024-03-05 22:37:43 +00:00
776803fc96 Merge pull request 'Add catalan flag' (!77) from HerHde/ki-backend:add-ca-flag into main
Reviewed-on: kompetenzinventar/ki-backend#77

> Anything else to consider?

I didn't know myself, but it was interesting to find out. No, this should work as soon as deployed. Catalan already exists in the language DB, and the existance of ca.svg is already tested whenever a catalan icon is requested.
2023-12-10 19:08:48 +01:00
702f4968f6 Merge pull request 'Use Gitea registry' (!76) from gitea-registry into main
Reviewed-on: kompetenzinventar/ki-backend#76
2023-12-10 18:46:35 +01:00
fdc81844b5 Push image to Gitea registry 2023-12-04 19:51:27 +01:00
b804c22a93 Use Gitea registry for base images 2023-12-04 19:45:08 +01:00
4 changed files with 77 additions and 30 deletions

View File

@ -15,7 +15,7 @@ trigger:
steps: steps:
- name: install-lint-test - name: install-lint-test
image: registry.wtf-eg.net/ki-backend-builder:1.0.0 image: git.wtf-eg.de/kompetenzinventar/builder:1.0.2
commands: commands:
- pipenv install --dev - pipenv install --dev
- pipenv run flake8 - pipenv run flake8
@ -43,8 +43,8 @@ steps:
- name: docker-publish - name: docker-publish
image: plugins/docker image: plugins/docker
settings: settings:
registry: registry.wtf-eg.net registry: git.wtf-eg.de
repo: registry.wtf-eg.net/ki-backend repo: git.wtf-eg.de/kompetenzinventar/backend
target: ki-backend target: ki-backend
auto_tag: true auto_tag: true
username: username:
@ -91,7 +91,7 @@ trigger:
steps: steps:
- name: install-lint-test - name: install-lint-test
image: registry.wtf-eg.net/ki-backend-builder:1.0.0 image: git.wtf-eg.de/kompetenzinventar/builder:1.0.2
commands: commands:
- pipenv install --dev - pipenv install --dev
- pipenv run flake8 - pipenv run flake8
@ -100,14 +100,11 @@ steps:
- name: docker-publish - name: docker-publish
image: plugins/docker image: plugins/docker
settings: settings:
registry: registry.wtf-eg.net registry: git.wtf-eg.de
repo: registry.wtf-eg.net/ki-backend repo: git.wtf-eg.de/kompetenzinventar/backend
target: ki-backend target: ki-backend
auto_tag: true auto_tag: true
username: username:
from_secret: "docker_username" from_secret: "docker_username"
password: password:
from_secret: "docker_password" from_secret: "docker_password"
image_pull_secrets:
- dockerconfig

View File

@ -2,7 +2,7 @@
# #
# SPDX-License-Identifier: AGPL-3.0-or-later # SPDX-License-Identifier: AGPL-3.0-or-later
FROM registry.wtf-eg.net/ki-backend-builder:1.0.1 as builder FROM git.wtf-eg.de/kompetenzinventar/builder:1.0.2 as builder
COPY Pipfile* ./ COPY Pipfile* ./
@ -10,7 +10,7 @@ RUN PIP_USER=1 PIP_IGNORE_INSTALLED=1 pipenv install --system --deploy --ignore-
RUN pip3 uninstall --yes pipenv RUN pip3 uninstall --yes pipenv
FROM registry.wtf-eg.net/ki-backend-base:1.0.1 as ki-backend FROM git.wtf-eg.de/kompetenzinventar/base:1.0.2 as ki-backend
# Install six explicitly. Otherwise Python complains about it missing. # Install six explicitly. Otherwise Python complains about it missing.
RUN pip3 install six RUN pip3 install six

View File

@ -222,25 +222,6 @@ docker-compose up
Dann http://localhost:13337 aufrufen. Dann http://localhost:13337 aufrufen.
### Workaround, falls der Zugriff auf registry.wtf-eg.net nicht möglich ist
Voraussetzung:
[ki-backend-docker](https://git.wtf-eg.de/kompetenzinventar/ki-backend-docker) muss parallel zum `ki-backend` ausgecheckt sein.
```
cd ki-backend-docker
docker build . --target base -t ki-backend-base
docker build . --target builder -t ki-backend-builder
```
Ändern der 2 Einträge im `Dockerfile` des `ki-backend`:
- registry.wtf-eg.net/ki-backend-builder:1.0.0 -> ki-backend-builder
- registry.wtf-eg.net/ki-backend-base:1.0.0 -> ki-backend-base
Danach sollte `docker-compose up` funktionieren.
## Lizenzen ## Lizenzen
Dieses Projekt erfüllt die [REUSE](https://reuse.software/) Spezifikation. Dieses Projekt erfüllt die [REUSE](https://reuse.software/) Spezifikation.

View File

@ -19,6 +19,8 @@ class User(db.Model):
tokens = relationship("Token", back_populates="user") tokens = relationship("Token", back_populates="user")
profile = relationship("Profile", back_populates="user") profile = relationship("Profile", back_populates="user")
jobs = relationship("Job", back_populates="owner")
job_responses = relationship("JobResponse",back_populates="user")
def to_dict(self): def to_dict(self):
return {"id": self.id} return {"id": self.id}
@ -146,6 +148,7 @@ class Skill(db.Model):
profiles = relationship("ProfileSkill", back_populates="skill") profiles = relationship("ProfileSkill", back_populates="skill")
searchtopics = relationship("ProfileSearchtopic", back_populates="skill") searchtopics = relationship("ProfileSearchtopic", back_populates="skill")
jobs = relationship("JobSkill", back_populates="skill")
def to_dict(self): def to_dict(self):
return {"id": self.id, "name": self.name, "icon_url": "/skills/{}/icon".format(self.id)} return {"id": self.id, "name": self.name, "icon_url": "/skills/{}/icon".format(self.id)}
@ -228,3 +231,69 @@ class ProfileLanguage(db.Model):
def to_dict(self): def to_dict(self):
return {"profile_id": self.profile_id, "language": self.language.to_dict(), "level": self.level} return {"profile_id": self.profile_id, "language": self.language.to_dict(), "level": self.level}
class Job(db.Model):
__tablename__ = "job"
id = Column(Integer, primary_key=True)
owner_id = Column(Integer, ForeignKey("user.id"), nullable=False)
description = Column(String(5000))
amount_of_people_needed = Column(Integer, nullable=False)
amount_of_weekhours_needed = Column(Integer)
amount_of_payment_hour = Column(Integer)
timeframeImprecise = Column(String(120))
remotePercent = Column(Integer)
location = Column(String(50))
beginDate = Column(DateTime)
endDate = Column(DateTime)
link = Column(String(500))
aidsLevel = Column(Integer) ## Stupid Shit one has to deal with like Teams or weird Apps, Datathrower Webportals...
created = Column(DateTime, nullable=False, default=datetime.now)
updated = Column(DateTime, onupdate=datetime.now, nullable=False, default=datetime.now)
withdrawn = Column(DateTime, nullable=True)
owner = relationship("User", back_populates="jobs")
responses = relationship("JobResponse", back_populates="jobs")
skills = relationship("JobSkill", back_populates="job")
def to_dict(self):
return {"job_id": self.id, "owner_id": self.owner_id, "description": self.description,
"amount_of_people_needed": self.amount_of_people_needed, "amount_of_weekhours_needed": self.amount_of_weekhours_needed,
"amount_of_payment_hour": self.amount_of_payment_hour, "timeframeImprecise": self.timeframeImprecise,
"remotePercent": self.timeframeImprecise, "location": self.location, "beginDate": self.beginDate,
"endDate": self.endDate, "link": self.link, "aidsLevel": self.aidsLevel, "created": self.created,
"updated": self.updated, "withdrawn": self.withdrawn
}
class JobSkill(db.Model):
__tablename__ = "job_skill"
job_id = Column(Integer, ForeignKey("job.id"), primary_key=True)
skill_id = Column(Integer, ForeignKey("skill.id"), primary_key=True)
level = Column(SmallInteger, nullable=False)
job = relationship("Job", back_populates="skills")
skill = relationship("Skill", back_populates="jobs")
def to_dict(self):
return {"job_id": self.job_id, "skill": self.skill.to_dict(), "level": self.level}
class JobResponse(db.Model):
__tablename__ = "job_response"
job_id = Column(Integer, ForeignKey("job.id"), primary_key=True)
user_id = Column(Integer, ForeignKey("user.id"), primary_key=True)
created = Column(DateTime, nullable=False, default=datetime.now)
withdrawn = Column(DateTime, nullable=True) # no longer interested/available
job = relationship("Job", back_populates="responses")
user = relationship("User", back_populates="job_responses")
def to_dict(self):
return {
"job": self.job.to_dict(),
"user": self.user.to_dict(),
"created": self.created,
"withdrawn": self.withdrawn
}