예제 #1
0
def get_available_apps_for_customer(customer, demo_only=False):
    if not customer:
        return []
    app_ids = (a for a in customer.sorted_app_ids
               if a != App.APP_ID_OSA_LOYALTY)
    available_apps = list(App.get(map(App.create_key, app_ids)))
    azzert(all(available_apps))
    if available_apps[0].orderable_app_ids:
        extra_app_ids = set(available_apps[0].orderable_app_ids).difference(
            customer.sorted_app_ids)
        if extra_app_ids:
            available_apps += App.get(map(App.create_key, extra_app_ids))
    if demo_only:
        available_apps = filter(lambda x: x.demo, available_apps)
    available_apps.sort(key=lambda app: app.name.upper())
    return available_apps
예제 #2
0
        def trans():
            beacon = Beacon.all().ancestor(parent_key(si.service_user)).get()
            if beacon:
                return beacon.uuid, beacon.name
            app = App.get(App.create_key(si.app_id))
            app.beacon_last_minor = app.beacon_last_minor + 1
            name = "%s|%s" % (app.beacon_major, app.beacon_last_minor)
            logging.info("add_new_beacon: %s", name)
            if not add_new_beacon(app.beacon_uuid, name, u'Autoconnect',
                                  si.service_identity_user):
                raise Exception("Beacon already exists")

            app.put()
            return app.beacon_uuid, name
예제 #3
0
    def trans(old_default_app_key):
        new_default_app = get_app_by_id(app_id)
        if new_default_app.key() == old_default_app_key:
            return

        new_default_app.is_default = True

        if old_default_app_key:
            old_default_app = App.get(old_default_app_key)
            old_default_app.is_default = False
            put_and_invalidate_cache(new_default_app, old_default_app)
            on_trans_committed(logging.info, "Default app updated from %s (%s) to %s (%s)", old_default_app.app_id,
                               old_default_app.name, new_default_app.app_id, new_default_app.name)
        else:
            put_and_invalidate_cache(new_default_app)
예제 #4
0
 def get(self, app_id):
     template = JINJA_ENVIRONMENT.get_template('app_translations.html')
     js_template = JINJA_ENVIRONMENT.get_template('app_translations_part.html').render()
     app = App.get(App.create_key(app_id))
     if not app:
         self.response.out.write('app %s does not exist' % app_id)
         return
     app_translations_key = AppTranslations.create_key(app_id)
     translations = AppTranslations.get_or_insert(app_translations_key.name(), parent=app_translations_key.parent())
     parameters = {
         'templates': json.dumps({'app_translations_part': js_template}),
         'translations': json.dumps(
             zlib.decompress(translations.translations) if translations.translations else None),
         'app': json.dumps(serialize_complex_value(AppTO.fromModel(app), AppTO, False))
     }
     self.response.out.write(template.render(parameters))
예제 #5
0
 def trans(create_app_to):
     app_key = App.create_key(create_app_to.app_id)
     if App.get(app_key):
         raise DuplicateAppIdException(create_app_to.app_id)
     app = App(
         key=app_key,
         type=data.type,
         name=create_app_to.name,
         is_default=False,
         android_app_id=u'com.mobicage.rogerthat.%s' % create_app_to.app_id.replace('-', '.'),
         dashboard_email_address=data.dashboard_email_address,
         creation_time=now(),
     )
     app_settings = AppSettings(key=AppSettings.create_key(app.app_id),
                                background_fetch_timestamps=[21600] if app.type == App.APP_TYPE_CITY_APP else [])
     db.put((app, app_settings))
     return app
    def setup_qr_templates(self, app_id):
        app = App.get(App.create_key(app_id))
        app.qrtemplate_keys = list()

        description = u"DEFAULT"
        key_name = create_qr_template_key_name(app_id, description)
        store_template(None, DEFAULT_QR_CODE_OVERLAY, description, u"".join(("%X" % c).rjust(2, '0')
                                                                            for c in DEFAULT_QR_CODE_COLOR), key_name)
        app.qrtemplate_keys.append(key_name)

        description = u"HAND"
        key_name = create_qr_template_key_name(app_id, description)
        store_template(None, HAND_ONLY_QR_CODE_OVERLAY, description, u"".join(("%X" % c).rjust(2, '0')
                                                                              for c in DEFAULT_QR_CODE_COLOR), key_name)
        app.qrtemplate_keys.append(key_name)

        put_and_invalidate_cache(app)
예제 #7
0
 def trans():
     app = App.get(App.create_key(app_id))
     if not app:
         raise AppDoesNotExistException(app_id)
     return app
예제 #8
0
    def fromServiceIdentity(service_identity, service_profile):
        identifier = get_identity_from_service_identity_user(service_identity.user)
        if identifier == ServiceIdentity.DEFAULT:
            azzert(service_identity.inheritanceFlags == 0,
                   "inheritanceFlags of default must be 0, not %s" % service_identity.inheritanceFlags)

        details = ServiceIdentitySummaryTO.fromServiceIdentity(service_identity, ServiceIdentityDetailsTO())

        details.description_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_DESCRIPTION,
                                                      service_identity.inheritanceFlags)
        details.description = service_identity.description

        details.description_branding_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_DESCRIPTION_BRANDING,
                                                               service_identity.inheritanceFlags)
        details.description_branding = service_identity.descriptionBranding

        details.menu_branding_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_MENU_BRANDING,
                                                        service_identity.inheritanceFlags)

        details.phone_number_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_PHONE_NUMBER,
                                                       service_identity.inheritanceFlags)
        details.phone_number = service_identity.mainPhoneNumber

        details.phone_call_popup_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_PHONE_POPUP_TEXT,
                                                           service_identity.inheritanceFlags)
        details.phone_call_popup = service_identity.callMenuItemConfirmation

        details.recommend_enabled = bool(service_identity.shareEnabled)

        details.admin_emails = list() if service_identity.metaData is None else [e.strip() for e in service_identity.metaData.split(',') if e.strip()]

        if service_identity.serviceData:
            service_data = service_identity.serviceData.to_json_dict()
            details.app_data = json.dumps(service_data).decode('utf-8') if service_data else None
        else:
            details.app_data = service_identity.appData

        details.search_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_SEARCH_CONFIG,
                                                 service_identity.inheritanceFlags)
        sc, locs = get_search_config(service_identity.user)
        details.search_config = SearchConfigTO.fromDBSearchConfig(sc, locs)

        details.qualified_identifier = service_identity.qualifiedIdentifier

        details.email_statistics_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_EMAIL_STATISTICS,
                                                           service_identity.inheritanceFlags)
        details.email_statistics = service_identity.emailStatistics

        details.beacons = map(BeaconTO.fromModel, get_beacons(service_identity.service_user, identifier))

        details.app_ids_use_default = is_flag_set(ServiceIdentity.FLAG_INHERIT_APP_IDS,
                                                  service_identity.inheritanceFlags)
        details.app_ids = list()
        details.app_names = list()
        from rogerthat.models import App
        for app in App.get(map(App.create_key, service_identity.appIds)):
            if app:
                details.app_ids.append(app.app_id)
                details.app_names.append(app.name)
        details.can_edit_supported_apps = service_profile.canEditSupportedApps
        details.beacon_auto_invite = service_identity.beacon_auto_invite
        details.content_branding_hash = service_identity.contentBrandingHash
        return details
예제 #9
0
def get_app_by_id(app_id):
    return App.get(App.create_key(app_id))