Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
bwinf
medal
Commits
8fb09f4f
Commit
8fb09f4f
authored
Mar 24, 2020
by
Robert Czechowski
Browse files
Add contest lists of contests with login required (challenges)
parent
9ba792fa
Pipeline
#546
passed with stage
in 7 minutes and 40 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
src/core.rs
View file @
8fb09f4f
...
...
@@ -28,6 +28,7 @@ pub struct ContestInfo {
pub
name
:
String
,
pub
duration
:
i32
,
pub
public
:
bool
,
pub
login_required
:
bool
,
}
#[derive(Clone)]
...
...
@@ -151,6 +152,7 @@ pub enum ContestVisibility {
All
,
Open
,
Current
,
LoginRequired
,
}
pub
fn
show_contests
<
T
:
MedalConnection
>
(
conn
:
&
T
,
session_token
:
&
str
,
...
...
@@ -182,16 +184,19 @@ pub fn show_contests<T: MedalConnection>(conn: &T, session_token: &str,
let
v
:
Vec
<
ContestInfo
>
=
conn
.get_contest_list
()
.iter
()
.map
(|
c
|
ContestInfo
{
id
:
c
.id
.unwrap
(),
name
:
c
.name
.clone
(),
duration
:
c
.duration
,
public
:
c
.public
})
.map
(|
c
|
ContestInfo
{
id
:
c
.id
.unwrap
(),
name
:
c
.name
.clone
(),
duration
:
c
.duration
,
public
:
c
.public
,
login_required
:
c
.requires_login
.unwrap_or
(
false
)
})
.filter
(|
ci
|
ci
.public
)
.filter
(|
ci
|
ci
.duration
==
0
||
visibility
!=
ContestVisibility
::
Open
)
.filter
(|
ci
|
ci
.duration
!=
0
||
visibility
!=
ContestVisibility
::
Current
)
.filter
(|
ci
|
ci
.login_required
||
visibility
!=
ContestVisibility
::
LoginRequired
)
.filter
(|
ci
|
!
ci
.login_required
||
visibility
==
ContestVisibility
::
LoginRequired
)
.collect
();
data
.insert
(
"contest"
.to_string
(),
to_json
(
&
v
));
data
.insert
(
"contestlist_header"
.to_string
(),
to_json
(
&
match
visibility
{
ContestVisibility
::
Open
=>
"Trainingsaufgaben"
,
ContestVisibility
::
Current
=>
"Aktuelle Wettbewerbe"
,
ContestVisibility
::
LoginRequired
=>
"Herausforderungen"
,
ContestVisibility
::
All
=>
"Alle Wettbewerbe"
,
}));
...
...
@@ -274,7 +279,8 @@ pub fn show_contest<T: MedalConnection>(conn: &T, contest_id: i32, session_token
let
ci
=
ContestInfo
{
id
:
contest
.id
.unwrap
(),
name
:
contest
.name
.clone
(),
duration
:
contest
.duration
,
public
:
contest
.public
};
public
:
contest
.public
,
login_required
:
contest
.requires_login
.unwrap_or
(
false
)};
let
mut
data
=
json_val
::
Map
::
new
();
data
.insert
(
"contest"
.to_string
(),
to_json
(
&
ci
));
...
...
@@ -413,7 +419,7 @@ pub fn show_contest_results<T: MedalConnection>(conn: &T, contest_id: i32, sessi
data
.insert
(
"result"
.to_string
(),
to_json
(
&
results
));
let
c
=
conn
.get_contest_by_id
(
contest_id
);
let
ci
=
ContestInfo
{
id
:
c
.id
.unwrap
(),
name
:
c
.name
.clone
(),
duration
:
c
.duration
,
public
:
c
.public
};
let
ci
=
ContestInfo
{
id
:
c
.id
.unwrap
(),
name
:
c
.name
.clone
(),
duration
:
c
.duration
,
public
:
c
.public
,
login_required
:
c
.requires_login
.unwrap_or
(
false
)
};
data
.insert
(
"contest"
.to_string
(),
to_json
(
&
ci
));
data
.insert
(
"contestname"
.to_string
(),
to_json
(
&
c
.name
));
...
...
src/webfw_iron.rs
View file @
8fb09f4f
...
...
@@ -378,6 +378,8 @@ fn contests<C>(req: &mut Request) -> IronResult<Response>
core
::
ContestVisibility
::
Open
}
else
if
query_string
.contains
(
"current"
)
{
core
::
ContestVisibility
::
Current
}
else
if
query_string
.contains
(
"challenge"
)
{
core
::
ContestVisibility
::
LoginRequired
}
else
{
core
::
ContestVisibility
::
All
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment