Merge pull request #4144 from MaximilianKrambach/dateSort

sort by date in motion
This commit is contained in:
Emanuel Schütze 2019-01-19 22:43:29 +01:00 committed by GitHub
commit 034a4d2a67
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 35 additions and 9 deletions

View File

@ -241,7 +241,11 @@ export abstract class SortListService<V extends BaseViewModel> {
const b = secondProperty();
return a.localeCompare(b, lang);
case 'object':
if (firstProperty instanceof Date) {
return firstProperty > secondProperty ? 1 : -1;
} else {
return firstProperty.toString().localeCompare(secondProperty.toString(), lang);
}
case 'undefined':
return 1;
default:

View File

@ -41,6 +41,8 @@ export class Motion extends AgendaBaseModel {
public log_messages: MotionLog[];
public weight: number;
public sort_parent_id: number;
public created: string;
public last_modified: string;
public constructor(input?: any) {
super('motions/motion', 'Motion', input);

View File

@ -220,6 +220,26 @@ export class ViewMotion extends BaseViewModel {
return this._attachments ? this._attachments : null;
}
/**
* @returns the creation date as Date object
*/
public get creationDate(): Date {
if (!this.motion || !this.motion.created) {
return null;
}
return new Date(this.motion.created);
}
/**
* @returns the date of the last change as Date object, null if empty
*/
public get lastChangeDate(): Date {
if (!this.motion || !this.motion.last_modified) {
return null;
}
return new Date(this.motion.last_modified);
}
/**
* Gets the comments' section ids of a motion. Used in filter by motionComment
*

View File

@ -17,10 +17,9 @@ export class MotionSortListService extends SortListService<ViewMotion> {
{ property: 'submitters' },
{ property: 'category' },
{ property: 'motion_block_id', label: 'Motion block' },
{ property: 'state' }
// choices from 2.3:
// TODO creation date
// TODO last modified
{ property: 'state' },
{ property: 'creationDate', label: 'Creation date' },
{ property: 'lastChangeDate', label: 'Last modified' }
]
};
protected name = 'Motion';

View File

@ -576,7 +576,7 @@ class MotionViewSet(ModelViewSet):
# Save motion.
motion.save(
update_fields=["state", "identifier", "identifier_number"],
update_fields=["state", "identifier", "identifier_number", "last_modified"],
skip_autoupdate=True,
)
message = f"The state of the motion was set to {motion.state.name}."
@ -648,7 +648,7 @@ class MotionViewSet(ModelViewSet):
motion.set_state(state_id)
# Save motion.
motion.save(update_fields=["state"], skip_autoupdate=True)
motion.save(update_fields=["state", "last_modified"], skip_autoupdate=True)
# Write the log message.
motion.write_log(
@ -708,7 +708,7 @@ class MotionViewSet(ModelViewSet):
motion.recommendation = None
# Save motion.
motion.save(update_fields=["recommendation"], skip_autoupdate=True)
motion.save(update_fields=["recommendation", "last_modified"], skip_autoupdate=True)
label = (
motion.recommendation.recommendation_label
if motion.recommendation
@ -794,7 +794,7 @@ class MotionViewSet(ModelViewSet):
motion.set_recommendation(recommendation_state_id)
# Save motion.
motion.save(update_fields=["recommendation"], skip_autoupdate=True)
motion.save(update_fields=["recommendation", "last_modified"], skip_autoupdate=True)
label = (
motion.recommendation.recommendation_label
if motion.recommendation
@ -842,6 +842,7 @@ class MotionViewSet(ModelViewSet):
"identifier",
"identifier_number",
"state_extension",
"last_modified",
],
skip_autoupdate=True,
)