コード例 #1
0
ファイル: users.py プロジェクト: lopatinsky/automation-gae
 def post(self):
     namespace_manager.set_namespace('')
     user_id = self.request.get_range('user_id')
     user = CompanyUser.get_by_id(user_id)
     rights = []
     for right in CompanyUser.ALL_RIGHTS_BITS:
         confirmed = self.request.get(str(right))
         if confirmed:
             rights.append(right)
     user.rights = CompanyUser.make_mask(rights)
     user.put()
     self.redirect('/company/user/list')
コード例 #2
0
ファイル: users.py プロジェクト: lopatinsky/automation-gae
 def post(self):
     rights = []
     for right in CompanyUser.ALL_RIGHTS_BITS:
         confirmed = self.request.get(str(right))
         if confirmed:
             rights.append(right)
     login = self.request.get('login')
     values = {
         'namespace': namespace_manager.get_namespace(),
         'login': login,
         'password_raw': self.request.get('password'),
         'rights': CompanyUser.make_mask(rights),
     }
     namespace_manager.set_namespace('')
     success, user = CompanyUser.create_user(login, **values)
     self.redirect('/company/user/list')
コード例 #3
0
ファイル: base.py プロジェクト: lopatinsky/automation-gae
 def user(self):
     current_namespace = namespace_manager.get_namespace()
     namespace_manager.set_namespace('')
     logging.info(self.request.cookies)
     user_dict = self.auth.get_user_by_session()
     namespace_manager.set_namespace(current_namespace)
     if user_dict is None:
         return None
     return CompanyUser.get_by_id(user_dict["user_id"])
コード例 #4
0
ファイル: users.py プロジェクト: lopatinsky/automation-gae
 def get(self):
     namespace_manager.set_namespace('')
     user_id = self.request.get_range('user_id')
     user = CompanyUser.get_by_id(user_id)
     rights = []
     for right in CompanyUser.ALL_RIGHTS_BITS:
         rights.append({
             'name': MAP_RIGHTS[right],
             'value': right
         })
     self.render('/user/edit.html', rights=rights, cur_user=user)
コード例 #5
0
def register_employee():
    form_employee = subRegistrationForm()
    if form_employee.is_submitted():
        hashed_pwd = bcrypt.generate_password_hash(form_employee.password.data)
        new_employee = CompanyUser(username=form_employee.username.data.upper(), password=hashed_pwd,
                                       company_id=session['id_user'],
                                       name=form_employee.name.data.upper(), surname=form_employee.surname.data.upper(),
                                       role=form_employee.role.data,
                                       department=form_employee.department.data)
        db.session.add(new_employee)
        db.session.commit()
        return redirect('login_company_employee')
    return render_template('subregistration_company.html', form_employee=form_employee)
コード例 #6
0
ファイル: users.py プロジェクト: lopatinsky/automation-gae
    def get(self):
        namespace = namespace_manager.get_namespace()
        namespace_manager.set_namespace('')
        users = CompanyUser.query(CompanyUser.namespace == namespace).fetch()
        for user in users:
            user.rights_str = ''
            for right in CompanyUser.ALL_RIGHTS_BITS:
                if user.has_rights((right,)):
                    user.rights_str += MAP_RIGHTS[right] + ', '

        public_hostname = "demo.rbcn.mobi" if CURRENT_APP_ID == DEMO_APP_ID else "auto.rbcn.mobi"
        login_url = "http://%s/company/login" % public_hostname
        self.render('/user/list.html', users=users, login_url=login_url)
コード例 #7
0
 def post(self):
     if self.user is not None:
         self.success()
     login, password, password2 = \
         self.request.get("email").strip().lower(), \
         self.request.get("password"), self.request.get("password2")
     namespace = latinize(login)
     error = None
     for metadata_instance in metadata.get_namespaces():
         if namespace == metadata_instance:
             error = u"Введите другой email"
     if error:
         pass
     elif not login:
         error = u"Не введен email"
     elif not password:
         error = u"Не введен пароль"
     elif password != password2:
         error = u"Пароли не совпадают"
     else:
         values = {
             'namespace': namespace,
             'login': login,
             'password_raw': password,
             'rights': CompanyUser.RIGHTS_MASK_ADMIN,
         }
         success, user = CompanyUser.create_user(login, **values)
         if not success:
             error = u"Пользователь с этим email уже зарегистрирован"
         else:
             set_current_user(self.auth, user)
     if error:
         logging.info(error)
         self.render('/signup.html', email=login, error=error)
     else:
         namespace_manager.set_namespace(namespace)
         cfg = Config(id=1)
         cfg.REPORT_EMAILS = '*****@*****.**'
         cfg.put()
         DeliverySlot(name=u'Сейчас', slot_type=0, value=0).put()
         DeliverySlot(name=u'Через 5 минут', slot_type=0, value=5).put()
         DeliverySlot(name=u'Через 10 минут', slot_type=0, value=10).put()
         DeliverySlot(name=u'Через 15 минут', slot_type=0, value=15).put()
         DeliverySlot(name=u'Через 20 минут', slot_type=0, value=20).put()
         DeliverySlot(name=u'Через 25 минут', slot_type=0, value=25).put()
         DeliverySlot(name=u'Через 30 минут', slot_type=0, value=30).put()
         self.success()
コード例 #8
0
 def post(self):
     if CURRENT_APP_ID != DEMO_APP_ID:
         self.abort(403)
     login = self.request.get('login')
     password = self.request.get('password')
     try:
         user_dict = self.auth.get_user_by_password(login,
                                                    password,
                                                    save_session=False)
         user = CompanyUser.get_by_id(user_dict.get('user_id'))
         if not user:
             return self.render_error(u'Не найден пользователь')
         if not user.namespace:
             return self.render_error(u'Не найдено пространство имен')
         self.render_json({'success': True, 'namespace': user.namespace})
     except (InvalidAuthIdError, InvalidPasswordError):
         return self.render_error(u'Неверные имя или пароль')
コード例 #9
0
 def post(self):
     if self.user is not None and self.user.get_role() == CompanyUser.ROLE:
         self.success()
     login = self.request.POST.get("login").lower().strip()
     password = self.request.POST.get("password")
     try:
         user_dict = self.auth.get_user_by_password(login, password)
     except (InvalidAuthIdError, InvalidPasswordError):
         self.render('/login.html',
                     login=login,
                     error=u"Неверный логин или пароль")
     else:
         user = CompanyUser.get_by_id(user_dict["user_id"])
         if user.get_role() != CompanyUser.ROLE:
             self.render('/login.html',
                         login=login,
                         error=u"Неверный логин или пароль")
         else:
             self.success()
コード例 #10
0
    def post(self):
        data = json.loads(self.request.body)
        name, phone, email = map(data['info'].get, ('name', 'phone', 'email'))
        phone = '7' + ''.join(c for c in phone if '0' <= c <= '9')

        namespace = self._find_namespace(name)
        password = "******" % random.randint(0, 10000)
        CompanyUser.create_user(namespace,
                                namespace=namespace,
                                password_raw=password,
                                login=namespace,
                                rights=CompanyUser.RIGHTS_MASK_ADMIN)

        namespace_manager.set_namespace(namespace)
        cfg = Config(id=1)
        cfg.APP_NAME = name
        cfg.DELIVERY_PHONES = [phone]
        cfg.DELIVERY_EMAILS = ['*****@*****.**', email]
        cfg.SUPPORT_EMAILS = [email]
        cfg.ACTION_COLOR = "FF25B8CD"
        cfg.put()

        delivery_slot_keys = [
            DeliverySlot(name=u'Сейчас', slot_type=0, value=0).put(),
            DeliverySlot(name=u'Через 5 минут', slot_type=0, value=5).put(),
            DeliverySlot(name=u'Через 10 минут', slot_type=0, value=10).put(),
            DeliverySlot(name=u'Через 15 минут', slot_type=0, value=15).put(),
            DeliverySlot(name=u'Через 20 минут', slot_type=0, value=20).put(),
            DeliverySlot(name=u'Через 25 минут', slot_type=0, value=25).put(),
            DeliverySlot(name=u'Через 30 минут', slot_type=0, value=30).put()
        ]

        menu = data['menu']
        init = MenuCategory(category=None, title="Init")
        init.put()
        for i, category_dict in enumerate(menu):
            MenuCategory.generate_category_sequence_number(
            )  # only to increase counter
            category = MenuCategory(title=category_dict["title"],
                                    sequence_number=i,
                                    category=init.key)
            category.put()
            for j, item in enumerate(category_dict["items"]):
                MenuItem(category=category.key,
                         title=item["title"],
                         description=item["description"],
                         picture=item["imageUrl"],
                         price=int(round(float(item["price"]) * 100)),
                         sequence_number=j).put()
            for _ in category.get_items():
                category.generate_sequence_number()  # only to increase counter

        venue_dict = data['venue']
        venue = Venue(title=venue_dict['title'],
                      description=venue_dict['address'],
                      coordinates=ndb.GeoPt(venue_dict['lat'],
                                            venue_dict['lng']),
                      active=True)
        venue.update_address()
        venue.schedule = Schedule(days=[
            DaySchedule(
                weekday=i, start=datetime.time(0, 0), end=datetime.time(0, 0))
            for i in xrange(1, 8)
        ])

        for delivery_type in (SELF, IN_CAFE):
            delivery = DeliveryType.create(delivery_type)
            delivery.put()
            delivery.status = STATUS_AVAILABLE
            delivery.max_time = DAY_SECONDS + HOUR_SECONDS  # need hour to order on tomorrow
            delivery.delivery_slots = delivery_slot_keys
            venue.delivery_types.append(delivery)

        venue.put()

        PaymentType(id=str(CASH_PAYMENT_TYPE),
                    title="cash",
                    status=STATUS_AVAILABLE).put()

        deferred.defer(_notify_sms, phone, namespace, password)
        deferred.defer(_notify_email, email, phone, name, namespace, password)

        self.render_json({'login': namespace, 'password': password})