get rid of svn keywords once and for good
[plcapi.git] / PLC / Methods / AddSession.py
1 import time
2
3 from PLC.Method import Method
4 from PLC.Parameter import Parameter, Mixed
5 from PLC.Auth import Auth
6 from PLC.Sessions import Session, Sessions
7 from PLC.Persons import Person, Persons
8
9 class AddSession(Method):
10     """
11     Creates and returns a new session key for the specified user.
12     (Used for website 'user sudo')
13     """
14
15     roles = ['admin']
16     accepts = [
17         Auth(),
18         Mixed(Person.fields['person_id'],
19               Person.fields['email'])
20         ]
21     returns = Session.fields['session_id']
22
23
24     def call(self, auth, person_id_or_email):
25
26         persons = Persons(self.api, [person_id_or_email], ['person_id', 'email'])
27
28         if not persons:
29             raise PLCInvalidArgument, "No such person"
30
31         person = persons[0]
32         session = Session(self.api)
33         session['expires'] = int(time.time()) + (24 * 60 * 60)
34         session.sync(commit = False)
35         session.add_person(person, commit = True)
36
37         return session['session_id']