aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-02-23 12:03:18 +0200
committerRoy <roy.mail.net@gmail.com>2018-02-23 12:03:18 +0200
commitfadf83a50071ffba21db05eceff10c51c18f5fb3 (patch)
tree9a568aae8d298bfbc2135afaff0b91f9de711793
parent042b4d3e7b0af729792ca20e086756c36d2f5768 (diff)
downloadTango-fadf83a50071ffba21db05eceff10c51c18f5fb3.tar.gz
Tango-fadf83a50071ffba21db05eceff10c51c18f5fb3.zip
Machine Studio Update & Publish.
Improved user roles & permissions structure. Added permission for version publish.
-rw-r--r--Software/DB/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/Tango_log.ldfbin8388608 -> 8388608 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/DataCaptureModule.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/StubsModule.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindow.xaml22
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs10
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs7
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/MachineStudioUpdateService.svc.cs6
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Tango.MachineStudio.UpdateService.csproj4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Web.Release.config2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Updater/MainWindow.xaml.cs5
-rw-r--r--Software/Visual_Studio/Tango.CodeGeneration/Templates/ObservablesContextCodeFile.cshtml29
-rw-r--r--Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Permissions.cs24
-rw-r--r--Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Roles.cs20
-rw-r--r--Software/Visual_Studio/Tango.Integration/Observables/ObservablesContext.cs34
-rw-r--r--Software/Visual_Studio/Tango.Integration/Observables/ObservablesContextExtension.cs48
-rw-r--r--Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj1
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj6
-rw-r--r--Software/Visual_Studio/Tango.Settings/MachineStudioSettings/MachineStudio.cs2
-rw-r--r--Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml1
21 files changed, 140 insertions, 89 deletions
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf
index 9f4b4ca30..2535145b6 100644
--- a/Software/DB/Tango.mdf
+++ b/Software/DB/Tango.mdf
Binary files differ
diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf
index 81e9f8578..24e3fbc9c 100644
--- a/Software/DB/Tango_log.ldf
+++ b/Software/DB/Tango_log.ldf
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/DataCaptureModule.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/DataCaptureModule.cs
index ee650dc13..b138af4f3 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/DataCaptureModule.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.DataCapture/DataCaptureModule.cs
@@ -69,7 +69,7 @@ namespace Tango.MachineStudio.DataCapture
{
get
{
- return Permissions.RunTechnicianModule;
+ return Permissions.RunDataCaptureModule;
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/StubsModule.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/StubsModule.cs
index 817c68b49..4dd0bdff1 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/StubsModule.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Stubs/StubsModule.cs
@@ -41,7 +41,7 @@ namespace Tango.MachineStudio.Stubs
/// <summary>
/// Gets the permission required to see and load this module.
/// </summary>
- public override Permissions Permission => Permissions.RunSynchronizationModule;
+ public override Permissions Permission => Permissions.RunStubsModule;
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindow.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindow.xaml
index 9f592ca6d..ab7e503ff 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindow.xaml
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindow.xaml
@@ -26,28 +26,28 @@
<Grid Grid.Row="1" Margin="10">
<DockPanel>
- <StackPanel DockPanel.Dock="Top" HorizontalAlignment="Center" Margin="0 20 0 0" x:Name="stackDetails">
- <TextBlock FontSize="16" HorizontalAlignment="Center">
- <Run>Latest Version:</Run>
+ <StackPanel DockPanel.Dock="Top" HorizontalAlignment="Left" Margin="0 20 0 0" x:Name="stackDetails">
+ <TextBlock FontSize="16">
+ <Run>Remote Version:</Run>
<Run Text="{Binding LatestVersion}" FontStyle="Italic" FontWeight="SemiBold"></Run>
</TextBlock>
- <TextBlock Margin="0 10 0 0" FontSize="16" HorizontalAlignment="Center">
- <Run>Current Version:</Run>
+ <TextBlock Margin="0 10 0 0" FontSize="16" >
+ <Run>Local Version:</Run>
<Run Text="{Binding CurrentVersion}" FontStyle="Italic" FontWeight="SemiBold"></Run>
</TextBlock>
- <StackPanel Margin="0 10 0 0" Orientation="Horizontal" HorizontalAlignment="Center">
+ <StackPanel Margin="0 20 0 0" Orientation="Horizontal" >
<TextBlock FontSize="16">Email:</TextBlock>
- <TextBox Margin="5 0 0 0" Width="200" BorderThickness="0 0 0 1" Text="{Binding Email,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+ <TextBox Margin="5 0 0 0" Width="230" BorderThickness="0 0 0 1" Text="{Binding Email,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
- <StackPanel Margin="0 10 0 0" Orientation="Horizontal" HorizontalAlignment="Center">
+ <StackPanel Margin="0 10 0 0" Orientation="Horizontal">
<TextBlock FontSize="16">Password:</TextBlock>
- <TextBox Margin="5 0 0 0" Width="230" BorderThickness="0 0 0 1" Text="{Binding Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+ <TextBox Margin="5 0 0 0" Width="200" BorderThickness="0 0 0 1" Text="{Binding Password,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
- <TextBlock FontSize="16" HorizontalAlignment="Center" Margin="0 20 0 0">Comments</TextBlock>
- <TextBox Height="70" Margin="0 5 0 0" AcceptsReturn="True" TextWrapping="Wrap" Text="{Binding Comments,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
+ <TextBlock FontSize="16" Margin="0 20 0 0">Comments</TextBlock>
+ <TextBox Height="70" Margin="0 5 0 0" Width="500" AcceptsReturn="True" TextWrapping="Wrap" Text="{Binding Comments,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"></TextBox>
</StackPanel>
<Grid DockPanel.Dock="Bottom">
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
index 2ceb36994..34d2f1b1f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
@@ -12,6 +12,7 @@ using System.Threading.Tasks;
using System.Windows;
using Tango.Core.Commands;
using Tango.Core.Cryptography;
+using Tango.Core.Helpers;
using Tango.MachineStudio.Common.Update;
using Tango.Settings;
using Tango.SharedUI;
@@ -121,6 +122,7 @@ namespace Tango.MachineStudio.Publisher
Task.Factory.StartNew(() =>
{
IsUpdating = true;
+ String tempFile = String.Empty;
try
{
@@ -132,7 +134,7 @@ namespace Tango.MachineStudio.Publisher
Comments = Comments,
});
- String tempFile = Path.Combine(Path.GetTempPath(), response.FileName);
+ tempFile = Path.Combine(Path.GetTempPath(), response.FileName);
using (ZipFile zip = new ZipFile())
{
@@ -174,6 +176,11 @@ namespace Tango.MachineStudio.Publisher
}
}
+ _client.NotifyUploadCompleted(new UploadCompletedRequest()
+ {
+ Token = response.Token,
+ });
+
UpdateVersions();
}
catch (Exception ex)
@@ -183,6 +190,7 @@ namespace Tango.MachineStudio.Publisher
finally
{
IsUpdating = false;
+ PathHelper.TryDeleteFile(tempFile);
}
});
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
index 82aba268d..110e4d148 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
@@ -50,7 +50,12 @@ namespace Tango.MachineStudio.UI.Authentication
if (user == null)
{
- throw new AuthenticationException("Login failed for user " + email);
+ throw new AuthenticationException("Invalid credentials for " + email);
+ }
+
+ if (!user.HasPermission(Permissions.RunMachineStudio))
+ {
+ throw new AuthenticationException("It seems like you do not have sufficient privileges to run Machine Studio. Please contact your administrator.");
}
CurrentUser = user;
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
index 61ea92566..4cfa99a9b 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
@@ -363,6 +363,10 @@
<Project>{cb0b0aa2-bb24-4bca-a720-45e397684e12}</Project>
<Name>Tango.MachineStudio.Common</Name>
</ProjectReference>
+ <ProjectReference Include="..\Tango.MachineStudio.Updater\Tango.MachineStudio.Updater.csproj">
+ <Project>{844787ce-f409-4f18-bccc-f3809ecb86f3}</Project>
+ <Name>Tango.MachineStudio.Updater</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Images\design.png" />
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/MachineStudioUpdateService.svc.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/MachineStudioUpdateService.svc.cs
index e573a0d77..bf737c7a9 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/MachineStudioUpdateService.svc.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/MachineStudioUpdateService.svc.cs
@@ -31,7 +31,7 @@ namespace Tango.MachineStudio.UpdateService
private static List<PendingUpload> _pendingUploads;
- MachineStudioUpdateService()
+ static MachineStudioUpdateService()
{
_pendingUploads = new List<PendingUpload>();
}
@@ -50,7 +50,7 @@ namespace Tango.MachineStudio.UpdateService
var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password);
- if (user != null)
+ if (user != null && user.HasPermission(Permissions.RunMachineStudio))
{
var latestVersion = db.MachineStudioVersions.FirstOrDefault();
Version currentVersion = Version.Parse(request.Version);
@@ -93,7 +93,7 @@ namespace Tango.MachineStudio.UpdateService
var user = db.Users.SingleOrDefault(x => x.Email.ToLower() == request.Email.ToLower() && x.Password == request.Password);
- if (user != null)
+ if (user != null && user.HasPermission(Permissions.PublishMachineStudioVersion))
{
var latestVersion = db.MachineStudioVersions.FirstOrDefault();
Version currentVersion = Version.Parse(request.Version);
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Tango.MachineStudio.UpdateService.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Tango.MachineStudio.UpdateService.csproj
index c9400b2d1..0b4d78195 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Tango.MachineStudio.UpdateService.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Tango.MachineStudio.UpdateService.csproj
@@ -26,7 +26,7 @@
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
- <OutputPath>..\..\Build\Debug\Web\Machine Studio Update Service\</OutputPath>
+ <OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
@@ -118,7 +118,7 @@
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
- <UseIIS>True</UseIIS>
+ <UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>65206</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Web.Release.config b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Web.Release.config
index da6e960b8..d2da57796 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Web.Release.config
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UpdateService/Web.Release.config
@@ -15,7 +15,7 @@
</connectionStrings>
-->
<system.web>
- <compilation xdt:Transform="RemoveAttributes(debug)" />
+ <!--<compilation xdt:Transform="RemoveAttributes(debug)" />-->
<!--
In the example below, the "Replace" transform will replace the entire
<customErrors> section of your web.config file.
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Updater/MainWindow.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Updater/MainWindow.xaml.cs
index e0e9e7f0d..a0c6928d2 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Updater/MainWindow.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Updater/MainWindow.xaml.cs
@@ -99,7 +99,10 @@ namespace Tango.MachineStudio.Updater
}
catch (Exception ex)
{
- ShowError("Could not create file " + Path.GetFileName(newPath) + Environment.NewLine + ex.Message);
+ if (!newPath.ToLower().Contains("updater.exe"))
+ {
+ ShowError("Could not create file " + Path.GetFileName(newPath) + Environment.NewLine + ex.Message);
+ }
}
}
}
diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Templates/ObservablesContextCodeFile.cshtml b/Software/Visual_Studio/Tango.CodeGeneration/Templates/ObservablesContextCodeFile.cshtml
index 2094c0999..d2494c1bd 100644
--- a/Software/Visual_Studio/Tango.CodeGeneration/Templates/ObservablesContextCodeFile.cshtml
+++ b/Software/Visual_Studio/Tango.CodeGeneration/Templates/ObservablesContextCodeFile.cshtml
@@ -8,7 +8,7 @@ using Tango.Settings;
namespace Tango.Integration.Observables
{
- public class ObservablesContext : DbContext
+ public partial class ObservablesContext : DbContext
{
/// <summary>
/// Initializes a new instance of the <see cref="ObservablesContext" /> class.
@@ -20,33 +20,6 @@ namespace Tango.Integration.Observables
}
- /// <summary>
- /// Composes the connection string.
- ///</summary>
- /// <param name="source">The source.</param>
- /// <param name="isFile">if set to <c>true</c> [is file].</param>
- /// <returns></returns>
- private static String ComposeConnectionString(String source, bool isFile)
- {
- if (!isFile)
- {
- return String.Format("Data Source={0};Initial Catalog=Tango;Integrated Security=true", source);
- }
- else
- {
- return null;
- }
- }
-
- /// <summary>
- /// Creates a default remote database context by the address specified in <see cref="SettingsManager.Default.DataBase.SQLServerAddress" />.
- /// </summary>
- /// <returns></returns>
- public static ObservablesContext CreateDefault()
- {
- return new ObservablesContext(SettingsManager.Default.DataBase.SQLServerAddress, false);
- }
-
@foreach (var prop in Model.Properties)
{
<div>
diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Permissions.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Permissions.cs
index 39014b04b..f022294fc 100644
--- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Permissions.cs
+++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Permissions.cs
@@ -39,5 +39,29 @@ namespace Tango.Integration.Observables
[Description("Allows loading the machine designer module in Machine Studio")]
RunMachineDesignerModule = 4,
+ /// <summary>
+ /// (Allows loading the data capture module in Machine Studio)
+ /// </summary>
+ [Description("Allows loading the data capture module in Machine Studio")]
+ RunDataCaptureModule = 5,
+
+ /// <summary>
+ /// (Allows the execution of Machine Studio)
+ /// </summary>
+ [Description("Allows the execution of Machine Studio")]
+ RunMachineStudio = 6,
+
+ /// <summary>
+ /// (Allows publishing of new Machine Studio release version to the Machine Studio Service.)
+ /// </summary>
+ [Description("Allows publishing of new Machine Studio release version to the Machine Studio Service.")]
+ PublishMachineStudioVersion = 7,
+
+ /// <summary>
+ /// (Allows loading the stubs module in machine studio)
+ /// </summary>
+ [Description("Allows loading the stubs module in machine studio")]
+ RunStubsModule = 8,
+
}
}
diff --git a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Roles.cs b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Roles.cs
index 9e81889ae..a454bc71f 100644
--- a/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Roles.cs
+++ b/Software/Visual_Studio/Tango.Integration/Observables/Enumerations/Roles.cs
@@ -31,13 +31,25 @@ namespace Tango.Integration.Observables
/// (Twine Research and development)
/// </summary>
[Description("Twine Research and development")]
- Developer = 3,
+ MachineDeveloper = 3,
/// <summary>
- /// (Role Description)
+ /// (Publish new Machine Studio Versions)
/// </summary>
- [Description("Role Description")]
- SomeRole = 4,
+ [Description("Publish new Machine Studio Versions")]
+ MachineStudioPublisher = 4,
+
+ /// <summary>
+ /// (Machine Studio Software Developer)
+ /// </summary>
+ [Description("Machine Studio Software Developer")]
+ MachineStudioDeveloper = 5,
+
+ /// <summary>
+ /// (Twine Software Developer)
+ /// </summary>
+ [Description("Twine Software Developer")]
+ SoftwareDeveloper = 6,
}
}
diff --git a/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContext.cs b/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContext.cs
index 37830081d..99ce25d75 100644
--- a/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContext.cs
+++ b/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContext.cs
@@ -8,7 +8,7 @@ using Tango.Settings;
namespace Tango.Integration.Observables
{
- public class ObservablesContext : DbContext
+ public partial class ObservablesContext : DbContext
{
/// <summary>
/// Initializes a new instance of the <see cref="ObservablesContext" /> class.
@@ -21,38 +21,6 @@ namespace Tango.Integration.Observables
}
/// <summary>
- /// Composes the connection string.
- ///</summary>
- /// <param name="source">The source.</param>
- /// <param name="isFile">if set to <c>true</c> [is file].</param>
- /// <returns></returns>
- private static String ComposeConnectionString(String source, bool isFile)
- {
- if (!isFile)
- {
- return String.Format("Data Source={0};Initial Catalog=Tango;User Id=Developer;Password=1111;", source);
- }
- else
- {
- return null;
- }
- }
-
- /// <summary>
- /// Creates a default remote database context by the address specified in <see cref="SettingsManager.Default.DataBase.SQLServerAddress" />.
- /// </summary>
- /// <returns></returns>
- public static ObservablesContext CreateDefault()
- {
- return new ObservablesContext(SettingsManager.Default.DataBase.SQLServerAddress, false);
- }
-
- public static ObservablesContext CreateDefaultForWeb()
- {
- return new ObservablesContext("localhost\\SQLEXPRESS", false);
- }
-
- /// <summary>
/// Gets or sets the ActionTypes.
/// </summary>
public DbSet<ActionType> ActionTypes
diff --git a/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContextExtension.cs b/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContextExtension.cs
new file mode 100644
index 000000000..e6618eae2
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Integration/Observables/ObservablesContextExtension.cs
@@ -0,0 +1,48 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Settings;
+
+namespace Tango.Integration.Observables
+{
+ public partial class ObservablesContext
+ {
+ /// <summary>
+ /// Composes the connection string.
+ ///</summary>
+ /// <param name="source">The source.</param>
+ /// <param name="isFile">if set to <c>true</c> [is file].</param>
+ /// <returns></returns>
+ private static String ComposeConnectionString(String source, bool isFile)
+ {
+ if (!isFile)
+ {
+ return String.Format("Data Source={0};Initial Catalog=Tango;User Id=Developer;Password=1111;", source);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /// <summary>
+ /// Creates a default remote database context by the address specified in <see cref="SettingsManager.Default.DataBase.SQLServerAddress" />.
+ /// </summary>
+ /// <returns></returns>
+ public static ObservablesContext CreateDefault()
+ {
+ return new ObservablesContext(SettingsManager.Default.DataBase.SQLServerAddress, false);
+ }
+
+ /// <summary>
+ /// Creates a default remote database context by the address specified in <see cref="SettingsManager.Default.DataBase.SQLServerAddress" />.
+ /// </summary>
+ /// <returns></returns>
+ public static ObservablesContext CreateDefaultForWeb()
+ {
+ return new ObservablesContext("localhost\\SQLEXPRESS", false);
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
index 3f4d2056b..18213e722 100644
--- a/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
+++ b/Software/Visual_Studio/Tango.Integration/Tango.Integration.csproj
@@ -172,6 +172,7 @@
<Compile Include="Observables\IObservableEntity.cs" />
<Compile Include="Observables\ObservableEntity.cs" />
<Compile Include="Observables\ObservablesContext.cs" />
+ <Compile Include="Observables\ObservablesContextExtension.cs" />
<Compile Include="Observables\ObservablesEntitiesAdapter.cs" />
<Compile Include="Observables\ObservablesEntitiesAdapterExtension.cs" />
<Compile Include="Observables\Partials\Cat.cs" />
diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
index 9e1f2dd76..45f1f06a3 100644
--- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
+++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj
@@ -119,6 +119,12 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Utilities\Tango.Protobuf.CLI\Tango.Protobuf.CLI.csproj">
+ <Project>{de5ab980-a9ad-4273-8272-c4e1e062e3ec}</Project>
+ <Name>Tango.Protobuf.CLI</Name>
+ </ProjectReference>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>"$(TargetDir)proto-tc.exe" -i "$(SolutionDir)..\PMR\Messages" -o "$(SolutionDir)Tango.PMR" -l CSharp</PreBuildEvent>
diff --git a/Software/Visual_Studio/Tango.Settings/MachineStudioSettings/MachineStudio.cs b/Software/Visual_Studio/Tango.Settings/MachineStudioSettings/MachineStudio.cs
index 111c959f7..bfec7af3f 100644
--- a/Software/Visual_Studio/Tango.Settings/MachineStudioSettings/MachineStudio.cs
+++ b/Software/Visual_Studio/Tango.Settings/MachineStudioSettings/MachineStudio.cs
@@ -74,7 +74,7 @@ namespace Tango.Settings.MachineStudioSettings
StubsModule = new StubsModule();
TechnicianModule = new TechnicianModule();
DeveloperModule = new DeveloperModule();
- UpdateServiceAddress = "http://localhost/MachineStudioUpdateService/MachineStudioUpdateService.svc";
+ UpdateServiceAddress = "http://localhost:65206/MachineStudioUpdateService.svc";
}
}
}
diff --git a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml
index 3d0a14c4e..665a8b644 100644
--- a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml
+++ b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml
@@ -6,7 +6,6 @@
xmlns:local="clr-namespace:Tango.UITests"
xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
xmlns:common="clr-namespace:Tango.MachineStudio.Common.Controls;assembly=Tango.MachineStudio.Common"
- xmlns:developer="clr-namespace:Tango.MachineStudio.Developer.Controls;assembly=Tango.MachineStudio.Developer"
xmlns:tech="clr-namespace:Tango.MachineStudio.Technician.Views;assembly=Tango.MachineStudio.Technician"
xmlns:visuals="clr-namespace:Tango.Visuals;assembly=Tango.Visuals"
xmlns:editors="clr-namespace:Tango.Editors;assembly=Tango.Editors"