concrexit issueshttps://gitlab.science.ru.nl/thalia/concrexit/-/issues2020-03-13T16:29:15+01:00https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1034Missing singlepages translations2020-03-13T16:29:15+01:00Joren VranckenMissing singlepages translations### Description
Add all missing singlepages translations.
After I run `../manage.py makemessages --locale nl --no-obsolete` in `website/singlepages` 170+ translations seem to be missing.### Description
Add all missing singlepages translations.
After I run `../manage.py makemessages --locale nl --no-obsolete` in `website/singlepages` 170+ translations seem to be missing.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1025ValueError: day is out of range for month2020-03-04T20:22:40+01:00Thalia TechnicieValueError: day is out of range for monthSentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)
```
ValueError: day is out of range for month
(11 additional frame(s) were not displayed)
...
File "rest_framework/ser...Sentry Issue: [CONCREXIT-24](https://sentry.io/organizations/thalia/issues/1538288408/?referrer=gitlab_integration)
```
ValueError: day is out of range for month
(11 additional frame(s) were not displayed)
...
File "rest_framework/serializers.py", line 260, in data
self._data = self.to_representation(self.instance)
File "rest_framework/serializers.py", line 529, in to_representation
ret[field.field_name] = field.to_representation(attribute)
File "rest_framework/fields.py", line 1905, in to_representation
return method(value)
File "members/api/serializers.py", line 93, in _achievements
return member_achievements(instance.user)
File "members/services.py", line 72, in member_achievements
earliest = earliest.replace(year=earliest.year + mentor_year.year)
```Marie SimonMarie Simonhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1023Add wiki page about Concrexit Docker images2020-02-29T11:43:48+01:00Joren VranckenAdd wiki page about Concrexit Docker images### One-sentence description
Explain how the current Concrexit Docker images are built and what they are used for.### One-sentence description
Explain how the current Concrexit Docker images are built and what they are used for.Joren VranckenJoren Vranckenhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1022Add wiki page about Renovate2020-02-28T12:10:47+01:00Joren VranckenAdd wiki page about Renovate### One-sentence description
Add wiki page about Renovate.
### Why?
It is important to have documentation about the third-party applications we use.### One-sentence description
Add wiki page about Renovate.
### Why?
It is important to have documentation about the third-party applications we use.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1021Replace Docker image used by Renovate2020-02-28T12:09:51+01:00Joren VranckenReplace Docker image used by Renovate### One-sentence description
Replace Docker image used by Renovate.
### Why?
Apparently Renovate still uses [`thalia/python-thalia`](https://hub.docker.com/r/thalia/python-thalia). `thalia/python-thalia` is outdated and not automaticall...### One-sentence description
Replace Docker image used by Renovate.
### Why?
Apparently Renovate still uses [`thalia/python-thalia`](https://hub.docker.com/r/thalia/python-thalia). `thalia/python-thalia` is outdated and not automatically updated.
### Suggested implementation
Either [`renovate/python`](https://hub.docker.com/r/renovate/python) or [`thalia/concrexit-dependencies`](https://hub.docker.com/r/thalia/concrexit-dependencies).https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1020Do not use hardcoded colors for calendar API2020-03-04T17:06:42+01:00Job DoesburgDo not use hardcoded colors for calendar API<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### One-sentence description
Do not use hardcoded colors for calendar API in `website/members/api/serializers.py` r42-49 and `website/events/api/serializers.py`
### Why?
We shouldn't hardcode these things at the API level but provide them using CSS.
### Current implementation
The API provides a `backgroundColor` and `textColor` in the event sources APIs that is used by FullCalendar via https://fullcalendar.io/docs/events-json-feed. Every item in the feed is an event source object: https://fullcalendar.io/docs/event-source-object.
### Suggested implementation
Provide a `className` attribute instead and determine the background color and text color based on the class using CSS.Marthijn van den NieuwenhuizenMarthijn van den Nieuwenhuizenhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1019Move business logic of notifications out of models2020-02-23T16:30:42+01:00Sébastiaan VersteegMove business logic of notifications out of models<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### One-sentence description
Move business logic of notifications out of models
### Why?
Clean up the models
### Current implementation
Code in the models (mostly events)
### Suggested implementation
Use signalsSébastiaan VersteegSébastiaan Versteeghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1017Remove redundant html templates from `/thaliawebsite/templates/singlepages/`2020-03-13T16:29:15+01:00Job DoesburgRemove redundant html templates from `/thaliawebsite/templates/singlepages/`<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### One-sentence description
Remove redundant html templates from `/thaliawebsite/templates/singlepages/`
### Why?
They are redundant, since they are also in `/singlepages/templates` and these are the ones that are used.
### Current implementation
It appears as if the translations are still in `/thaliawebsite` though, so it would probably be nice to move these.
### Suggested implementationMarthijn van den NieuwenhuizenMarthijn van den Nieuwenhuizenhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1014Add weekday to newsletter events2020-03-09T22:45:22+01:00Wouter DoelandAdd weekday to newsletter eventsIn the current newsletter, there is only a date and time next to the event. It would be nice if there also was a (week)day there, because most people plan activities based on what day they are.
### One-sentence description
Add the even...In the current newsletter, there is only a date and time next to the event. It would be nice if there also was a (week)day there, because most people plan activities based on what day they are.
### One-sentence description
Add the event day to events in the newsletter.
### Motivation
This change would make it more easy to plan events if you just read the newsletter from time to time.
### Desired functionality
Add the (week)day to the event info in the newsletter.
### Suggested implementation
WHERE
HG00.307
WHEN
Feb. 11, 2020, 12:15 p.m. - 13:15
PRICE
Free
->
WHERE
HG00.307
WHEN
Tue, Feb. 11, 2020, 12:15 p.m. - 13:15
PRICE
FreeWouter DoelandWouter Doelandhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1013Prevent payment cancellation when payment in batch2020-03-09T17:59:50+01:00Job DoesburgPrevent payment cancellation when payment in batch### One-sentence description
Prevent payment cancellation / changes when payment in batch
### Why?
When a payment is added to a payment batch (#932), it must stay in there and may not be changed or deleted anymore.
### Current implem...### One-sentence description
Prevent payment cancellation / changes when payment in batch
### Why?
When a payment is added to a payment batch (#932), it must stay in there and may not be changed or deleted anymore.
### Current implementation
This might be possible
### Suggested implementationhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1012Export payment batch per topic / event2020-02-12T20:42:04+01:00Job DoesburgExport payment batch per topic / event### One-sentence description
Export payment batch per topic / event
### Motivation
Required for bookkeeping of Thalia Pay
### Desired functionality
Use the `payment_topic` from Payments, provided by `Payable` models
### Suggested i...### One-sentence description
Export payment batch per topic / event
### Motivation
Required for bookkeeping of Thalia Pay
### Desired functionality
Use the `payment_topic` from Payments, provided by `Payable` models
### Suggested implementation
Extend #932 with a second way of exportinghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1011Use create_payment everywhere2020-03-09T17:59:50+01:00Job DoesburgUse create_payment everywhere### One-sentence description
Use create_payment (from #1010 ) everywhere where we use payments
### Why?
Prevent code duplication
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested implementation
Make models P...### One-sentence description
Use create_payment (from #1010 ) everywhere where we use payments
### Why?
Prevent code duplication
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested implementation
Make models Payable (implement the interface / abstract class from #1010) and use `create_payment` as the only way to interact with / create payments.https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1010Create Payable interface2020-03-04T19:09:01+01:00Job DoesburgCreate Payable interface### One-sentence description
Create a Payable interface to be used for all models that use Payments
### Why?
To prevent code duplication and improve testing
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested i...### One-sentence description
Create a Payable interface to be used for all models that use Payments
### Why?
To prevent code duplication and improve testing
### Current implementation
Shitty, chaotic, anarchy, tears
### Suggested implementation
Payable abstract class with `@property @abstractmethod`s:
- `payment_amount` as the amount of the payment
- `payment_topic` as the grouping key for the type of payment (ledger information)
- `payment_notes` for the user specific details
- `payment_payer` for the user paying
Payments must then have a constructor `create_payment` that takes as arguments:
- a `Payable` object
- a payment `processor` that is the person that processes the payment
- the payment `type` being either thalia pay, card, cash or wire transfer (no None anymore!)Sébastiaan VersteegSébastiaan Versteeghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1009Improve tests for Payments app2020-02-12T20:39:44+01:00Luko van der MaasImprove tests for Payments app### One-sentence description
A lot of tests for payments are either not consistent or do some weird stuff.
### Why?
Better tests helps stability### One-sentence description
A lot of tests for payments are either not consistent or do some weird stuff.
### Why?
Better tests helps stabilitySébastiaan VersteegSébastiaan Versteeghttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1007Expiration date on partner pages2020-02-04T14:40:33+01:00Jen Dusseljeejendusseljee@gmail.comExpiration date on partner pages<!--
You want something new.
-->
### One-sentence description
<!-- What do you want? -->
Can you add a functionality to set an expiration date on profile pages of partners.
### Motivation
<!-- Why should we care? -->
Because it ...<!--
You want something new.
-->
### One-sentence description
<!-- What do you want? -->
Can you add a functionality to set an expiration date on profile pages of partners.
### Motivation
<!-- Why should we care? -->
Because it is pretty annoying to have to memorise the duration of all contracts. It would be way easier to just be able to set an expiration date when the contract enters.
### Desired functionality
<!--
What we should support.
Please provide this in general terms, if possible.
You can provide suggestions on how to implement this later.
We like high-level descriptions as those allow us to better consider
the desired result. Assumptions on how the site works don't
necessarily match how we implemented certain things.
-->
An extra date field in the admin page when editing/creating a partner page. When this date has passed, the profile page should automatically be set to inactive (maybe send a mail to extern@ to let the extern know when this happens).
### Suggested implementation
<!--
If you have any notes on how we could achieve this feature,
share them here.
-->
-https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1006Miscellaneous annual files on document page2020-02-04T16:04:53+01:00Nick van OersMiscellaneous annual files on document page
<!--
You want something new.
-->
### One-sentence description
The ability to add more yearly files on the document page.
### Motivation
Normally things like the half year report are added as GM documents, but now we want to add ...
<!--
You want something new.
-->
### One-sentence description
The ability to add more yearly files on the document page.
### Motivation
Normally things like the half year report are added as GM documents, but now we want to add yearly documents that are not necessarily discussed at a GM. We want to add a report from the societies on how well everything worked that year, as the society rules state that they should publish this.
<!-- Why should we care? -->
### Desired functionality
A new section underneath the GMs, where miscellaneous or other documents can be added.
<!--
What we should support.
Please provide this in general terms, if possible.
You can provide suggestions on how to implement this later.
We like high-level descriptions as those allow us to better consider
the desired result. Assumptions on how the site works don't
necessarily match how we implemented certain things.
-->
### Suggested implementation
See picture in the comments.
<!--
If you have any notes on how we could achieve this feature,
share them here.
-->
https://gitlab.science.ru.nl/thalia/concrexit/-/issues/1003Create more kinds of fixtures2020-02-19T22:57:03+01:00Job DoesburgCreate more kinds of fixtures<!--
You want something new.
-->
### One-sentence description
Create fixtures should create fixture for, for example, courses as well.
### Motivation
It makes testing easier
### Desired functionality
At least fixtures should b...<!--
You want something new.
-->
### One-sentence description
Create fixtures should create fixture for, for example, courses as well.
### Motivation
It makes testing easier
### Desired functionality
At least fixtures should be created for courses. But also maybe for photos and albums, documents, payments, registrations?, etc...
### Suggested implementationSimcha van CollemSimcha van Collemhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/1000Internet required to run tests2020-01-26T22:07:58+01:00Joren VranckenInternet required to run tests### Description
Internet required to run tests, because [`activemembers/signals.py` always initializes the G Suite API](https://gitlab.science.ru.nl/thalia/concrexit/blob/master/website/activemembers/signals.py#L15). This is not (and sho...### Description
Internet required to run tests, because [`activemembers/signals.py` always initializes the G Suite API](https://gitlab.science.ru.nl/thalia/concrexit/blob/master/website/activemembers/signals.py#L15). This is not (and should not be) always necessary (e.g. when running tests).https://gitlab.science.ru.nl/thalia/concrexit/-/issues/997Review url is not clear from CI logs2020-01-23T19:48:00+01:00Joren VranckenReview url is not clear from CI logs### One-sentence description
Review Host url is not clear from CI logs.
### Current implementation
The username and password are shown to the user, but not the url to the review environment.### One-sentence description
Review Host url is not clear from CI logs.
### Current implementation
The username and password are shown to the user, but not the url to the review environment.Joren VranckenJoren Vranckenhttps://gitlab.science.ru.nl/thalia/concrexit/-/issues/995Deliver sliders or other large images as webp2020-01-15T22:41:46+01:00Jelle Besselingjelle@pingiun.comDeliver sliders or other large images as webp<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI...<!--
This template is for changes that do not affect the behaviour of the website.
** If you are not in the Technicie, there is a very high chance that you
should not use this template
Examples:
* Changes in CI
* Refactoring of code
* Technicie-facing documentation
-->
### Why?
According to [Google PageSpeed](https://developers.google.com/speed/pagespeed/insights/?hl=nl&url=thalia.nu&tab=mobile), we can speed up our site by a lot by converting slider images to webp.
<!-- Please motivate why we should invest into this change -->
### Current implementation
Large pictures are all served as png, this is a good image format for things that need to be compressed lossless.
<!-- If relevant, describe how it's done currently -->
### Suggested implementation
Supply images as `<picture>` [with multiple sources](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images#Use_modern_image_formats_boldly)
<!-- Provide (a) suggestion(s) for how we could approach this -->